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

qoefvg9y  于 2022-11-02  发布在  其他
关注(0)|答案(8)|浏览(279)

如果我没有弄错的话,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,来自“视频. flv”:
持续时间:00:05:01.20,开始时间:0.000000,比特率:66 kb/s数据流#0.0:视频:h264,yuv 420 p,320 x240 [PAR 1:1 DAR 4:3],66 kb/s,29.92字节,1千字节,2千字节视频流#0.1:音频:aac,22050 Hz,立体声,s16输出#0,mp4,至“video.mp4”:流#0.0:视频:mpeg4,yuv 420 p,320 x240 [PAR 1:1 DAR 4:3],q=2-31,200 kb/s,9万总字节数,29.92总字节数视频流#0.1:音频:0x 0000,22050 Hz,立体声,s16,64 kb/s流Map:流#0.0 -〉#0.0
流#0.1 -〉#0.1输出流#0.1不支持的编解码器
需要一个AAC编解码器,但我是Ubuntu的新手,我真的不知道如何解决这个问题。我用Ubuntu 9.10 Karmik Koala(amd 64)。
非常感谢您的评分

jgwigjjp

jgwigjjp1#

http://handbrake.fr是一个很好的高级工具,有很多有用的预置mp4的iPod,PS3,...与图形用户界面和CLI界面的Linux,Windows和Mac OS X。
它作为一个静态链接的fat二进制文件附带了自己的依赖项,因此您可以包含所有的x264 / aac编解码器。

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

要列出所有可用的预设:

$ HandBrakeCLI -z
yeotifhr

yeotifhr2#

软件专利导致Debian/Ubuntu禁用了ffmpeg中的H.264和AAC编码器。参见/usr/share/doc/ffmpeg/README. Debian. gz。
所以,去安装x264,mplayer/mencoder,和Nero的AAC编码器.(或者,如果你想使用所有的自由软件,并且不太关心音频质量,那么sudo aptitude install faac.)
我不记得mencoder的medibuntu包是否包含x264 vid编码,因为我自己是从git x264和svn mplayer源代码中构建的(x264是非常活跃的开发,经常添加显著的质量和速度改进)http://git.videolan.org/?p=x264.git;a=summary.
x264也已打包,但您应该检查它是否足够新,以便将weightprecent bugfixes一起包括在内,甚至包括最近的速度改进...
或者,如果您已经愿意从.flv进行转换,而不是从制作flv的高质量源进行转换,那么您可以找到任何最新版本的x264都可以。

laik7k3q

laik7k3q3#

您正在尝试转换(已经)包含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编码(使用上面的copy命令)

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

有关详细信息,您还应阅读Converting FLV to MP4 With FFmpeg The Ultimate Guide

d6kp6zgx

d6kp6zgx4#

您需要recompile ffmpeg (from source) so that it supports x264。如果您按照本页中的说明进行操作,那么您将能够执行任何类型的转换。

siv3szwd

siv3szwd5#

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

sgtfey8w

sgtfey8w6#

最近有这个问题与转换讨厌的WMV到最终削减亲X的编辑。流播放器可以做到这一点,但它留下了一个水印,所以我摆弄了一点ffmpeg,直到我得到了一些进展。
首先安装ffmpeg -我用brew install ffmpeg显然你需要brew安装第一,谷歌位。
接下来,我编写了一个简单的命令行脚本,内容如下--您可以用$1替换输入/输出文件,或者只创建一个shell脚本文件... vi convert.sh Paste。
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。
希望这对你有用。

qlfbtfca

qlfbtfca7#

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

gcmastyq

gcmastyq8#

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

相关问题