Есть ли способ использовать ffmpeg для определения кодировки файла перед транскодированием? - PullRequest
18 голосов
/ 11 апреля 2011

Я планирую использовать ffmpeg, чтобы все видеофайлы, загруженные на мой сайт, были закодированы как mp4 h264.

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

Ответы [ 3 ]

28 голосов
/ 09 февраля 2016

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

Пример команды

$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mp4

Результат

h264

Описание параметров

  • -v error Не указывать дополнительную информацию, за исключением фатальных ошибок.

  • -select_streams v:0 Выберите только первый видеопоток.В противном случае codec_name для всех других потоков в файле, таких как аудио, также будет отображаться.

  • -show_entries stream=codec_name Выводит только codec_name вместо всей информации о потоке.

  • -of default=nokey=1:noprint_wrappers=1 Выберите стиль выходного формата по умолчанию и пропустите информацию ключа и оболочки.В противном случае без этих опций будет выведено:

    [STREAM]
    codec_name=h264
    [/STREAM]
    

Также см.

21 голосов
/ 11 апреля 2011

Если вы передадите входной файл в ffmpeg без других параметров, он предоставит вам информацию об источнике видео:

ffmpeg -i myfile.avi

Другим вариантом будет опция -identify в mplayer, которая может бытьнемного легче разобрать.Существует скрипт-обертка midentify, который дает вам еще лучшие результаты.См. этот пример.

5 голосов
/ 08 февраля 2016

Альтернативой является использование ffprobe, которое включено в ffmpeg. Следующее даст наиболее краткий вывод, который я могу найти из инструментов ffmpeg:

ffprobe -hide_banner -stats -i myfile.avi
...