ffmpeg - 缺少 avformat 标头

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

我按照此处的步骤编译FFmpeg。 并且没有问题。它运作良好。但我不明白一些事情。 我的主目录下有两个文件夹。 --ffmpeg_源 --ffmpeg_build

在 ffmpeg_sources/libavformat 中我有很多标头

aiff.h
apetag.h
argo_asf.h
asfcrypt.h
asf.h
ast.h
av1.h
avc.h
avformat.h
avi.h
avio.h
avio_internal.h
avlanguage.h
ogg.h
...

但是 ffmpeg_build/avformat 有 3 个标头。

avformat.h
avio.h
version.h

顺便说一句,这是我的 usr/include/x86_64-linux-gnu/libavformat

avformat.h
avio.h
version.h

为什么其他两个文件中的所有标头都没有? 例如:我想使用“ogg_read_packet”,但是当我尝试

include <libavformat/oggdec.h>
时,我得到
cannot open source file "libavformat/oggdec.h"C/C++(1696)
错误。

c ffmpeg
2个回答
1
投票

构建和使用库不是一回事。

查看 libavformat/oggdec.hlibavformat/oggdec.c。您应该已经意识到,没有办法直接使用

ogg_read_packet
函数。

  1. 头文件中没有声明
  2. 该函数在源文件中声明为静态

如果您想使用特定编解码器(此处为ogg)进行编码/解码,则必须找到编码器(avcodec_find_encoderavcodec_find_encoder_by_name)或解码器(avcodec_find_decoderavcodec_find_decoder_by_name)并将其链接到AVCodecContext 通过 avcodec_open2

然后使用此处描述的“编码”函数进行编码,并使用此处描述的“解码”函数进行解码。

欲了解更多信息:

简而言之,使用公共接口。只有“上帝”才知道 FFmpeg 的内部结构。


0
投票

enter image description here

同样的问题又来了,如何解决这个问题,但我已经在我的 Mac 上安装了 ffmeg。我无法解决这个问题。你能分享一下解决方案吗?

© www.soinside.com 2019 - 2024. All rights reserved.