首页 > 解决方案 > ffplay - 如何获取 AVDictionary codec_opts

问题描述

当我使用自定义 ffmpeg 播放器应用程序解码人工制品(ffmpeg 流解码 - 不使用 ffplay 时的人工制品)而 ffplay 显示没有人工制品的完美图像时,我需要以与 ffplay 相同的方式实现我的播放器。

ffplay.c使用

AVDictionary *codec_opts;

在cmdutils.c中初始化(纠正我)。我需要这本字典来模拟 ffplay 的编解码器初始化(第 2615f 行),但我不明白它是如何创建的。有没有办法

a) 以与 ffplay 相同的方式包含 cmdutils - 最后链接到 cmdutils.o 最终给了我

:-1: error: /.../cmdutils.o: undefined reference to symbol 'swresample_version@@LIBSWRESAMPLE_3'

尽管我使用(QT)包含了 libswresample:

LIBS +=-L/usr/local/lib -lavformat -lswscale -lswresample -lavutil -lavcodec 

b) 以任何其他方式访问 AVDictionary codec_opts?

标签: c++ffmpeg

解决方案


AVDictionary *codec_opts是的,您可以为自己的实现创建和设置。
检查这些示例:

1) https://github.com/sparrowli/laimpeg/blob/0a68db7d88c0b42c3df584e66366b4e81d3b31ee/libavutil/tests/dict.c
2) https://github.com/ithinkso117/DotNetPusher/blob/cf24e7e10a0b2fa843b435d3d3d3b759a7aa04d3d3b759a7aa04

至于 include cmdutils.c,这将永远行不通。您只能通过 API 使用 FFmpeg 的库并与共享库链接。

希望这些帮助。


推荐阅读