有时视频流看起来像这样:
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……)。