Какие правильные параметры использовать для проверки видеофайлов с помощью ffmpeg.exe в Windows 7?

7469
xmux

У меня есть тысячи видео файлов, чтобы проверить / проверить, есть ли у них ошибка или предупреждение. Фирма просто оцифровывала их на старых лентах (VHS, Umatic ...). Все эти видео в формате mp4, и я хочу проверить их автоматически с помощью программного обеспечения. После небольшого поиска я нашел этот сайт ( http://videofilechecker.com/ ), но пробной версии программного обеспечения не было, поэтому я не смог протестировать его с моими видеофайлами. Затем я увидел, что программное обеспечение использует ffmpeg для проверки всех этих видео. Во втором поиске я нашел этот вопрос в суперпользователе. ( Как я могу проверить целостность видеофайла (avi, mpeg, mp4 ...)? ).

На этот вопрос ответ таков:

ffmpeg.exe -v 5 -i file.avi -f null - >error.log 

я проверил error.log, и он был полностью пуст (вероятно, в видео не было ошибки)

но я изучил документацию по ffmpeg и обнаружил кое-что еще, например:

ffmpeg.exe -v error -i file.mp4 -f null - >error.log 

но потом я получил ошибку:

Unknown input format: null Failed to set value 'null' for option 'f': Error number -22 occurred 

Если я попытаюсь с, -v 5нет никакой ошибки вообще, но в документации это написано с-v error

С моими ограниченными знаниями по проверке видео, я не уверен, какие опции мне следует использовать с ffmpeg для проверки всех этих файлов. Также моей следующей проблемой будет написать пакетный скрипт в Windows, который будет проверять все файлы один за другим, и в случае ошибки он запишет его в файл журнала с именем файла. У кого-нибудь есть идея или сценарий для проверки этих видео?

3
ffmpeg записывает свою информацию в `STDERR`, а не в` STDOUT`, поэтому при `> error.log` вы ничего не увидите. Вам нужно `2> error.log`. Пожалуйста, покажите нам полный вывод ошибки для ошибки, которую вы получаете с помощью `-v error` (также попробуйте` -loglevel error`). Также взгляните на параметр `-err_detect`. slhck 11 лет назад 0
@xmux Я отредактировал ваше название, так как оно не имело особого смысла, вы можете изменить его обратно, если вы не согласны Tog 11 лет назад 0
Я пробовал оба `ffmpeg.exe -v error -i file.mp4 -f null - 2> error.log` и` ffmpeg.exe -loglevel error -i file.mp4 - 2> error.log, но файл журнала все еще пустой. значит видео не имеет ошибок? а с другой стороны, `-err_detect`, какой вариант мне попробовать с этим crccheck, bitstream ...? xmux 11 лет назад 0
Если вы запустите ffmpeg без перенаправления вывода, он покажет вам полный вывод отладки, включая версию и т. Д. Пожалуйста, укажите это. Вы должны иметь возможность перенаправить этот вывод в любой файл - возможно, перенаправление вывода в Windows работает иначе, но `2>` - это то, что работает для ffmpeg в Linux / Unix. slhck 11 лет назад 0
@Tog, но если есть программное решение, такое как videofilechecker, я хотел бы использовать программное обеспечение с графическим интерфейсом. xmux 11 лет назад 0
@slhck `ffmpeg.exe -v 5 -i file.avi -f null -> error.log` написано в ответе на другой вопрос для windows! У меня нет Linux / Unix, чтобы проверить это сейчас. xmux 11 лет назад 0
Хорошо, я только что проверил. Попробуйте `-v error` вместо` -v 5`. Если вы не получили никакого вывода, ошибки не было. У вас есть файлы с ошибками? Я не уверен, что это возможно с FFmpeg, чтобы проверить это. slhck 11 лет назад 1
@xmux Проблема с открытым запросом рекомендации по программному обеспечению на этом сайте заключается в том, что ваш вопрос может быть закрыт как «не по теме» согласно FAQ. Tog 11 лет назад 0
я также нашел другую программу mplayer: `mplayer -ao null -vo null file.mp4` с этими опциями вы можете проверять битые кадры и искать ошибки в stdout. xmux 11 лет назад 0

1 ответ на вопрос

3
Amiramix

This is what I am using:

./ffmpeg.exe -v debug -threads 8 -nostats -i "path/to/file.ts" -f null - >~/error.log 2>&1 

Or:

./ffmpeg.exe -v debug -threads 8 -nostats -i "path/to/file.ts" -f null - 2>~/error.log 

The second one redirects just the stderr to a file, whereas the first one redirects both, stderr and stdout.

The option -v debug will print all errors, warnings and debug information, so it may be useful when comparing two video files (e.g. to see which one has less errors). To limit what's reported use other levels according to ffmpeg documentation:

https://www.ffmpeg.org/ffmpeg.html

Look for the option: -loglevel [repeat+]loglevel | -v [repeat+]loglevel. The other levels are quiet, panic, fatal, error, warning, info, verbose, debug.

Похожие вопросы