7

Есть ли способ остановить обработку ffmpeg, если произошла ошибка? Я использую ffmpeg для проверки целостности видео с помощью:

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

Тем не менее, я хотел бы расширить его, чтобы остановить процесс, как только обнаружена ошибка.

2 ответа2

6

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

-err_detect explode

Эта опция работает не во всех случаях. Смотрите ffmpeg -h full для списка опций:

-f_err_detect      <flags>      .D.... set error detection flags (deprecated; use err_detect, save via avconv)
   crccheck                     .D.... verify embedded CRCs
   bitstream                    .D.... detect bitstream specification deviations
   buffer                       .D.... detect improper bitstream length
   explode                      .D.... abort decoding on minor error detection
   careful                      .D.... consider things that violate the spec and have not been seen in the wild as errors
   compliant                    .D.... consider all spec non compliancies as errors
   aggressive                   .D.... consider things that a sane encoder shouldnt do as an error
-err_detect        <flags>      .D.... set error detection flags
   crccheck                     .D.... verify embedded CRCs
   bitstream                    .D.... detect bitstream specification deviations
   buffer                       .D.... detect improper bitstream length
   explode                      .D.... abort decoding on minor error detection
   careful                      .D.... consider things that violate the spec and have not been seen in the wild as errors
   compliant                    .D.... consider all spec non compliancies as errors
   aggressive                   .D.... consider things that a sane encoder shouldnt do as an error
5

В варианте:

-xerror 

Параметр командной строки задокументирован как выполняющий именно то, что вы хотите.

Добавьте параметр, и ffmpeg завершит работу при ошибке потока (также установив значение выхода в 1) из:

ffmpeg -h full | grep xerror .... -xerror error exit on error

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .