avcodec_get_name在Ubuntu libavcodec中不可用,我应该使用什么?

avcodec_get_name在Ubuntu libavcodec中不可用,我应该使用什么?,c,ubuntu,ffmpeg,C,Ubuntu,Ffmpeg,我第一次尝试在Ubuntu上用ffmpeg编程。非字符看起来有点混乱,但这和libavformat、libavcodec是一样的,对吗 我可以编译并运行一个程序,在mp3文件上调用avformat\u open\u input,显然很成功,现在我正试图从中获取一些信息 首先,我想调用的audio\u codec\u id成员,但在/usr/include/libav{codec,format,util}的任何头中都不会出现该名称的函数 我从GitHub查看了最新的ffmpeg,并将avcodec

我第一次尝试在Ubuntu上用ffmpeg编程。非字符看起来有点混乱,但这和libavformat、libavcodec是一样的,对吗

我可以编译并运行一个程序,在mp3文件上调用
avformat\u open\u input
,显然很成功,现在我正试图从中获取一些信息

首先,我想调用的
audio\u codec\u id
成员,但在/usr/include/libav{codec,format,util}的任何头中都不会出现该名称的函数

我从GitHub查看了最新的ffmpeg,并将avcodec.h与我安装的版本进行了比较。这些文件显然大致相同,但除其他差异外,
avcodec\u get\u name(AVCodecID)
已替换为
avcodec\u get\u class(void)
,尽管两者之间似乎没有任何对应关系

令人困惑的是,省略avcodec_get_类而忽略avcodec_get_名称。看看URL,前者应该是最新版本,对应于我在GitHub中签出的内容,后者应该是过时的,但反过来似乎是正确的

有人能告诉我吗

  • 对于a)ubuntu库和b)GitHub最新版本,我应该使用什么API文档
  • 如果我根据最新的源代码进行构建,我是否必须静态链接以分发它
  • 如果我想根据提供的Ubuntu头动态链接和构建,如果avocodec_get_name不可用,如何获取给定枚举的编解码器的名称
  • 如果在Ubuntu盒上运行
    ffmpeg
    ,您应该会看到随软件包一起安装的库的版本。如果软件包是健全的,它将是ffmpeg的长期版本(例如1.1.x)。然后,您可以通过从ffmpeg repo中检出相应版本来查找该版本的文档。您还可以找到tarball附带的文档。 请注意,我不确定您的Ubuntu版本附带的ffmpeg包是真正的ffmpeg还是所谓的ffmpeg的libav fork。如果你不知道这件事。不幸的是,如果你没有真正的ffmpeg,所有的赌注都没有了。libav用户可能已经删除了
    avcodec\u get\u name()
    ,您对此无能为力。还要注意的是,我刚刚尝试使用最近(<2周)的ffmpeg git签出来编译我的基于ffmpeg的应用程序,我没有收到使用
    avcodec\u get\u name()
    的任何弃用警告。这对我来说意味着调用
    avcodec\u get\u name()
    是当前ffmpeg的有效实践

  • 不可以。您可以使用应用程序构建共享和分发.so动态链接库。如果修改了ffmpeg源,则只需分发它,而不必分发源。我不是律师,这也不是法律咨询

  • 我相信这已经在1中得到了回答