2013-05-27 38 views
4

wiki,我读了什么是ffmpeg,avcodec,x264?

FFmpeg的是产生库和程序 处理多媒体数据的自由软件项目。 FFmpeg最显着的部分是 libavcodec,一个其他几个 项目使用的音频/视频编解码器库,libavformat,一个音频/视频容器多路复用器和多路解码库, 和转码多媒体文件的ffmpeg命令行程序。

那么ffmpeg是avcodec的包装?我经常听到人们使用ffmpeg将视频编码为x264。所以ffmpeg也是x264的包装?

它们是如何相关的?

回答

19

首先,要澄清一些术语:

  • FFmpeg的是,有很多人参与一个软件项目,一个Wiki,一个bug跟踪系统,一些资金等
  • ffmpeg是一个他们提供的工具(例如其他ffplayqt-faststart)。
  • Libav是FFmpeg项目的一个分支,它提供avconv二进制文件。它们都是独立开发的,但FFmpeg通常会合并来自Libav的提交,而不是相反。 (有些人可能会说Libav患有NIH)。有些发行版决定发布Libav而不是FFmpeg程序,尤其是Ubuntu,这在导致Libav命令仍被命名为ffmpeg的过渡期内引起了一些混淆。现在Ubuntu再次使用“真实”ffmpeg

ffmpeg工具就像您所说的那样是一些用于处理多媒体内容的库的命令行包装器。这些包括:

虽然FFmpeg的开发人员通常会提供自己的编码器和解码器,可以启用在libavcodec的包装第三方库,为了“粘合”在一起的FFmpeg,并说,x264,这是最流行的^ h .264编码器。这通常是在“重新发明轮子”毫无意义的时候完成的,如果决定编写一个新的H.264编码器,其目标是比x264更好,那么情况就是这样。在其他情况下,由于授权原因(如libfaac),某些库可能不会随ffmpeg版本一起发货 - 在这种情况下,ffmpeg提供本机AAC编码器。

普通的外部编码器包括:

  • libx264
  • libvpx(对于VP8和VP9视频)
  • libfaac,libfdk-AAC,的libvo-aacenc为AAC音频
  • 了libmp3lame
  • libvorbis
  • libxvid

对于所有这些你可以找到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成为当今最受欢迎的多媒体工具集合。

+0

是h263编解码器的一部分ffmpeg? – onmyway133

+1

FFmpeg的H.263编解码器是原生的,是的。 – slhck

+0

也许提到原生AAC enc现在是稳定的。 – Mulvya

相关问题