FFProbe не выводит результат в файл - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь извлечь длительность видео (.MP4) с помощью FFProbe и требую, чтобы результат был выведен в файл. FFProbe отлично работает и создает файл с информацией о продолжительности, когда я вхожу в него с помощью командной строки, однако, когда я помещаю тот же оператор в мою программу VB6, FFProbe не создает выходной файл ..... В чем проблема? ?

Вот оператор, который работает из командной строки:

C:\Program Files\FFMpeg\bin>ffprobe -i InputVideo.mp4 -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 > c:\temp\Output.txt

Вот фрагмент кода из моей программы, который не работает:

Dim Txt As String
Dim AppId As Long
Dim AppHnd As Long
Dim AppRet As Long

Txt = "C:\Program Files\FFMpeg\bin>ffprobe"  & _
  " -i " & """" & PhotoPathFileName & """" & _
  " -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 > 
  ""C:\temp\Output.txt"""

AppId = Shell(Txt, vbHide)
AppHnd = OpenProcess(SYNCHRONIZE, 0, AppId)
If AppHnd <> 0 Then
  AppRet = WaitForSingleObject(AppHnd, WaitInfinite)
End If

Мы добиваемся прогресса после предложения от "wqw" использовать cmd / c, теперь я перенаправляю вывод в файл, но не все время.

Это работает, потому что имя видеофайла имеет без пробелов:

cmd /k "C:\Program Files\FFMpeg\bin\ffprobe.exe" -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i \\DLINK\Volume_1\Movies\Arrow.mp4 > c:\temp\Duration.txt

Это НЕ работает:

cmd /k "C:\Program Files\FFMpeg\bin\ffprobe.exe" -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i \\DLINK\Volume_1\Movies\Generation Earth Part 1.mp4 > c:\temp\Duration.txt

Похоже, что cmd / c имеет некоторые проблемы с обработкой пробелы в имени файла, даже если я окружаю их двойными кавычками. Также имена файлов UN C не поддерживаются cmd, но ffprobe обрабатывает их в порядке. Все еще работаю над проблемой, спасибо.


Хорошо, наконец-то все заработало. Используя cmd / c, я обнаружил, что если вы сначала изменили каталог ffprobe, а затем выполнили ffprobe, исключается неправильная обработка двойных кавычек:

cmd / c cd C: \ Program Files \ FFMpeg \ Bin & ffprobe {paramters}> output.txt

1 Ответ

0 голосов
/ 07 февраля 2020

Вероятно, из-за прав администратора. Попробуйте использовать ShellExecute.

См. этот пост

или этот

...