2017-01-12 7 views
1

Чтобы получить уменьшенное изображение с изображения на 100 секунд, я могу сделать ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg. Однако, если видеоролик меньше 100 секунд, ffmpeg не создает миниатюру, но также не выходит с кодом ошибки, что довольно неожиданно.Принудительное ffmpeg для выхода с кодом ошибки, когда эскиз не был успешно создан

Команда выходит без кода ошибки (статус выхода 0). Он выводит сообщение только на stderr, говоря Output file is empty, nothing was encoded (check -ss/-t/-frames parameters if used).

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

Есть ли способ сделать эту проверку на уровне приложения и заставить ffmpeg терпеть неудачу всякий раз, когда он не успевает записать миниатюру в файловую систему?

ответ

4

Использование

ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg -abort_on empty_output 

Возвращает 1 на провал.

+0

спасибо. Кстати, на страницах man есть также флаг '-xerror', который говорит' Stop и exit on error'. Разве ffmpeg не останавливается/не выходит на ошибки? Стоит ли добавлять этот флаг, знаете ли вы, в каких случаях это поможет? – user779159

+1

Это не ошибка команды, если точка поиска находится вне ввода EOF. Результат просто null. Так как это обычно не ожидается, значит, предупреждение .. 'xerror', AFAICT, только выходит из выпадающих временных меток на выходе. – Mulvya

+0

Что означают не по порядку временные метки, как это могло произойти? – user779159