Linux中利用ffmpeg转换手机支持的mp4格式视频文件 |
发布: 2012-04-10 22:25 |
首先当然是需要安装ffmpeg软件包,可以直接从源中进行安装!但我安装后并不能成功执行后面所需要执行的转换命令,所以我只能重新从源码编译安装ffmpeg: (1)下载ffmpeg源码包,注意版本不能太高,应该与直接从源中安装的版本大抵相当最好;我刚开始下的版本比较高,编译时提示说有一个编译选项找不 到,我到网上也没搜出什么结果,所以只能又降低了版本,最后使用的是ffmpeg-0.4.9-p20050906.tbz! (2)参考文档 https://wiki.ubuntu.com/ffmpeg 进行编译安装,在编译的时候可能还会有很多错误提示,但多半是由于某些头文件找不到所致,所以直接从源中安装提供这些头文件的包即可(技巧提示,可以在源中直接搜索头文件*.h去掉后缀.h的名称*即可,一般需要安装其对应的*-dev包)! 安装完毕之后就可以进行转码操作了: (1) 对于普通的avi视频文件,可以直接使用命令: ffmpeg -y -i "tt.avi" -vcodec xvid -s 400x240 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 48000 -ab 128 -vol 200 -f mp4 "tt.mp4" 参数解释如下: -y 覆盖输出文件,即如果tt.mp4文件已经存在的话,不经提示就覆盖掉了 -i "tt.avi" 输入文件名,可以自己修改路径和名字 -vcodec xvid 使用XVID编码压缩视频,不能改的 -s 400x240 输出的分辨率,注意片源一定要是16:9的不然会变形 -r 29.97 帧数 (一般用25就可以了) -b 1500 视频数据流量,用-b xxx表示使用固定码率,数字可更改;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高(一般用800就可以了,否则文件会很大) -acodec aac 音频编码用AAC -ac 2 声道数1或2 -ar 48000 声音的采样频率 -ab 128 音频数据流量,一般选择32、64、96、128 -vol 200 200%的音量,可更改(如果源文件声音很小,可以提升10到20倍(1000%~2000%),我试过,效果还行!但不能太大,200000%我也试验过,但嘈杂声太大了) -f mp4 输出mp4格式 "tt.mp4" 输出文件名,也可以修改路径和名称 至于这些参数的值是如何得到的,那就得看你的播放设备(mp4,psp,手机等等)了!刚买播放设备的时候,里面肯定会预置有一些视频文件,通过查看这些 预置文件即可得到你的播放设备所支持视频的各项参数!最简单的方法,可以到windows下用暴风影音或KMP播放器打开一个预置视频文件(KMP列出的 比暴风影音还要详细),然后通过查看属性就能得到所有你需要的参数了! (2) 对于wmv9,rm,rmvb等视频格式,ffmpeg还无法解析,但可以通过两次转换达到目的: 先用mencoder将其转换成avi格式: mencoder tt.rmvb -ovc lavc -oac mp3lame -o tt.avi 然后再利用(1)中的命令对该avi文件进行转换即可! 参数说明: tt.rmvb 输入文件(可自己修改路径及名称) -ovc lavc 视频编码格式(mp4视频) -oac mp3lame 音频编码格式(mp3音频) -o tt.avi 输出文件(可自己修改路径及名称) mencoder是与mplayer一起安装的,安装了mplayer,系统肯定就会有mencoder! mencoder与ffmpeg好像都有windows版的! mencoder的功能也很强大,至于为什么不用mencoder一次性转换到位?这个问题我也还在抽时间研究,因为它的参数使用更加复杂,我现在还没试验成功! 至于其它的视频文件格式,我用的不多,所以也没测试过,不过应该都能利用(1)中的命令进行搞定! 就这样,你喜欢的电影就能与你形影相随了! 补充一点: 我个人比较喜欢单个的视频文件,所以如果一个视频文件被分成了两个,也可以通过mencoder对其进行合并(好像仅支持avi视频格式的合并)! 假如有两个rmvb文件cd1.rmvb和cd2.rmvb,反正也是分别需要转换成avi格式的,那么转换到avi之后,就可以通过命令: mencoder t1.avi t2.avi -ovc copy -oac copy -o all.avi 对分割的文件进行合并,合并完之后,再将其转换成mp4即可!主要是看个人的爱好了! 参数说明: t1.avi t2.avi 输入文件(可自己修改路径及名称,还可以更多,空格分开,注意顺序,还有这些输入文件的码流也需要一致) -ovc copy 表示视频编码格式不变(因为是合并而不是转换,所以没必要变) -oac copy 表示音频编码格式不变(同上) -o tt.avi 输出文件(可自己修改路径及名称,按输入文件的顺序进行连接的) 文档背景说明: 虽然就这么点篇幅的东西,却是我两天时间的研究成果!主要原因(也可以说是动力了)就是我最近换了个手机对mp4视频的支持非常不错。但电脑里的一般都是 rmvb和avi格式,直接考上去播不了!所以就得研究编码转换了!刚开始都把注意力放到windows上的转码软件了,其实随手机也附带了一个转码软 件,是给psp专用的,但很多rmvb格式的都转不了,更重要的是输出分辨率没有合适的,而且还改不了!在windows上也研究了几款其它转码软件,要 么需要购买序列号,要么就是转码后播不了! ... ... 最后只能回到Linux中来了! 其实听说Linux中最强大的转码软件是transcode,其次是mencoder,但这两个都没试验成功!所以只能选择ffmpeg了!还好,折腾了半天,这个终于可以使用了! |
原文: http://qtchina.tk/?q=node/647 |
Powered by zexport
|