Визначте бітрейт відео за допомогою ffmpeg


17

Я намагаюся визначити бітрейт відео (для перекодування) за допомогою команди ffmpeg, я спробував виконати наступну команду.

ffmpeg -i 28572615.wmv

і це дає наступний вихід

    Input #0, asf, from '28572615.wmv':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    encoder         : Lavf57.36.100
  Duration: 00:02:50.92, start: 0.000000, bitrate: 1982 kb/s
    Stream #0:0: Video: wmv2 (WMV2 / 0x32564D57), yuv420p, 640x360, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, 2 channels, fltp, 128 kb/s
At least one output file must be specified

Якщо я використовую інше відео

ffmpeg -i with_out_sound.mp4

то я отримую наступний вихід

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'with_out_sound.mp4':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    creation_time   : 2015-04-21 05:14:57
  Duration: 00:00:27.86, start: 0.000000, bitrate: 500 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 622x480 [SAR 1:1 DAR 311:240], 100 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2015-04-21 05:14:57
      handler_name    : VideoHandler
At least one output file must be specified

Я плутаю те, що я повинен шукати у рядку метаданих Тривалість чи рядку метаданих Відеопотік (Потік № 0: 0) для бітрейту відео?


Для другого файлу, який розмір файлу?
Gyan

@Mulvya 2-й розмір відеофайлу - 1,66 Мб
користувач2528012

Отже, обидва показання помилкові - фактичний бітрейт становить 61 кбіт / с. Це, мабуть, тому, що це сегмент DASH.
Gyan

Як ffmpeg визначає окремі потоки бітрейтів? пояснює, як визначаються ставки.
Крейдне

Відповіді:


16

Бітрейт відео відображається в інформації про відеопотік. Інформація про формат містить бітрейт для всіх потоків, а також придушення накладних витрат.

Якщо бітрейт відео відсутній, то брудний спосіб отримати це значення - відняти бітрейт всіх інших потоків від загального бітрейта.

Якщо це не є життєздатним, громіздким методом є запуск ffprobe для показу розмірів пакету та тривалості потоку, а потім обчислення бітрейта шляхом підсумовування всіх рядків, крім останнього, та ділення на значення в останньому рядку.

ffprobe -select_streams v -show_entries packet=size:stream=duration -of compact=p=0:nk=1 video.mp4

Вихід:

4199      
2627      
1792      
3921      
2993      
...  
2301      
3076
2879
1543.00000

Звичайно, це рішення в крайньому випадку, і застосовне лише в тому випадку, якщо інформація про відеопотік не містить бітрейт, а оцінка бітрейту за знижкою ціни на всі інші потоки також неможлива.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.