介紹

使用 FFmpeg 編碼輸出標準 DVD-Video 教學

此文僅供參考與學習 FFmpeg 用法
實際使用推薦使用以下軟體:
‧ TMPGEnc Authoring Works (付費,高自訂性、多樣式)
‧ VSO DVD Converter (付費,高易用性)
‧ DVDStyler (免費)

如果你有藍光播放機,只是需要將影片燒錄到 DVD 上
建議可以考慮 AVCHD


轉換工具

FFmpeg:
http://www.mobile01.com/topicdetail.php?f=510&t=3734550


DVD Video NTSC 標準

‧ 720x480 [PAR 40:33, DAR 20:11] 60i/30p  - Full D1 NTSC 16:9
‧ 720x480 [PAR 10:11, DAR 45:33] 60i/30p - Full D1 NTSC 4:3
‧ 720x576 [PAR 16:11, DAR 20:11] 50i/25p - Full D1 PAL 16:9
‧ 720x576 [PAR 12:11, DAR 45:33] 50i/25p - Full D1 PAL 4:3
‧ 704x480 [PAR 40:33, DAR 16:9] 60i/30p - D1 NTSC 16:9
‧ 704x480 [PAR 10:11, DAR 4:3] 60i/30p - D1 NTSC 4:3
‧ 704x576 [PAR 16:11, DAR 16:9] 50i/25p - D1 PAL 16:9
‧ 704x576 [PAR 12:11, DAR 4:3] 50i/25p - D1 PAL 4:3

NTSC 60i = 60000/1001i = 30000/1001 fps
NTSC 24p = 24000/1001 fps
PAL 50i = 25fps
PAL 25p = 25fps

註: DisplayAspectRatio = Width / Height * PixelAspectRatio


Color
顏色取樣格式: YUV 4:2:0
量化: 8bit
色階/動態範圍: 16-235


DVD Audio
Linear PCM: 1-2 channels, 1.5 Mbit/s (2 channels)
Dolby Digital (AC-3): 1-5.1 channels, 64 to 640 kbit/s

為了分配更多儲存空間給視訊使用
建議使用壓縮率較高的 AC-3 音訊編碼格式


FFmpeg 參數設定

Video filter

以下皆應用 Letterbox (填充黑邊) 維持顯示比例不失真

計算公式:
ScaleWidth = Min(Trunc((CustomWidth, CustomHeight / CustomPAR * InDAR) / 2 +0.5) * 2)
ScaleHeight = Min(Trunc((CustomHeight, CustomWidth * CustomPAR / InDAR) / 2 + 0.5) * 2)
PadWidth = CustomWidth
PadHeight = CustomHeight
X = (PadWidth - ScaleWidth)/2
Y = (PadHeight - ScaleHeight)/2


命令寫法:
720x480, PAR 40:33 (DAR 20:11) - Full D1 NTSC 16:9
-filter:v "scale='w=min(720,trunc((480*33/40*dar)/2+0.5)*2):h=min(480,trunc((720*40/33/dar)/2+0.5)*2)',pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'"

720x480, PAR 10:11 (DAR 45:33) - Full D1 NTSC 4:3
-filter:v "scale='w=min(720,trunc((480*11/10*dar)/2+0.5)*2):h=min(480,trunc((720*10/11/dar)/2+0.5)*2)',pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'"

704x480, PAR 40:33 (DAR 16:9) - D1 NTSC 16:9
-filter:v "scale='w=min(704,trunc((480*33/40*dar)/2+0.5)*2):h=min(480,trunc((704*40/33/dar)/2+0.5)*2)',pad='w=704:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'"

704x480, PAR 10:11 (DAR 4:3) - D1 NTSC 4:3
-filter:v "scale='w=min(704,trunc((480*11/10*dar)/2+0.5)*2):h=min(480,trunc((704*10/11/dar)/2+0.5)*2)',pad='w=704:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'"


畫格速率

NTSC 30p:
-vsync cfr -r 30000/1001

NTSC 60i (24p with 3:2 Pulldown):
-filter:v "fps='24000/1001',telecine='first_field=top:pattern=23'"

NTSC 60i:
-vsync cfr -r 30000/1001 -flags +ilme+ildct -top 1

PAL 25p:
-vsync cfr -r 25

PAL 50i:
-vsync cfr -r 25 -flags +ilme+ildct -top 0

※注意: 無法使用兩個 -filter:v 選項,必須合併為一個。

視訊編碼設定

NTSC DVD 相容視訊 - MPEG-2 6000kbps:
-c:v mpeg2video -pix_fmt yuv420p -g:v 18 -b:v 6000k -maxrate:v 8000k -minrate:v 0 -bufsize:v 1835008

對於 PAL DVD: g 選項 (GOP Size) 設定值為 15

音訊編碼

DVD 相容音訊 - 立體聲 AC3 192kbps:
-c:a ac3 -ac 2 -b:a 192k -ar 48k


檔案格式

DVD 相容檔案:
-packetsize 2048 -f mpegts


實際轉換檔案

D1 NTSC DVD: 704x480p [PAR 40:33 DAR 16:9], 29.97 (30000/1001) fps

Step 1. Audio Encoding:
ffmpeg -i input.mkv -vn -async 1 -ar 48k -c:a ac3 -ac 2 -b:a 160k -f ac3 dvdaud.ac3

