Linux下用ffmpeg轉PSP影片 (MP4/AVC格式)


http://www.hacken.cc/ss/index.php/144989/viewspace-5136

总的来看过程是这样的:
1.安装转换所需套件
2.转换成MP4/AVC格式
3.把转换好的档案命名为"maqxxxxx.mp4"并放到"ms0:/mp_root/101anv01/"中

首先我们要用的工具:
ffmpeg
還有需要的庫:还有需要的库:
x264 , faac和faad2

别想偷懒把所有东东apt-get回来就好,
因为apt-get回来的ffmpeg并不支援x264和aac,所以无法用来转MP4/AVC
为使ffmpeg支援aac和x264,
就必需自己下载ffmpeg的源代码来编译,


要使ffmpeg支援MP4/AVC格式就得把一些Libraries编进去,
下载以下源代码并编译:
faac下载:
http://sourceforge.net/project/showfiles.php?group_id=704
编译:
# ./configure --prefix=/usr/local --enable-shared --with-mp4v2
# make clean ; make
# sudo make install


faad2下载:
http://sourceforge.net/project/showfiles.php?group_id=704
编译:
# ./configure --prefix-/usr/local --enable-shared --with-mp4v2
# make clean ; make
# make install


x264下载(用svn指令,还有就是要先安装yasm才编):
# sudo apt-get install yasm
# svn co svn://svn.videolan.org/x264/trunk x264
编译:
# ./configure --prefix=/usr/local --enable-shared
# make clean ; make
# sudo make install


.这时你已经安装好转MP4/AVC所需的Libraries了先旨声明,以上这三个只是"只针对转MP4/AVC而所需的Libraries".
而ffmpeg还可以编码很多其他格式想要支持其他格式(如转mp3等)就请自己下载所需的Libraries,
我把常用的格式和所需的Libraries整理成下表.
(以下套件只要下回来就"./configure"时只要加上" --enable-shared"选项,再make && make install就可以了,没难度)

套件名
mp3
lame
使之支援mp3編碼使之支援mp3编码
amr-nb libamrnb
gp的声音部分会用到
amr-wb libamrwb

AC3 liba52 杜比环回立体声使用的编码,对DVD编码时或许会用到
Xvid xvidcore 要把影片压成Xvid就一定要这个,这个编译时不用--enable-shared
#apt-get install libvorbis libvorbis-devel libogg libogg-devel
这堆麻烦东西apt-get安装就好了

PS:个人觉得xvid和mp3特有用,建议安装


接下来就是编译ffmpeg
使用svn指令下载ffmpeg:
# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

首先解压缩不用说进入资料夹后当然就是./configure啦完整命令是这样:
# ./configure --enable-shared --enable-libfaac --enable-libfaad2 --enable-libx264 --enable-pthreads --disable-ffserver --prefix=/usr/local

假若你有下载其它库来支援更多功能,可以在上面命令添加"--enable-xxxxxx"
例如你要把mp3lame编进去,只要加"--enable-libmp3lame"就好了
PS那个"xxxxx"都以lib开头,xvidcore的是"libxvid",其他按上表的"套件名"一栏键入就ok

产生Makefile档后,就到最花时间的编译了
# make clean ; make
# sudo make install

用这个:
# ffmpeg -i "InputFile" -timestamp 00:00:00 -bitexact 1 -vcodec libx264 -bufsize 128 -g 250 -s 480x272 -r 29.97 -b 768k -acodec libfaac -ac 2 -ar 48000 -ab 64 -f psp "OutputFile"

参数:
-i :后面接着要转换的档案
-timestamp :指定时间截
-bitexact :使用标准比特率
-vcodec :指定用什么codec来编码影像部分,MP4/AVC=X264+AAC,所以这里选libx264
-bufsize :设置码率控制缓冲区大小,不懂的,别理它了!
-g :设置图像组大小,又是很Pro的东西,当看不见就可以了!
-s :指定影片解析度,要在PSP全萤幕看所以就设480x272
-r :帧频,一般都会用29.90
b :影像比特率,768很不错了。除了768外,也可以选:384512,1500,越大画质越好,档案也越大
-acodec :指定用啥codec来编码声音部分,现在我们转成MP4/AVC所以我们用libfaac
-ac :声道数,调成2就是立体声,1的话就会是单声道
-ar :声音采样率,可以用24000或48000,48000音质较好
-ab :声音码率。 如果上面用了立体声,这里就要设成原来的一半,这个例子中,原来想要设的是128,但由于用了立体声的关系,现在是64。 另外除了128,也可以選:32,48,64,96,越大音質就越好,檔案容量也越大另外除了128,也可以选:32,48,64,96,越大音质就越好,档案容量也越大
-f :使用啥格式,就选psp吧!~

放PSP需要一个.thm的预览图,也可以用ffmpeg来拍下,
用以下指令:
# ffmpeg -i "InputFile" -f image2 -ss 2 -vframes 10 -s 160x120 -an "OutputFile.thm"

参数:
-i :和上面转片时的用法一样,后面跟要拍的档案
-f :和上面转片时一样,"-f"是输出的格式,"image2"告诉ffmpeg要输出jpg档,即是要拍照片
-ss :参数是要拍第多少秒,这里拍第2秒,
-vframes 10 :要截指定秒数中的第几帧,其实几多都可以,10就可以了(因为第一帧或数值太大可能会拍到黑色画面,10的话一般都OK)
-s :和上面转片时的用法一样,用来设解析度
-an :不要声音,很难想像拍下来的图像档会有声音吧......

如果你的源影片上下有黑边的,就得先裁掉这些黑边,否则影像会变形。
以下引用自FFmpeg Documentation :
'-croptop size'
Set top crop band size (in pixels).
'-cropbottom size'
Set bottom crop band size (in pixels).

现在你应该明白怎样去边了吧!
有关ffmpeg的其他用法,请参考FFmpeg Documentation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值