Иногда видеопоток выглядит так:

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 ответ1

1

Как вы сказали, вывод будет меняться в зависимости от самих потоков. Это потому, что ffmpeg содержит много разных кодеров и декодеров, каждый из которых имеет свой собственный способ действий. Кроме того, разные форматы потоков могут не обладать одинаковыми характеристиками и требовать отображения разных видов информации для описания потоков. Так что нет установленного порядка. Более того, будущие изменения в спецификациях формата или даже возможности ffmpeg могут изменить порядок.

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

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