什么是ffmpeg、avcodec、x264? [关闭]
Posted
技术标签:
【中文标题】什么是ffmpeg、avcodec、x264? [关闭]【英文标题】:What is ffmpeg, avcodec, x264? [closed] 【发布时间】:2013-05-22 06:34:14 【问题描述】:来自wiki,我读到了
FFmpeg 是一个生成库和程序的免费软件项目 用于处理多媒体数据。 FFmpeg 最值得注意的部分是 libavcodec,其他几个使用的音频/视频编解码器库 项目,libavformat,一个音频/视频容器多路复用和解复用库, 以及用于转码多媒体文件的ffmpeg命令行程序。
所以 ffmpeg 是 avcodec 的封装?而且我经常听到人们使用 ffmpeg 使用 x264 对视频进行编码。那么ffmpeg也是x264的封装?
它们有什么关系?
【问题讨论】:
【参考方案1】:首先,澄清一些术语:
FFmpeg 是一个涉及很多人的软件项目,一个 Wiki、一个错误跟踪器、一些资金等。ffmpeg
是他们提供的工具之一(例如,其他工具是 ffplay
和 qt-faststart
)。
Libav 是 FFmpeg 项目的分支,它提供了 avconv
二进制文件。一些发行版决定在一段时间内发布 Libav 而不是 FFmpeg 程序,尤其是 Ubuntu,这在转换期间引起了一些混乱,当时 Libav 命令仍被命名为ffmpeg
。当前的 Ubuntu 再次使用“真实的”ffmpeg
。
正如您所说,ffmpeg
工具是用于处理多媒体内容的许多库的命令行包装器。其中包括:
虽然 FFmpeg 开发人员通常提供自己的编码器和解码器,但您可以启用在 libavcodec 中具有包装器的第三方库,以便将 FFmpeg 和x264(最流行的 H. 264编码器。当“重新发明***”根本没有意义时,通常会这样做,如果一个人决定编写一个新的 H.264 编码器,目标是比 x264 更好,就会出现这种情况。在其他情况下,由于许可原因,某些库可能未附带 ffmpeg
构建版本,例如 libfaac — 在这种情况下,ffmpeg
提供了原生 AAC 编码器。
常见的外部编码器包括:
libx264 libvpx(用于 VP8 和 VP9 视频) 用于 AAC 音频的 libfaac、libfdk-aac、libvo-aacenc 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 成为当今最流行的多媒体工具集合。
【讨论】:
是 ffmpeg 的 h263 编解码器的一部分吗? FFmpeg 的 H.263 编解码器是原生的,是的。 也许会提到原生 AAC enc 现在稳定了。 @Mulvya 好点,错过了。谢谢! @KyleDelaney 简而言之,是的。虽然我不了解 Accord.NET,但基本上没有其他选择可以使用免费的开源工具对 H.264 进行编码。以上是关于什么是ffmpeg、avcodec、x264? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章