FFMPEG API libav 提供以下函数来迭代可用的解复用器:
const AVInputFormat *av_demuxer_iterate(void **opaque);
我想知道这些分路器中哪些与音频相关(例如:
alsa
、s16le
),哪些与动画图像(例如:gif
)、视频(例如:hevc
, mjpeg
),它们是组合的音频/视频/...容器(mov
、mp4
等)。
但是
AVInputFormat
(从 FFMPEG 6.1 开始)似乎没有以任何易于访问的方式提供此信息。有什么方法可以从 libav API 中获取此信息吗?
您需要执行以下操作:
研究
av_demuxer_iterate
返回的可能的解复用器。
研究每个解复用器的用途(仅音频、仅视频或两者)。
将您的发现放入电子表格中,将每个分路器与
Audio
、Video
或 Both
相关联。
(可选)在线发布您的发现,以免让您的同事头痛。
声明一个常量
std::unordered_map
在程序运行时可访问,包含关联:
const std::unordered_map<std::string, std::string> mediaTypes {
{"mp4", "Both"},
{"mp3", "Audio-Only"},
{"gif", "Video-Only"}
// more
};