Які параметри відео / аудіо потоку FFmpeg в порядку


0

Колись відеопотік виглядає приблизно так:

Video: h264 (avc1 / 0x31637661), yuv420p(tv, smpte170m), 640x360, 935 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)

Іноді буває інакше:

Video: flv1, yuv420p, 320x240, 512 kb/s, 15 fps, 15 tbr, 1k tbn

Або:

Video: h264 (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2195 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)

Вихід виглядає по-різному залежно від властивостей відео.

Я намагаюся створити javaклас, щоб отримати ці властивості окремо. як getBitrate, getFPS, getAudioSampleRate, ...

В даний час я використовую ffprobeв своєму додатку для отримання інформації про медіа. Таким чином я можу відключити цю додаткову опцію та зменшити розмір програми.

Для цього мені потрібно знати Videoі Audioпередавати всі параметри та їх порядок,.

Я не знайшов жодного документа, тож чи можете ви мені допомогти в цьому?

Тут ви можете побачити, що я зробив: https://github.com/symphonyrecords/FFmpegUtils

Відповіді:


1

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

Замість того, щоб намагатися розібрати однолінійний вихід з непередбачуваним вмістом, як, наприклад, ви повинні подивитися на -ofпрапор ffprobe. Це дозволяє вибирати між різними вихідними форматами для ffprobe, включаючи кілька різних форматів, які читаються машиною (cvs, ini, json, xml ...).


no set order-> порядок встановлений, але про які атрибути повідомляється, залежить від їх наявності та рівня розташування.
Gyan

@Gyan Ви знаєте ці набори з рівнем журналу за замовчуванням?
Мехран

Порядок не встановлено. Навіть якщо він був встановлений між різними кодерами / декодерами ... що це не так ... немає жодної гарантії, що він залишиться однаковим між версіями ffmpeg. Знову ж таки, для випадку використання -ofправильний підхід використовувати прапор для отримання машиночитаного формату. Це виключає необхідність знати порядок всіх разом.
Кліфф Армстронг

@CliffArmstrong Я використовую компільовану версію ffmpeg в андроїд-системі, яка дасть вам розділити ffprobeі ffmpegподати файл про кожну 20MB(залежно від версії) для кожної архітектури процесора. Це означає, що розмір програми становить 40 Мб для підтримки однієї арки eg: x86 , arm .... І це лише в тому випадку, якщо я не використовую жодної іншої бібліотеки та ресурсів підтримки.
Мехран

@CliffArmstrong - більшість даних у показаннях, показаних ОП, збираються з кодека (і avctx), заповненого декодером, але не збирається та друкується ними, а кодом утиліти lavf, який має встановлений порядок.
Gyan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.