我的机器上安装了 libavformat56 和 libavformat-dev。我现在正在构建一些使用 libavformat.h 标头的源代码。源代码(即 Steven Lovegrove 的 Pangolin 库)正确地预处理了
avformat_alloc_context
和
avformat_alloc_output_context2
基于 LIBAVFORMAT_VERSION_MAJOR(与 54 相比)。
这解析为 56,因此使用后者。我检查了官方头文件在这里对于版本 56,并且如预期的那样,avformat_alloc_output_context2 存在。
但是,我的系统(目前在 Utopic)上的 /usr/include/libavformat/avformat.h 中的同一标头仅定义avformat_alloc_context。
这是某种软件包错误吗,还是我在这里做错了什么?
PS:如果您觉得这个问题应该在不同的 Stack Exchange 论坛上询问,请告诉我。
PPS 任何安装了 libavformat-dev 的人都可以验证一下他们没有avformat_alloc_output_context2在他们的标题中?
答案1
该问题不是软件包错误。
只是我愚蠢地认为 libav 对 libavformat v.56 具有与 ffmpeg 相同的功能。
对于“avcodec_get_name”函数也存在同样的问题,正如这里所问到的: https://stackoverflow.com/questions/23560748/avcodec-get-name-is-not-available-in-ubuntu-libavcodec-what-should-i-use
ffmpeg 包似乎即将出现在 ubuntu velvet 中,我希望他们也能提供它的开发文件,至少使用一些预处理器标志来区分 ffmpeg 和 libav。
[这里省略我对 libav 和 ffmpeg 维护者在分裂后对社区有多自私的探索。至少现在他们(有点)在合作。]