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

17
如果我没有弄错的话,Safari目前需要将HTML5 <video>元素的视频编码为MP4(H.264 / AAC)格式。
因此,我尝试使用ffmpeg将视频转换为此格式。但是,当我输入shell命令ffmpeg -i video.flv video.mp4时,返回的错误如下:

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

需要一个AAC编解码器,但我对ubuntu相当新手,不知道如何解决这个问题。我正在使用Ubuntu 9.10 Karmik Koala(针对amd64)。
非常感谢。 :)

我认为这个链接可能会有用: http://ubuntuforums.org/showthread.php?t=786095 - Maciek Sawicki
4
您的视频已经使用H.264 / AAC进行编码,您只需要将其复制到新容器中:ffmpeg -i video.flv -codec copy video.mp4 - mark4o
8个回答

16

http://handbrake.fr 是一个很好的高级工具,提供了许多有用的预设选项,可用于为iPod、PS3等设备生成mp4格式的视频文件。它支持Linux、Windows和Mac OS X操作系统,并且同时提供GUI和CLI界面。

它作为一个单独的静态链接二进制文件包含了所有x264 / aac编解码器,因此不需要额外安装依赖库。

  $ HandBrakeCLI -Z Universal -i myinputfile.mov -o myoutputfile.mp4
列出所有可用的预设:

要列出所有可用的预设:

  $ HandBrakeCLI -z

14

软件专利导致Debian/Ubuntu在ffmpeg中禁用了H.264和AAC编码器。请参见/usr/share/doc/ffmpeg/README.Debian.gz。

因此,安装x264、mplayer/mencoder和Nero的AAC编码器。(或者,如果您想使用所有自由软件,并且不太关心音频质量,则可以使用sudo aptitude install faac。)

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

x264也被打包了,但您应该检查它是否足够更新,以包括最近的错误修复和更快的速度改进,包括weightp更多的速度改进...

或者,如果您已经愿意从.flv转换,而不是从制作flv的高质量源开始,那么您可以找到的任何最近版本的x264都会很好。


2
优秀的Ubuntu安装指南 https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide - Rafael Xavier

4

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

通过将控制台输出格式化为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的终极指南


3

1

最近我遇到了将 WMV 格式转换为 Final Cut Pro X 格式的问题。Flow Player 可以做到,但会留下水印,因此我尝试用 ffmpeg 尝试解决。

首先安装 ffmpeg - 我使用了 brew install ffmpeg 显然你需要先安装 brew,可以通过谷歌搜索了解如何安装。

接下来我编写了一个简单的命令行脚本,内容如下 - 你可以将 $1 替换为输入 / 输出文件或创建一个 shell 脚本文件...

vi convert.sh
粘贴代码...

然后执行以下命令进行视频转换: sh convert.sh myvideofile.wmv 如果一切顺利,你应该能看到一个名为 myvideofile.wmv.mp4 的新文件。

希望这对你有所帮助。


1

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


0

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


我按照INSTALL文件中的说明安装了FAAC 1.28,但我始终遇到与上述相同的错误。 :( - user176455
在进行./configure期间,您还需要重新编译ffmpeg并使用--enable libfaac选项。请参考https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide。 - d33pika

0
尝试这个:在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

这个非常古老的问题有 [tag:ubuntu] 标签,但是 Ubuntu 14.04 是目前唯一仍提供 libav-tools 包(不包括后续版本中同名的过渡包)的支持的 Ubuntu 版本。随后的 Ubuntu 版本改回了使用 FFmpeg 而不是 Libav,应该能够无问题地将 flv 转换为 mp4。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接