在Linux上VCD轉DVD心得(使用transcode)

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

在Linux上VCD轉DVD心得(使用transcode)

文章ycfu » 週四 2月 22, 2007 12:41 am

看到hmchen大大po「在Linux上轉DVD的心得」,想起來我也打過這麼一篇,就貼上來吧~
當時的需求很簡單,我希望能夠在客廳用電視看日劇,當時還沒辦法在客廳放Media Center,沒電腦是問題,沒網路線是問題,因此就在研究把日劇轉成DVD的可行性。
那時候的測試對象,是當時的知名日劇「Orange Days」,用的檔案是網路上抓的Orange Days VCD .dat檔。
不過因為avi、rmvb的日劇很多,後來我有拿「Water Boys電影版」來實驗,有列在後面。
和hmchen大大不同的是,我沒有加字幕。
結論是什麼呢?
在那一次成功轉出了「Orange Days日劇」的DVD,可是容量卻是6.xG,忍痛買了兩片DL片子測試(一片240元),雖然心痛,但是效果倒是很不錯,可以做到無間斷播放直接到結束,看到睡著是非常可能的,因為片尾曲、預告我都砍了,完全不會有結束的感覺.... :-P
另外我也做了選單,可以直接跳不同集播放,除了解析度是VCD之外,還有來源是.dat,所以有些地方會花掉或聲音小爛掉之外,都非常棒。
後來沒有再做了,讓Orange Days日劇DVD成了絕響,原因有:
1.日劇就算是rmvb轉成DVD通常要超過4.7G,硬塞是可以,但是不是砍到解析度,就是砍聲音,那會聽得出聲音有些破。
2.我當時用度龍800轉,一次要22小時,P4-2.4也要8,9小時,這太拼命了~~
3.Media Center才是解決問題最有效的方法,不然要燒片,要整理檔案,雖然現在播放機支援DivX,但是塞不進一張DVD,感覺比較差,而且用檔案模式播放是有限制的,像是不能直接跳到某個時間,快轉太快會當機......(無言)

下面是當時的心得:
================================================
VCD轉DVD心得:

將 VCD 轉成 DVD 格式

1.將 VCD 的 .dat 轉成 .mpg
(建議使用 IsoBuster 之類的程式直接取出 .mpg,不但可以少這步驟,它的畫面比較不會有問題,dat 的畫面問題超多)
vcdgear -dat2mpg -nosplit -fix "../Orange Days/Orange Days_08.DAT" 08.mpg

2.開始轉換,這邊影像用 ffmpeg 模組,聲音用 toolame 模組,ffmpeg 使用 mpeg2 來壓縮,參數以後再打,之前打過,沒存檔不見了!!
壓縮比的計算如 PS1,原則上大概都會低於 1000 (單位是 k bps)
聲音壓縮在這裡使用 toolame 模組,壓成 mp2 格式,原因是機器的 ffmpeg 抓不到 ac3 codec!
transcode -y ffmpeg,toolame -F mpeg2 -Z 352x240 --export_asr 2 --encode_fields b -N 0x50 -E 48000,16,2 -b 224 -D0 -s2 -J modfps --export_fps 29.97 -w 850 -i 08.mpg -m 08 -o 08

使用 ffmpeg 壓成 ac3 時,修改如下(改 -y ffmpeg,ffmpeg、-N 0x2000、-m 08.ac3):
transcode -y ffmpeg,ffmpeg -F mpeg2 -Z 352x240 --export_asr 2 --encode_fields b -N 0x2000 -E 48000,16,2 -b 224 -D0 -s2 -J modfps --export_fps 29.97 -w 850 -i 08.mpg -m 08.ac3 -o 08

使用 mplayer 來 decode 時參數如下:
transcode -x mplayer -y ffmpeg,toolame -F mpeg2 -Z 512x384 --export_asr 2 --encode_fields b -N 0x50 -E 48000,16,2 -b 96 -D0 -s2 -J modfps --export_fps 29.97 -w 850 -i HERO.DVDRip.Vol.1.avi -m HERO-1 -o HERO-1

