繁体   English   中英

使用ffmpeg将视频转换为MP4(H.264 / AAC)

[英]Convert a video to MP4 (H.264/AAC) with ffmpeg

如果我没有犯错,Safari目前需要为HTML5 <video>元素编码的MP4(H.264 / AAC)视频。

所以我尝试用ffmpeg将视频转换为这种格式。 但是当我输入shell命令ffmpeg -i video.flv video.mp4 ,返回的错误是:

似乎流0编解码器帧速率与容器帧速率不同:2000.00(2000/1) - > 29.92(359/12)输入#0,flv,来自'video.flv':
持续时间:00:05:01.20,开始:0.000000,比特率:66 kb / s流#0.0:视频:h264,yuv420p,320x240 [PAR 1:1 DAR 4:3],66 kb / s,29.92 tbr,1k tbn ,2k tbc流#0.1:音频:aac,22050 Hz,立体声,s16输出#0,mp4,到'video.mp4':流#0.0:视频:mpeg4,yuv420p,320x240 [PAR 1:1 DAR 4:3 ],q = 2-31,200 kb / s,90k tbn,29.92 tbc流#0.1:音频:0x0000,22050 Hz,立体声,s16,64 kb / s流映射:流#0.0 - >#0.0
流#0.1 - >#0.1输出流#0.1不支持的编解码器

AAC编解码器是必需的,但我对ubuntu很新手,我现在真的不知道如何解决这个问题。 我正在使用Ubuntu 9.10 Karmik Koala(amd64)。

非常感谢你。 :)

http://handbrake.fr是一个很好的高级工具,为iPod,PS3,...提供了许多有用的预设,具有适用于Linux,Windows和Mac OS X的GUI和CLI界面。

它带有自己的依赖关系作为单个静态链接的胖二进制文件,因此您包含所有x264 / aac编解码器。

  $ HandBrakeCLI -Z Universal -i myinputfile.mov -o myoutputfile.mp4

列出所有可用的预设:

  $ HandBrakeCLI -z

软件专利促使Debian / Ubuntu禁用ffmpeg中的H.264和AAC编码器。 见/usr/share/doc/ffmpeg/README.Debian.gz。

所以去安装x264,mplayer / mencoder和Nero的AAC编码器。 (或者,如果您想使用所有免费软件,并且不太关心音频质量,那么sudo aptitude安装faac。)

我不记得mencoder的medibuntu包是否包含x264 vid编码,因为我是从git x264和svn mplayer源构建我自己的。 (x264非常积极地开发,经常添加显着的质量和速度改进。) http://git.videolan.org/?p=x264.git;a=summary

x264也是打包的,但你应该检查它是否是最新的,包括最近错误修正的 weightp ,以及更近期的速度提升......

或者,如果你已经愿意转换.flv,而不是从高质量的源代码转换而来,那么你可以找到最新版本的x264就可以了。

您正在尝试转换(已经)包含H.264视频和AAC音频的(相当罕见的).flv文件。

将控制台的输出格式化为FFmpeg会显示这些详细信息。

 Input #0, flv, from 'video.flv':
   Duration: 00:05:01.20, start: 0.000000, bitrate: 66 kb/s
    Stream #0.0: Video: h264, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 66 kb/s, 29.92 tbr, 1k tbn, 2k tbc 
    Stream #0.1: Audio: aac, 22050 Hz, stereo, s16

原始的flv被转换为带有H.264视频和AAC音频的.mp4文件(就像原始的.flv一样):

Output #0, mp4, to 'video.mp4': 
    Stream #0.0: Video: mpeg4, yuv420p, 320x240 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 29.92 tbc 
    Stream #0.1: Audio: 0x0000, 22050 Hz, stereo, s16, 64 kb/s

由于.flv中的音频和视频数据已经是.mp4所需的格式/编解码器,因此您可以将所有内容复制到新的.mp4容器中。 这个过程将比解码和重新编码所有内容快得多:

ffmpeg -i video.flv -vcodec copy -acodec copy video.mp4

或更简单地说:

ffmpeg -i video.flv -codec copy video.mp4

你得到的真正错误是:

输出流#0.1的不受支持的编解码器

这意味着FFmpeg无法将音频(流#0.1)转换为AAC。

您可以跳过错误:

  • 复制音频数据,因为它已经过AAC编码(使用上面的复制命令)

或者您可以通过以下方式解决错误:

  • 使用带有AAC解码/编码支持的FFmpeg构建。 FFmpeg目前支持4个AAC库(参见FFmpeg和AAC编码指南 )。

有关更多详细信息,您还应阅读使用FFmpeg终极指南将FLV转换为MP4

您需要重新编译ffmpeg(从源代码),以便它支持x264 如果您按照本页中的说明操作,那么您将能够执行任何类型的转换。

您也可以尝试将Motumedia PPA添加到apt源并更新您的ffmpeg软件包。

最近有这个问题将令人讨厌的WMV转换为Final Cut Pro X进行编辑。 Flow玩家可以做到,但它留下了水印,所以我用ffmpeg摆弄了一下,直到我得到了一些东西。

首先安装ffmpeg - 我用brew install ffmpeg显然你需要先安装brew,谷歌那个位。

接下来,我编写了一个简单的命令行脚本,其中包含以下内容 - 您可以将$ 1替换为输入/输出文件,或者只创建一个shell脚本文件... vi convert.sh粘贴。

echo "Pass one" ffmpeg -y -i "$1" -c:v libx264 -preset medium -b:v 1555k -pass 1 -c:a libfaac -b:a 256k -f mp4 /dev/null && echo "Pass two" ffmpeg -i "$1" -c:v libx264 -preset medium -b:v 1555k -pass 2 -c:a libfaac -b:a 256k "$1.mp4"

然后转换你的视频... sh convert.sh myvideofile.wmv如果一切顺利,你应该看到一个名为myvideofile.wmv.mp4的新文件。

希望对你有用。

您需要使用AAC编码器编译ffmpeg。 你可以在AudioCoding找到一个。

试试这个:: Linux中的Libav

Installation: run command  
               sudo apt-get install libav-tools 

Video conversion command::Go to folder contains the video and run in terminal
               avconv -i oldvideo.flv -ar 22050 convertedvideo.mp4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM