本文将指导您如何使用FFmpeg轻松将AVI视频转换为MP4格式,并探讨是否需要重新编码。文章还包含FFmpeg在Ubuntu、Mac和Windows上的安装方法,以及如何实现AVI无损转换为MP4。适合视频处理爱好者学习和参考。
—
文章标题:轻松高效:使用FFmpeg将AVI转换为MP4的方法
文章内容:
Easy-Tech#021#
在这篇文章中,我们将学习如何利用FFmpeg将视频从AVI格式转换为MP4格式,同时探讨在转换过程中是否需要重新编码。此外,我们还将介绍FFmpeg在Ubuntu、Mac和Windows上的安装方法,并展示如何实现AVI无损转换为MP4。
视频爱好者常常在网上询问:“如何将AVI转换为MP4?”尽管这个问题听起来有些复杂,但使用FFmpeg进行转换其实非常简单明了。
FFmpeg是世界上最重要、最流行的视频处理和压缩库之一。许多高效的商业编码器都采用了FFmpeg,而Handbrake、VLC播放器等软件也获得了FFmpeg的支持。
本文将带您了解格式转换的基本原理,并对Codecs和Formats有一个简单的认识,然后探讨在格式转换过程中是否需要重新编码视频。
让我们直接进入命令行部分。
如果您急需将AVI转换为MP4,只需运行以下FFmpeg命令,这对大多数用例都有效。
“`bash
ffmpeg -i input_filename.avi -c:v copy -c:a copy -y output_filename.mp4
“`
在这个命令中,您提供了:
- AVI视频作为输入
- 明确的输出MP4文件名
- 让FFmpeg直接将视频和音频从AVI容器格式复制到MP4容器格式(命令为:-c:v copy -c:a copy)
注意:假设您已经有一个想要转换的AVI文件。如果没有,您可以通过搜索“avi video samples”获取,或从以下链接下载(这是我在FFmpeg系列文章中使用的示例文件):下载示例AVI文件
了解Format和Codecs的区别非常重要。
简单来说:
编解码器(Codecs)负责将原始音频和视频进行压缩,以合理的大小存储。这种压缩是在考虑音频和视频质量的前提下完成的。更多关于视频压缩的信息,请阅读视频编码完全指南。
音频和视频压缩的输出会被打包进一个称为容器(Formats)的格式中。不同的容器格式包括MP4、AVI、WebM、MKV等。
FFmpeg转换格式时发生了什么?
当您将AVI文件交给FFmpeg并生成一个不带任何参数的MP4文件时,FFmpeg会解复用输入文件,提取原始视频进行重新编码,然后将它放入MP4容器格式中,最后返还给您输出文件。
关键点在于:除非您明确告知FFmpeg不要重新编码,否则它将默认重新编码内容。这一点非常重要!重新编码是默认设置。
这也是在文章开头我们指示FFmpeg只复制音频和视频的原因。
现在,让我们尝试使用FFmpeg通过重新编码将AVI文件转换为MP4。
在此之前,我们先检查一下AVI文件,研究其中的参数。我们可以使用ffprobe,它是FFmpeg工程中的一个工具,对于分析视频文件非常有用。
请运行以下命令:
“`bash
ffprobe -i file_example_AVI_1280_1_5MG.avi
“`
您将得到以下输出:
“`plaintext
Input #0, avi, from ‘file_example_AVI_1280_1_5MG.avi’: Metadata: encoder : Lavf57.19.100 Duration: 00:00:30.61, start: 0.000000, bitrate: 387 kb/s Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1280×720 SAR 1:1 DAR 16:9, 234 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc Stream #0:1: Audio: aac (LC) ( / 0x00FF), 48000 Hz, stereo, fltp, 139 kb/s
“`
上面的输出显示了两个媒体流——视频 #0:0 和音频 #0:1。视频分辨率为1280×720、30fps,视频编码方式为High Profile的H.264/AVC,码率为234 kbps。音频使用AAC,码率为139 kbps,采样率为48 KHz。
使用FFmpeg重新编码AVI到MP4
现在,让我们使用FFmpeg将AVI视频转换为MP4,但使用VP9而非H.264/AVC。下面是实现转换的命令行:
“`bash
ffmpeg -i file_example_AVI_1280_1_5MG.avi -c:a copy -c:v vp9 -b:v 100K outputVP9.mp4
“`
在这里,您使用FFmpeg:
- 使用 `-c:a copy` 参数原样复制音频(不重新编码音频)
- 使用VP9编码,码率设置为100kbps (`-c:v vp9 -b:v 100K`)
- 输出名为 `outputVP9.mp4` 的MP4文件
运行上述命令时,控制台的输出可能如下:
“`plaintext
Input #0, avi, from ‘file_example_AVI_1280_1_5MG.avi’: Metadata: encoder : Lavf57.19.100 Duration: 00:00:30.61, start: 0.000000, bitrate: 387 kb/s Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1280×720 SAR 1:1 DAR 16:9, 234 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc Stream #0:1: Audio: aac (LC) ( / 0x00FF), 48000 Hz, stereo, fltp, 139 kb/s Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> vp9 (libvpx-vp9)) Stream #0:1 -> #0:1 (copy)
“`
控制台输出显示FFmpeg使用了libvpx-vp9重新编码了视频流,码率是100kbps。
您可以通过运行以下命令确认FFmpeg成功输出了MP4,并且使用了VP9编码:
“`bash
ffprobe -i outputVP9.mp4
“`
控制台输出将确认使用VP9编码,码率接近100kbps。
转换过程中重新编码是好是坏?
这取决于您是想直接复制视频并只改变容器格式(从AVI转换为MP4),还是确实想重新编码视频并更改视频质量、大小等。
如果您选择不重新编码(从AVI到MP4的无损转换),会发生什么?
在这种情况下,您只需运行以下命令:
“`bash
ffmpeg -i input_filename.avi -c:v copy -c:a copy -y output_filename.mp4
“`
您向FFmpeg传递的信息如下:
- AVI视频是输入文件
- 确定输出的MP4文件名
- 告知FFmpeg直接将视频和音频从AVI容器格式转到MP4容器格式(命令为:-c:v copy -c:a copy)
顺便说一句,上述操作在我的Mac上只花了0.3秒。这是因为FFmpeg只是复制AVI文件中的视频和音频,并未重新编码,并将它们放入MP4容器。
由于视频并未重新编码,因此这种从AVI到MP4的转换可以认为是无损转换。然而,如果您是视频压缩工程师,我建议您在提到无损视频压缩时谨慎一些。毕竟,压缩总会带来一定程度的质量损失。
到这里,您已经了解了如何使用FFmpeg将AVI转换为MP4。这真的很简单,对吧?
FFmpeg安装指南
以下是FFmpeg在不同操作系统上的安装方法:
如何在Windows上安装FFmpeg?
如果您不是程序员且无法使用编码工具,那么在Windows上编译和安装FFmpeg可能会比较复杂。您可以前往 OTTVerse’s FFmpeg builds 下载已编译的.exe文件。建议下载静态版本(除非您正在开发软件并需要共享库)。
如何在MacOS安装FFmpeg?
在Mac上,您可以使用brew指令安装FFmpeg,brew是Mac系统中一个非常方便的包管理器。下面是在Mac上安装FFmpeg的命令行(在Catalina v 10.15.5上测试和使用):
“`bash
brew install ffmpeg
“`
如何在Ubuntu上安装FFmpeg?
在Ubuntu上,您可以通过多种方式安装FFmpeg:使用apt包管理器或从源代码编译。如果您想通过apt快速安装FFmpeg,可以使用以下命令:
“`bash
sudo apt install ffmpeg
“`
如果您想从源代码编译FFmpeg,可以使用FFmpeg官方安装指南中提到的步骤:FFmpeg官方安装指南;
或者您也可以参考我写的这篇文章:FFmpeg安装指南,我已经详细描述了FFmpeg的安装过程(包括缺少步骤)。
致谢:
本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:
https://ottverse.com/ffmpeg-convert-avi-to-mp4-lossless/
{1、FFmpeg} {2、视频转换} {3、AVI转MP4} {4、视频编码} {5、无损转换} {6、格式转换} {7、临界区}
本文是基于《使用FFmpeg将AVI转换为MP4,简单又高效!你知道怎么做吗?》的AI重写版本
评论(0)