輸出部分:
-i 08.mpg 輸入的檔案,目錄
-m 08 輸出聲音檔
-o 08 輸出影像檔(有 -m 時,聲音影像分離)
-y ffmpeg,toolame 輸出所使用的模組(video[,audio] export modules.)
-F mpeg2 編碼時使用的參數字串

影像部分:
--export_asr 2 set export display aspect ratio code C.
--encode_fields b


PS:要知道目前系統內有哪些 export、import、filter 可以用,可以看 /usr/lib/transcode/ (Linux下)

3.將影像和聲音組合
mplex -f8 -o 08_dvd.mpg 08.m2v 08.mp2

選單製作與 DVD 輸出
(建議用 GImp 做,Button 只吃 4 色圖片,Corel Photo-Paint做不出來)
(背景圖使用 720 x 480,解析度 72 x 72,網頁上說 81 x 72 會有問題)

1.將選單背景做成影像
jpeg2yuv -n 50 -I p -f 29.97 -j menu_back.jpg | mpeg2enc -n n -f8 -a2 -o menu_temp.m2v

2.組合選單背景和選單背景音樂,在這邊我沒用背景音樂,就省略 .mp2 音樂檔即可
mplex -f8 -o menu_temp.mpg menu_temp.m2v

3.將選單按鈕和前面的選單背景影像合併
spumux menu.xml <menu_temp.mpg> menu.mpg

4.產生 VIDEO_TS、AUDIO_TS、*.VOB 等 DVD影像光碟 的檔案
dvdauthor -x config.xml

5.將 DVD影像光碟 轉成 .iso 檔
mkisofs -dvd-video -V DVDVideo -udf -o DVDISO.iso "/home/OrangeDaysVIDEO"

-V 後接的 DVDVideo 為光碟標題
-o 後接的 DVDISO.iso 為 輸出檔案
"/home/OrangeDaysVIDEO" 最後面的 這串是 DVD影像光碟 的檔案目錄,裡面即是 VIDEO_TS、AUDIO_TS 兩個目錄

做法大都參照
http://mightylegends.zapto.org/dvd/dvdauthor_howto.php
再經過少部分修改

================================================
PS1:壓縮比和容量的計算如下:

DVD 容量為:
4483 M Bytes

流量和容量與大小的關係為:
流量 * 影片總秒數 / 8 = 大小 bytes
^
bit 轉 byte

例如:聲音流量 224 kbps,時間 3:17:48

總秒數為:
(3 * 3600) + (17 * 60) + 48 = 11868 s

流量為:
224 * 1024 = 229376 bps

大小為:
229376 * 11868 / 8 = 340279296 bytes = 332304 KB = 324.515625 MB

那影片的總大小為:
(影像大小 + 聲音大小) * 103.5%

也就是說:
(影像大小 + 聲音大小) * 103.5% <= 4483 MB

而在 Linux 上要知道 mpeg 檔的流量、時間,可以使用 mpginfo!
================================================

================================================
PS2: transcode 參數說明:
-y ffmpeg,toolame 使用模組 -y 影像模組,聲音模組
-F mpeg2 使用 ffmpeg 模組時的延伸參數,呼叫壓縮類型,在此用 mpeg2 壓縮(DVD是 mpeg2 壓縮)
-Z 352x240 變更解析度,在此變更為 352 x 240,VCD 解析度
--export_asr 2 4:3 或 16:9,--export_asr 2 時為 4:3,--export_asr 3 時為 16:9
--encode_fields b
-N 0x50 聲音壓縮為 PCM 或 MP2 或 AC3 格式,-N 0x1 為 PCM,-N 0x50 為 MP2,-N 0x2000 為 AC3
-E 48000,16,2 聲音壓縮為 48k bps,16 bit,2 聲道(DVD規格)
-b 224 聲音流量壓縮為 224 kbps(可以變更,在世界中心呼喊愛改壓為 192 kbps 增加空間)
-D0 影像從多少 frame 聲音開始同步(預設即是 0,表示影像聲音都從 0 開始)
-s2
-J modfps 使用額外濾鏡外掛,這裡使用 modfps 濾鏡外掛(modfps的作用是可以自由設定 FPS,應該是搭配下面的參數使用的)
--export_fps 29.97 FPS 每秒張數設定,NTSC 為 29.97 FPS
-w 850 影像流量壓縮為 850 kbps(在世界中心呼喊愛 用到 900 kbps)
-i 08.mpg 輸入檔案
-m 08 輸出聲音檔為 xxx.mp2
-o 08 輸出影像檔為 xxx.m2v
================================================

