Помогите с ffmpeg

Теперь я могу прочитать последнюю строку из процессов FFmpeg, выполняемых в окне cmd. с этим источником, используя ссылку на объект модели хоста сценариев.

Private Sub Command1_Click()
    Dim oExec       As WshExec
    Dim sRow        As String

    With New WshShell
        Set oExec = .Exec("ffmpeg.exe")
    End With
    Do While oExec.Status = WshRunning
        sRow = oExec.StdOut.ReadLine
    Loop
End Sub

Эта строка такая. это последняя строка в окне cmd (внизу).

frame= 2816 fps=667 q=11.0 Lsize= 13036kB time=187.66 bitrate= 569.1kbits/s

Я вырезал часть времени, чтобы добавить индикатор выполнения в моем приложении vb 6.0. Но в процессе cmd существует значение 13, которое выравнивает это значение, называемое общей продолжительностью. Но я не могу прочитать эту строку, у кого-то есть код или идея прочитать эту строку, на 13 строк выше последней строки окна cmd из ffmpeg ...


person Geovanny1974    schedule 20.01.2010    source источник
comment
Я прочитал все, но ничего не понял. Я думал, что да, но не сделал. Странный.   -  person Aiden Bell    schedule 20.01.2010
comment
Это связано с программированием, дети. Уберите палец с кнопки закрытия и прочтите вопрос. Да, это сложно ... У Ramses1974 не очень хороший английский, но это не оправдание твоей лени.   -  person Stu Thompson    schedule 21.01.2010


Ответы (1)


Я сам сделал это на Java. Я думаю, проблема в том, что строки обновления статуса (как вы цитируете выше с подстрокой time=) заканчиваются CR (возврат каретки), а не LF (перевод строки). Моя интуиция говорит, что ReadLine ищет полный CRLF. Итак, для этого вам потребуется:

  • понять разницу между CR, LF и CRLF, и какой код ASCII каждый
  • читать в выходном потоке символ за символом, создавая строку с завершением CR, а затем анализировать ее на токены time= и Durration=

Было бы полезно и вам, и нам, если бы в вашем коде были отладочные операторы печати и вы показали нам результат.

person Stu Thompson    schedule 21.01.2010