FFmpeg | ffprobe

от
FFmpeg    ffprobe



Содержание:
  — ffprobe
  — Выбор потоков
  — Вывод нужных параметров

ffprobe — утилита для получения информации о медиафайлах. Она может быть полезна для быстрой сверки параметров видео, для скриптинга (его мы рассмотрим уже совсем скоро) или в цепочке более сложных программ.

Есть два основных параметра:
  -show_format — показывает общую информацию о файле, например, название, длительность, формат, битрейт, длительность и т.д.
  -show_streams — показывает информацию о потоках видео и аудио, а именно название кодеков, разрешение, длительность, цветовой профиль и многое другое.

ffprobe поддерживает форматы xml, csv, json, ini, которые можно указать при помощи ключа -print_format или -of

Чтобы убрать из вывода всё лишнее, можно воспользоваться ключом -v, указав ему параметр error или quiet (это работает и для ffmpeg и ffplay).

Вывод базовой информации в человекочитаемом (насколько это возможно) формате:
  1. ffprobe video.mp4 -v error -show_format
  1. [FORMAT]
  2. filename=video.mp4
  3. nb_streams=2
  4. nb_programs=0
  5. format_name=mov,mp4,m4a,3gp,3g2,mj2
  6. format_long_name=QuickTime / MOV
  7. start_time=0.000000
  8. duration=114.312000
  9. size=11582762
  10. bit_rate=810606
  11. probe_score=100
  12. TAG:major_brand=isom
  13. TAG:minor_version=512
  14. TAG:compatible_brands=isomiso2avc1mp41
  15. TAG:encoder=Lavf56.40.101
  16. [/FORMAT]

Вывод информации о потоках в формате json:
  1. ffprobe video.mp4 -v error -show_streams -print_format json
Вывод

Вывод подробной информации об аудиофайле в формате json
  1. ffprobe -v error -show_format -show_streams -of json result.wav
Вывод


Выбор потоковТакже можно выбирать интересующие потоки и выводить только нужные данные.
Чтобы выбрать поток, используется ключ:
  -select_streams идентификатор
Где идентификатором может быть
  — тип — буква, a - audio, v - video, s - subtitles
  — тип:индекс
Например:
-select_streams a — выберет все аудиопотоки
-select_streams v:0 — выберет первый видеопоток

  1. ffprobe -v error -select_streams a -show_streams video.ts
Вывод


Вывод нужных параметровДля вывода только нужных параметров, используется ключ:
-show_entries список_параметров
Параметры разделяются символом :
Параметр должен содержать название секции, например, в примерах выше в [FORMAT] был параметр bit_rate, а в [STREAMS] был coded_width, поэтому указываем так:
  1. ffprobe -v error -show_entries format=bit_rate:stream=coded_width input.mp4
  1. [STREAM]
  2. coded_width=864
  3. [/STREAM]
  4. [FORMAT]
  5. bit_rate=1149661
  6. [/FORMAT]

В пределах одной секции можно указывать параметры через запятую.

Чтобы избавиться от обёрток [STREAM][/STREAM], настраиваем в -of noprint_wrappers=1 (или коротко nw=1):
  1. ffprobe -v error -show_entries format=size,bit_rate -of default=nw=1 input.mp4
  1. size=539048452
  2. bit_rate=1149661

А чтобы ещё и убрать название параметра, оставив в выводе только значение, всё в том же -of включаем nokey=1 (или коротко nk=1):
  1. ffprobe -v error -show_entries stream=coded_width -of default=nw=1:nk=1 input.mp4
  1. 864

Вывести разрешение видео:
  1. ffprobe -v error -select_streams v -show_entries stream=width,height -of default=nw=1 input.mp4
  1. width=1280
  2. height=720

Пример скрипта на Python, который использует ffprobe, можно посмотреть здесь.