Step 2. Video Encoding: 1st pass
ffmpeg -i input.mkv -an -pass 1 -vf "scale='w=min(704,trunc((480*33/40*dar)/2+0.5)*2):h=min(480,trunc((704*40/33/dar)/2+0.5)*2)',pad='w=704:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'" -vsync cfr -r 30000/1001 -c:v mpeg2video -pix_fmt yuv420p -g:v 18 -b:v 6000k -maxrate:v 8000k -minrate:v 0 -bufsize:v 1835008 -f null -

Step 3. Video Encoding: 2nd pass
ffmpeg -i input.mkv -an -pass 2 -vf "scale='w=min(704,trunc((480*33/40*dar)/2+0.5)*2):h=min(480,trunc((704*40/33/dar)/2+0.5)*2)',pad='w=704:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=40/33'" -vsync cfr -r 30000/1001 -c:v mpeg2video -pix_fmt yuv420p -g:v 18 -b:v 6000k -maxrate:v 8000k -minrate:v 0 -bufsize:v 1835008 -f mpegts dvdvid.mpg


Step 4. 合成視訊與音訊檔為單一檔案

ffmpeg -i dvdvid.mpg -i dvdaud.ac3 -c copy -packetsize 2048 -f mpegts dvd.mpg

mplex -f 8 -o dvd.mpg dvdvid.mpg dvdaud.ac3


Step 5. 使用 DVD Muxer (例如 TMPGEnc DVD Author) 封裝輸出 DVD 目錄或 ISO 檔:

這邊以 dvdauthor 為例:
dvdauthor --title -o 輸出目錄名稱 -f dvd.mpg


Step 6. 使用支援 DVD 視訊光碟輸出的燒綠軟體 (例如 CDBurnerXP) 燒綠 VIDEO_TS 目錄

DVD根目錄\VIDEO_TS\


位元率 (Bitrate) 控制


光碟容量 (位元組):
DVD-R SL: 4,707,319,808 bytes
DVD+R SL: 4,700,372,992 bytes
DVD-R DL: 8,543,666,176 bytes
DVD+R DL: 8,547,991,552 bytes

OverallBitrate = ( Disc_Space - PGS_FileSize - Other ) / Duration

由於必須精準控制輸出大小,所以 Bitrate 控制模式用 2 pass

例如: 來源 90 分鐘 (5400 秒) 轉 AVCHD 燒錄在 DVD-R

光碟容量換算成位元
4,700,372,992 bytes = ( 4,700,372,992 * 8 ) bits = 37,602,983,936 bits

假設音訊 Bitrate 設為 640 Kbps
AudioSize = 640 Kbps * 5,400 sec = 640000 bits/sec * 5,400 sec
= 3456,000,000 bits

預留 10 MB (83,886,080 bits)
則視訊可用容量為
VideoSize = 37,602,983,936 - 3456,000,000 - 83,886,080 = 34,063,097,856 bits

則視訊可用 Bitrate 為
VideoBitrate = 34,063,097,856 bits / 5,400 sec ~= 6307981 bps ~= 6307 Kbps

視訊 Bitrate 必須小於或等於 6307 Kbps

kingdragon wrote:
DVD-Video 編碼範例 (FFmpeg)

留文備用.
☆ 私人訊息直接刪除不再回覆 ☆ 願望 : bovuhPPjMnEfkyhggnsJdABaLFPuhXT4
文章修改...
由於 -target 選項會強制修改 fps 與解析度,
手動設定 DVD-Video 編碼,不使用 -target 選項。
謝謝提供教學。在實際操作之後,有些問題想請教。

kingdragon wrote:
NTSC DVD 相容視訊 - MPEG-2 6000kbps:
-c:v mpeg2video -pix_fmt yuv420p -g:v 18 -b:v 6000k -maxrate:v 8000k -minrate:v 0 -bufsize:v 1835008

如果我想改 bitrate ,maxrate 是否也要跟著調?bufsize 是否也要跟著調?是跟 bitrate 等比例調整嗎?
kingdragon wrote:
DVD 相容檔案:
-muxrate 10080k -packetsize 2048 -f mpegts

我發現加了 -muxrate 10080k 之後,檔案變大好多,燒不進一片光碟。這個參數一定要加嗎?
kingdragon wrote:
位元率 (Bitrate) 控制

我算好 bitrate 之後,套用你的參數壓出來的檔案都會比預期還要大一點。這樣正常嗎?

感謝您的閱讀。
Shiaobin wrote:
如果我想改 bitrate ,maxrate 是否也要跟著調?bufsize 是否也要跟著調?是跟 bitrate 等比例調整嗎?

maxrate, bufsize 不須調整,這是限制動態位元率變動幅度。

Shiaobin wrote:
我發現加了 -muxrate 10080k 之後,檔案變大好多,燒不進一片光碟

這會填充無用資料使 btirate 恆定為設定值。已修改原文,這不是必須,不好意思。

Shiaobin wrote:
我算好 bitrate 之後,套用你的參數壓出來的檔案都會比預期還要大一點。這樣正常嗎?

如果差距不大可能是計算時用錯單位

Windows 檔案總管是用 K = 1024
1MB = 1024 K bytes = 1024*1024 bytes

編碼器設定是用 K = 1000
1Mbps = (1000*1000) bits/sec = 1,000,000 bits/sec

所以 1Mbps 8秒長的影片檔案總管將顯示 978 KB
((1000*1000) bits/sec) *8sec / 8 / 1024 ~= 978KB

wikipedia: 千位元組

另一種可能就編碼器實際輸出的 btirate 與你所指定的有落差
你可你從播放軟體中確認影片資訊
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!