Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是ffmpeg、avcodec、x264?_Ffmpeg_Libavcodec_X264 - Fatal编程技术网

什么是ffmpeg、avcodec、x264?

什么是ffmpeg、avcodec、x264?,ffmpeg,libavcodec,x264,Ffmpeg,Libavcodec,X264,我从一本书上读到的 FFmpeg是一个生成库和程序的自由软件项目 用于处理多媒体数据。FFmpeg最值得注意的部分是 libavcodec,一个由其他几个公司使用的音频/视频编解码器库 项目、libavformat、音频/视频容器mux和demux库, 以及用于转码多媒体文件的ffmpeg命令行程序 那么ffmpeg是avcodec的包装器?我经常听说人们用ffmpeg编码x264视频。那么ffmpeg也是x264的包装器 它们之间有什么关系?首先,要澄清一些术语: FFmpeg是一个有很多人

我从一本书上读到的

FFmpeg是一个生成库和程序的自由软件项目 用于处理多媒体数据。FFmpeg最值得注意的部分是 libavcodec,一个由其他几个公司使用的音频/视频编解码器库 项目、libavformat、音频/视频容器mux和demux库, 以及用于转码多媒体文件的ffmpeg命令行程序

那么ffmpeg是avcodec的包装器?我经常听说人们用ffmpeg编码x264视频。那么ffmpeg也是x264的包装器


它们之间有什么关系?

首先,要澄清一些术语:

  • FFmpeg是一个有很多人参与的软件项目,包括一个Wiki、一个bug追踪器、一些资金等等
  • ffmpeg
    是他们提供的工具之一(其他工具包括
    ffplay
    qt-faststart
  • 是FFmpeg项目的分支,该项目提供了
    avconv
    二进制文件。一些发行版决定在一段时间内发布Libav而不是FFmpeg程序,尤其是Ubuntu,这在Libav命令仍然命名为
    FFmpeg
    的过渡期造成了一些混乱。当前Ubuntu再次使用“real”
    ffmpeg
正如您所说,
ffmpeg
工具是用于处理多媒体内容的许多库的命令行包装器。这些措施包括:

  • libavcodec,用于音频、视频和字幕比特流的传输
  • libavformat,用于容器
  • libavfilter,适用于音频、视频和字幕
  • libswscale,哪个或
  • libavresample,最初被推送到Libav,后来集成到FFmpeg中。有关历史的更多信息,请参阅
虽然FFmpeg开发人员通常提供自己的编码器和解码器,但您可以启用在libavcodec中具有包装器的第三方库,以便将FFmpeg和最流行的H.264编码器“粘合”在一起。这通常是在“重新发明轮子”毫无意义的情况下完成的,如果一个人决定编写一个新的H.264编码器,目标是比x264更好,这种情况就是如此。在其他情况下,由于许可的原因,某些库可能不会附带
ffmpeg
版本,例如libfaac。在这种情况下,
ffmpeg
提供了本机AAC编码器

常见的外部编码器包括:

  • libx264
  • libvpx(用于VP8和VP9视频)
  • 用于aac音频的libfaac、libfdk aac、libvo aacenc
  • libmp3lame
  • 利沃比斯
  • libxvid
对于所有这些,您将在libavcodec下找到包装器,例如libx264,提供必要的代码将视频从FFmpeg内部格式推送到x264编码器,然后将其传递到libavformat以将其写入文件。实际编码是通过libx264完成的

如前所述,其他编码器(如FFmpeg)是FFmpeg的本机编码器,根本不依赖外部库


最后,可以通过提供
FFmpeg
可执行文件,或者选择libavcodec和libavformat库的一部分来使用FFmpeg工具和库。这是许可证允许的,并且使FFmpeg成为当今最流行的多媒体工具集合。

h263编解码器是FFmpeg的一部分吗?FFmpeg的H.263编解码器是本机的,是的。也许可以提到本机AAC enc现在是稳定的。@Mulvya说得好,没有提到这一点。谢谢@简言之,是的。虽然我不知道Accord.NET,但基本上没有其他方法可以用免费的开源工具来编码H.264。