从wiki开始,我读到了
FFmpeg是一个自由软件项目,可以生成库和程序 用于处理多媒体数据。 FFmpeg最值得注意的部分是 libavcodec,一个由其他几个人使用的音频/视频编解码器库 项目,libavformat,音频/视频容器mux和demux库, 以及用于转码多媒体文件的ffmpeg命令行程序。
所以ffmpeg是avcodec的包装器?我经常听到人们使用ffmpeg用x264编码视频。所以ffmpeg也是x264的包装器?
他们是如何相关的?
答案 0 :(得分:23)
首先,要澄清一些条款:
ffmpeg
是他们提供的工具之一(例如,其他工具为ffplay
和qt-faststart
。)avconv
二进制文件。它们都是独立开发的,但FFmpeg通常会合并来自Libav的提交 - 而不是相反的方式。 (有些人可能会说Libav患有NIH)。一些发行版决定发布Libav而不是FFmpeg程序,尤其是Ubuntu,这在Libav命令仍被命名为ffmpeg
的过渡期间引起了一些混乱。现在Ubuntu再次使用“真实”ffmpeg
。 ffmpeg
工具就像你说的那样,是一个用于处理多媒体内容的许多库的命令行包装器。其中包括:
虽然FFmpeg开发人员经常提供他们自己的编码器和解码器,但你可以在libavcodec中启用包装器的第三方库,以便将FFmpeg“粘合”在一起,比如x264,这是最受欢迎的H.264编码器。这通常是在“重新发明轮子”中没有任何意义的情况下完成的,如果决定编写一个新的H.264编码器,其目标是优于x264,则会出现这种情况。在其他情况下,由于许可原因,某些库可能未附带ffmpeg
版本,例如libfaac,在这种情况下,ffmpeg
提供本机AAC编码器。
常见的外部编码器包括:
对于所有这些,您将在libavcodec下找到包装器,例如:对于libx264,the file libx264.c
提供了将视频从FFmpeg内部格式推送到x264编码器所需的代码,然后将其传递给libavformat以将其写入文件。实际编码是通过libx264完成的。
如前所述,其他编码器(如the one for MPEG-4)是FFmpeg的原生编码器,完全不依赖于外部库。
最后,there are several programs使用FFmpeg工具和库,无论是提供ffmpeg
可执行文件,还是选择部分libavcodec和libavformat库。根据许可证允许这样做,使FFmpeg成为当今最受欢迎的多媒体工具集合。