Почему он замедляется при записи видео с помощью VideoFileWriter? - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь понять, почему видео замедляется при записи темы с помощью VideoFileWriter в Visual Basi c. Я получаю потоковое видео с IP-камеры, URL-адрес которой загружен в MJPEGStream. То есть, если я записываю реальную минуту видео, оно растягивается и замедляется и, следовательно, длится более минуты.

В Load_Form я инициализирую свой MJPEGStream с URL-адресом

stream = New MJPEGStream("http://80.79.1.60/axis-cgi/mjpg/video.cgi")

AddHandler stream.NewFrame, New NewFrameEventHandler(AddressOf video_NuevoFrame1)

Затем У меня есть NewFrameEventHandler

Private Sub video_NuevoFrame1(sender As Object, eventArgs As NewFrameEventArgs)
    Try
        PictureBox1.Image = Nothing
        If grabando = True Then  'Check if the status is in "recording"
            btm = DirectCast(eventArgs.Frame.Clone(), Bitmap)
            PictureBox1.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)
            writer.WriteVideoFrame(btm)
        Else
            btm = DirectCast(eventArgs.Frame.Clone(), Bitmap)
            PictureBox1.Image = DirectCast(eventArgs.Frame.Clone(), Bitmap)
        End If
    Catch ex As Exception
        PictureBox1.Image = Nothing
    End Try
End Sub

На кнопке я запускаю MJPEGStream

Еще один батен используется для записи

Private Sub btnGrabar_Click(sender As Object, e As EventArgs) Handles btnGrabar.Click
    If btnGrabar.BackColor = Color.Black Then 'Not recording
        hilo = New Threading.Thread(AddressOf grabadora)
        hilo.Start()
    Else
        hilo.Interrupt()
        grabando = False
        btnGrabar.BackColor = Color.Black ' ESTA GRABANDO
        writer.Close() 'DEJA DE GUARDAR DATOS
    End If
End Sub

Запускает поток для записи

Private Sub grabadora()
    Dim ANCHO As Integer = 320 'DEFINE EL ANCHO DEL FOTOGRAMA
    Dim ALTO As Integer = 240 ' DEFINE EL ALTO DEL FOTOGRAMA

    Try
        While True
            Dim cadena As String = "example.mp4" 'I have more code to create an automatic name
            writer.Open(cadena, ANCHO, ALTO)
            writer.WriteVideoFrame(btm) 'Start recording
            grabando = True
            btnGrabar.BackColor = Color.Red 'To know that is recording
            System.Threading.Thread.Sleep(1800000)
            writer.Close() 'will record as long as the thread is not interrupted in videos of 30'
        End While
    Catch ex As Exception
    End Try
End Sub

Как видно на следующих изображениях, видео должно было длиться одну минуту, но оно длится минуту и ​​десять секунд.

Видео начинается в 09: 48: 00

The video starts at 09:48:00

Видео заканчивается в 09:48:59, но видео на 10 секунд длиннее

The video finishes at 09:48:59 but the video it's 10 seconds longer

Пожалуйста, помогите мне, я не Я не понимаю, почему это так странно работает, и спасибо за ваше внимание.

...