我试图在Ubuntu上第一次使用ffmpeg进行编程。非中性似乎有点乱,但这与libavformat,libavcodec相同,对吧?
我可以编译并运行一个在mp3文件上调用avformat_open_input
的程序,显然是成功的,现在我正试图从中获取一些信息。
首先,我想在avcodec_get_name的audio_codec_id
成员上拨打AVFormatContext,但该名称的功能不会出现在/ usr / include / libav {codec,format中的任何标头中,UTIL}。
我从GitHub检查了最新的ffmpeg,并根据我安装的版本对avcodec.h进行了分析。文件显然大致相同,但除了其他差异之外,avcodec_get_name(AVCodecID)
已替换为avcodec_get_class(void)
,尽管两者之间似乎没有任何对应关系。
令人困惑的是,this documentation省略了avcodec_get_class而this documentation省略了avcodec_get_name。看看网址,前者应该是最新版本,对应于我从GitHub查看的内容,后者应该过时,但反过来似乎是真的。
有人可以告诉我
答案 0 :(得分:2)
如果在Ubuntu框中运行ffmpeg
,您应该会看到随软件包一起安装的库的版本。如果包是理智的,那将是ffmpeg的长期版本(例如1.1.x)。然后,您可以通过以下方式查找该版本的文档:从ffmpeg repo中检出相应的版本。您还可以找到tarball here附带的文档。
请注意,我不确定您的Ubuntu版本中包含的ffmpeg软件包是真正的ffmpeg还是所谓的ffmpeg的libav分支。如果您对此不了解,请now would be a good time to learn。如果你没有真正的ffmpeg,不幸的是所有的赌注都会被取消。 libav人可能已经删除了avcodec_get_name()
,而且你无能为力。另请注意,我刚刚尝试使用ffmpeg的最新(< 2周)旧git checkout编译基于ffmpeg的应用程序,并且我对avcodec_get_name()
的使用没有弃用警告。这告诉我,调用avcodec_get_name()
是当前ffmpeg的有效做法。
没有。您可以使用您的应用构建共享和分发.so动态链接库。然后,如果您修改了ffmpeg源,则只需分发ffmpeg源,并且您不必分发源。 More info.我不是律师,这不是法律建议。
我相信这已在1中得到解答。