Я занимаюсь разработкой на машине с Windows и успешно использовал следующий код для проверки видео:

ffmpeg -v error -i $file_path -f null - 2>&1

После развертывания его в Linux, я получаю нижеуказанную ошибку, из-за которой я не смог найти ничего в могучем Google

Expected number for v but found: error

Любые слова мудрости ???

3 ответа3

1

Возможно, вам нужен флаг -err_detect ?

-err_detect        <flags>      .D.VA. set error detection flags
   crccheck                     .D.VA. verify embedded CRCs
   bitstream                    .D.VA. detect bitstream specification deviations
   buffer                       .D.VA. detect improper bitstream length
   explode                      .D.VA. abort decoding on minor error detection    
   careful                      .D.VA. consider things that violate the spec and have not been seen in the wild as errors
   compliant                    .D.VA. consider all spec non compliancies as errors
   aggressive                   .D.VA. consider things that a sane encoder should not do as an error
1

Вы, вероятно, используете старую версию ffmpeg , скорее всего, что-то древнее, поставляемое с CentOS. В зависимости от вашего ядра вы можете скачать статическую сборку или собрать ее самостоятельно, чтобы получить последнюю версию.

Затем опция -v (или -loglevel , которая совпадает) принимает следующие параметры:

  • 'quiet' - вообще ничего не показывать; Молчи.
  • 'panic' - отображать только фатальные ошибки, которые могут привести к сбою процесса, например, сбой подтверждения. Это в настоящее время не используется ни для чего.
  • 'fatal' - показывать только фатальные ошибки. Это ошибки, после которых процесс абсолютно не может продолжаться после.
  • 'error' - Показать все ошибки, в том числе те, которые можно исправить.
  • 'warning' - Показать все предупреждения и ошибки. Любое сообщение, связанное с возможно неправильными или неожиданными событиями, будет показано.
  • 'info' - показывать информативные сообщения во время обработки. Это в дополнение к предупреждениям и ошибкам. Это значение по умолчанию.
  • 'verbose' - то же самое, что и info, за исключением более подробного.
  • 'debug' - Показать все, включая информацию об отладке.

Это действительно принимает номера, но это жестко закодированные значения в файле log.h:

AV_LOG_QUIET    -8
AV_LOG_PANIC     0
AV_LOG_FATAL     8
AV_LOG_ERROR    16
AV_LOG_WARNING  24
AV_LOG_INFO     32
AV_LOG_VERBOSE  40
AV_LOG_DEBUG    48

Таким образом, вы можете использовать эти числа, если хотите, но, конечно, будет проще использовать строковые представления.

0

-v принимает число для уровня детализации, поэтому вам нужно будет написать -v 0 только для ошибок (как в оригинале) или -v 1 для получения дополнительной информации.

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