我看這裡有一大堆PSP轉檔教學,但全都是Window下的......
就由我來打一篇for Linux的MP4/AVC轉檔教學吧~XD
以下教學以Ubuntu做示範
-----------------------------------------------------
總的來看過程是這樣的:
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......
要使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就可以了,沒難度)
P.S.:個人覺得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"就好了
P.S.那個"xxxxx"都以lib開頭,xvidcore的是"libxvid",其他按上表的"套件名"一欄鍵入就ok
成功產生Makefile檔後,就到最花時間的編譯了
# make clean ; make
# sudo make install
一切ok~
接下來就是使用了! ^^"
用這個 (只適用於非rm/rmvb影片):
# 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 -aspect 480:272 "OutputFile"
參數:
-i : 後面接著要轉換的檔案
-timestamp : 指定時間截
-bitexact : 使用標準比特率
-vcodec : 指定用什麼codec來編碼影像部分,MP4/AVC=X264+AAC,所以這裡選libx264
-bufsize : 設置碼率控制緩衝區大小,不懂的,別理它了!
-g : 設置圖像組大小,又是很Pro的東西,當看不見就可以了!
-s : 指定影片解析度,要在PSP全螢幕看所以就設480x272
-r : 幀頻,一般都會用29.90
-b : 影像比特率,768很不錯了。除了768外,也可以選:384,512,1500,越大畫質越好,檔案也越大
-acodec : 指定用啥codec來編碼聲音部分,現在我們轉成MP4/AVC所以我們用libfaac
-ac : 聲道數,調成2就是立體聲,1的話就會是單聲道
-ar : 聲音采樣率,可以用24000或48000,48000音質較好
-ab : 聲音碼率。如果上面用了立體聲,這裡就要設成原來的一半,這個例子中,原來想要設的是128,但由於用了立體聲的關係,現在是64。 另外除了128,也可以選:32,48,64,96,越大音質就越好,檔案容量 也越大
-f : 使用啥格式,就選psp吧!~
-aspect : 影片比例, 建議和-s參數所指定的一樣, 如 -s 480x272 建議設成 -aspect 480:272 (因為小P可能會不懂得某些古古怪怪的SAR值(某些情況下ffmpeg會自動幫你設好SAR的),所以把SAR值設定為1:1就比較萬無一失了)
放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:
現在你應該明白怎樣去邊了吧!
有關ffmpeg的其他用法,請參考FFmpeg Documentation
每次都打一大堆參數真麻煩!
這裡有一個我自己用的小script,可以讓大家參考一下,覺得寫的不好的話就多多指教了
就由我來打一篇for Linux的MP4/AVC轉檔教學吧~XD
以下教學以Ubuntu做示範
-----------------------------------------------------
總的來看過程是這樣的:
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......
要使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編碼 |
| amr-nb | libamrnb |
按這裡進入下載頁 |
3gp的聲音部分會用到 |
| amr-wb | libamrwb |
和上面是同一頁面 | 同上 |
| AC3 | liba52 | 按我哦~ | 杜比環迴立體聲使用 的編碼,對DVD編碼時或許會用到 |
| Xvid | xvidcore | 這裡 | 要把影片壓成Xvid就一定要這個,這 個編譯時不用--enable-shared |
| ogg | libvorbis,libvorbis-devel,libogg,libogg-devel | #apt-get install libvorbis libvorbis-devel libogg libogg-devel | 這堆麻煩東西apt-get安裝就好了 |
接下來就是編譯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"就好了
P.S.那個"xxxxx"都以lib開頭,xvidcore的是"libxvid",其他按上表的"套件名"一欄鍵入就ok
成功產生Makefile檔後,就到最花時間的編譯了
# make clean ; make
# sudo make install
一切ok~
接下來就是使用了! ^^"
用這個 (只適用於非rm/rmvb影片):
# 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 -aspect 480:272 "OutputFile"
參數:
-i : 後面接著要轉換的檔案
-timestamp : 指定時間截
-bitexact : 使用標準比特率
-vcodec : 指定用什麼codec來編碼影像部分,MP4/AVC=X264+AAC,所以這裡選libx264
-bufsize : 設置碼率控制緩衝區大小,不懂的,別理它了!
-g : 設置圖像組大小,又是很Pro的東西,當看不見就可以了!
-s : 指定影片解析度,要在PSP全螢幕看所以就設480x272
-r : 幀頻,一般都會用29.90
-b : 影像比特率,768很不錯了。除了768外,也可以選:384,512,1500,越大畫質越好,檔案也越大
-acodec : 指定用啥codec來編碼聲音部分,現在我們轉成MP4/AVC所以我們用libfaac
-ac : 聲道數,調成2就是立體聲,1的話就會是單聲道
-ar : 聲音采樣率,可以用24000或48000,48000音質較好
-ab : 聲音碼率。如果上面用了立體聲,這裡就要設成原來的一半,這個例子中,原來想要設的是128,但由於用了立體聲的關係,現在是64。 另外除了128,也可以選:32,48,64,96,越大音質就越好,檔案容量 也越大
-f : 使用啥格式,就選psp吧!~
-aspect : 影片比例, 建議和-s參數所指定的一樣, 如 -s 480x272 建議設成 -aspect 480:272 (因為小P可能會不懂得某些古古怪怪的SAR值(某些情況下ffmpeg會自動幫你設好SAR的),所以把SAR值設定為1:1就比較萬無一失了)
放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
每次都打一大堆參數真麻煩!
這裡有一個我自己用的小script,可以讓大家參考一下,覺得寫的不好的話就多多指教了
| #!/bin/bash ################# #Usage: # 2psp [-r input_framerate] file1 [-r input_framerate] file2...... # #Options: # -rmvb use mplayer to decode and pass data to ffmpeg, this can convert rmvb file, but less stable. # by default, we do not use this mode. # -r [input_framerate] special the framerate of input file, it\'s useful for converting rmvb file ################# function random(){ ### make five random numbers for ((int=0; int<5; int=int+1)); do product=$product`expr $RANDOM \'*\' 10 \'/\' 32767` done echo $product } function 2psp_mplayer(){ ### convert with mplayer and ffmpeg |