================================================
PS3:網路上的人製作的 DVD日劇 流量:

VCD 畫質

解析度為:352 x 240
影像流量:900 kbps
聲音流量:192 kbps

DVD畫質(來源為 DVD-RMVB)

解析度為:720 x 480
影像流量:1755 kbps
聲音流量: 128 kbps
================================================

================================================
PS4:轉換非 mpeg 的檔案類型,像是 asf、mov 等:

要轉換像是 asf、mov 這類非 mpeg 的檔案,基本上,只要 ffmpeg 吃得進去,
就應該可以直接轉換,檢查的方法很簡單:

按照正常做法執行 transcode,查看
[transcode] auto-probing source ooxx.rmvb (failed)
[transcode] V: import format | unknown (V=(null)|A=(null))

如果出現上面的情況,表示無法解碼,接著我們可以使用下面的方法:
transcode -x mplayer,mplayer -y ffmpeg,toolame -F mpeg2 --encode_fields b -N 0x50 -E 48000,16,2 -b 192 -D0 -s2 -J modfps --export_fps 29.97 -w 900 -i output_file.avi -m out -o out

仔細比較之後會發現,只是多了
-x mplayer,mplayer

意思是
先使用 mplayer 來進行影像和聲音的解碼!

此時應該可以解決大部分問題,如果還是一樣不行,如下:
[transcode] auto-probing source ooxx.rmvb (failed)
[transcode] V: import format | unknown (V=mplayer|A=mplayer)

這時候我們就要麻煩一點,先執行這行:
mencoder -o out.avi -ovc lavc -oac lavc ooxx.rmvb

-o 輸出的檔案名稱
-ovc lavc 輸出影像使用 libavcodec codec
-oac lavc 輸出聲音使用 libavcodec codec

如果執行時還是有問題,可以加上下列其中一個參數試試看:
'-channels 2'
'-srate 22050'
'-srate 32000'
'-srate 48000'

以 Water.Boys-Limited-Rerip-Dvdrip.Divx-Postx.avi 這個檔案來說,
下 '-channels 2' 之後仍然無效,但 '-srate 22050'、'-srate 32000' 和 '-srate 48000' 都順利通過,
最後我用 '-srate 48000',因為流量最高!

之後再使用
transcode -x mplayer,mplayer -y ffmpeg,toolame -F mpeg2 --encode_fields b -N 0x50 -E 48000,16,2 -b 192 -D0 -s2 -J modfps --export_fps 29.97 -w 900 -i out.avi -m out -o out

進行編碼即可!!

而 mencoder 出來的檔案它預設會使用如下 codec
[transcode] V: import format | DivX RIFF data, AVI (V=mplayer|A=mp3)

而解析度之類的參數我們不能用 mpginfo 來查看,但可以用
mplayer ooxx.rmvb

一樣會顯示..............
================================================
ycfu
可愛的小學生
可愛的小學生
 
文章: 28
註冊時間: 週一 4月 03, 2006 1:34 am

Re: 在Linux上VCD轉DVD心得(使用transcode)

文章wesley » 週二 8月 17, 2010 4:47 pm

請問要把m2ts的subtitle extract出來在linux下要如何做到? 感謝大大!
wesley
 

Re: 在Linux上VCD轉DVD心得(使用transcode)

文章阿信 » 週三 8月 18, 2010 9:05 am

wesley 寫:請問要把m2ts的subtitle extract出來在linux下要如何做到? 感謝大大!


可以利用 mencoder 的 -dumpxxx(xxx為字幕名稱)的方式來擷取下來。必須確定subtitle是非嵌入影片的才行。
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客