Итак, я сейчас работаю над программой LAN-Video-Streaming, которая записывает одиночные изображения и отправляет их. Поскольку было бы слишком много для отправки 30 1920x1080 снимков в секунду, чтобы получить 30FPS, я провел некоторое исследование и нашел JPEG-компрессию. Проблема заключается в том, что, когда я пытаюсь сохранить сжатый JPEG, он бросает System.Runtime.InteropServices.ExternalException
, с дополнительной информацией: General error in GDI+.
JPEG Сжатие вызывает GDI + Exception
Вот мой код:
Private Sub Stream() Handles StreamTimer.Tick
If Streaming = True Then
Try
ScreenCap = New Bitmap(Bounds.Width, Bounds.Height)
GFX = Graphics.FromImage(ScreenCap)
GFX.CopyFromScreen(0, 0, 0, 0, ScreenCap.Size)
Dim Frame As New Bitmap(ScreenCap, Resolution.Split(";")(0), Resolution.Split(";")(1))
Dim jpgEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)
Dim myEncoder As Encoder = Encoder.Quality
Dim myEncoderParameters As New EncoderParameters(1)
Dim myEncoderParameter As New EncoderParameter(myEncoder, Compression)
myEncoderParameters.Param(0) = myEncoderParameter
Frame.Save(My.Computer.FileSystem.SpecialDirectories.Temp & "\LSSFrame.jpg", jpgEncoder, myEncoderParameters) 'Error occurs in this line
Using FS As New FileStream(My.Computer.FileSystem.SpecialDirectories.Temp & "\LSSFrame.jpg", FileMode.Open)
Frame = Image.FromStream(FS)
FrameSizeStatus.Text = Math.Round(FS.Length/1000) & "KB"
FS.Close()
End Using
PreviewBox.Image = Frame
FPSStat += 1
FlushMemory()
If ViewerIPs.Count > 0 Then
For i = 0 To ViewerIPs.Count - 1
SendFrame(ViewerIPs(i), Frame)
Next
End If
Catch ex As Exception
LostFrames += 1
End Try
End If
End Sub
Любая помощь приветствуется!
Вы не владеете надлежащим образом, что может привести к этой ошибке. Проконсультируйтесь с должностями справа ** **. **. Я сомневаюсь, что вы когда-нибудь получите 30 снимков в секунду. – Plutonix
Ну, как я могу это сделать? Я знаю, как распоряжаться вещами, но ** что я должен распоряжаться? Кстати, я тестировал id, и он даже работает до 60FPS. : D –
Хорошо, спасибо. Я просмотрю его снова и исправлю свои ошибки. : D –