libav:仅列出具有音频或视频功能的解复用器

问题描述 投票:0回答:1

FFMPEG API libav 提供以下函数来迭代可用的解复用器:

const AVInputFormat *av_demuxer_iterate(void **opaque);

我想知道这些分路器中哪些与音频相关(例如:

alsa
s16le
),哪些与动画图像(例如:
gif
)、视频(例如:
hevc
mjpeg
),它们是组合的音频/视频/...容器(
mov
mp4
等)。

但是

AVInputFormat
(从 FFMPEG 6.1 开始)似乎没有以任何易于访问的方式提供此信息。有什么方法可以从 libav API 中获取此信息吗?

c++ ffmpeg libav libavformat
1个回答
0
投票

您需要执行以下操作:

  1. 研究

    av_demuxer_iterate
    返回的可能的解复用器。

    此链接可能有用:https://www.ffmpeg.org/ffmpeg-formats.html.

  2. 研究每个解复用器的用途(仅音频、仅视频或两者)。

  3. 将您的发现放入电子表格中,将每个分路器与

    Audio
    Video
    Both
    相关联。

  4. (可选)在线发布您的发现,以免让您的同事头痛。

  5. 声明一个常量

    std::unordered_map
    在程序运行时可访问,包含关联:

    const std::unordered_map<std::string, std::string> mediaTypes {
        {"mp4", "Both"},
        {"mp3", "Audio-Only"},
        {"gif", "Video-Only"}
        // more
    };
© www.soinside.com 2019 - 2024. All rights reserved.