AVCHD / Blu-Ray Video 介紹

AVCHD 與 Blu-Ray Video 視訊編碼均使用 H.264 / MPEG-4 AVC
兩者極為相似,最大不同的是 AVCHD 使用的光碟儲存媒體為 DVD
H.264 傭有極高的壓縮率,可以在使用更少的資料量下提供高於 MPEG-2 的畫質
讓我們可以在 DVD 光碟內放入 720p (AVCHD) 高畫質電影

由於 DVD 光碟讀取速度的關係,AVCHD 的峰值位元速率 (MaxBitrate) 不能超過 18 Mbps
所以不建議用 DVD 光碟來存放 1080 i/p AVCHD 視訊

目前已知支援 AVCHD 光碟的播放設備有
‧藍光播放機 (依說明書而定)
‧PlayStation 3, 4 與其後繼機種...


轉換工具

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


AVCHD / Blu-Ray Video NTSC 標準

‧ 1920x1080 [PAR 1:1,   DAR  16:9] 60i/50i/24p - Full HD, HD 1080
‧ 1440x1080 [PAR 4:3, DAR 16:9] 60i/50i/24p - HD 1080
‧ 1280x720 [PAR 1:1, DAR 16:9] 60p/50p/24p - HD 720
‧ 720x480 [PAR 40:33, DAR 20:11] 60i/24p - Full D1 NTSC 16:9
‧ 720x480 [PAR 10:11, DAR 45:33] 60i/24p - 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/24p - D1 NTSC 16:9
‧ 704x480 [PAR 10:11, DAR 4:3] 60i/24p - 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

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

Blu-Ray Audio
Dolby Digital (AC-3)
Dolby Digital Plus (E-AC-3)
DTS
DTS-HD HR Audio
Linear PCM
Dolby TrueHD
DTS-HD Master Audio

http://zh.wikipedia.org/wiki/AVCHD


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


命令寫法:
1920x1080, PAR 1:1 (DAR 16:9) - Full HD / HD 1080
-filter:v "scale='w=min(1920,trunc((1080*dar)/2+0.5)*2):h=min(1080,trunc((1920/dar)/2+0.5)*2)',pad='w=1920:h=1080:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=1/1'"

1440x1080, PAR 4:3 (DAR 16:9) - HD 1080
-filter:v "scale='w=min(1440,trunc((1080*3/4*dar)/2+0.5)*2):h=min(1080,trunc((1440*4/3/dar)/2+0.5)*2)',pad='w=1440:h=1080:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=4/3'"

1280x720, PAR 1:1 (DAR 16:9) - HD 720
-filter:v "scale='w=min(1280,trunc((720*dar)/2+0.5)*2):h=min(720,trunc((1280/dar)/2+0.5)*2)',pad='w=1280:h=720:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=1/1'"

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'"


Frame rate

NTSC 24p:
-vsync cfr -r 24000/1001

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

PAL 25p:
-vsync cfr -r 25

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


Video Encoding

參考資料

Blu-ray Video
-c:v libx264 -level 41 -bluray-compat 1 -flags -cgop -slices 4 -bufsize 30000k -maxrate 30000k

AVCHD Video
-c:v libx264 -level 41 -bluray-compat 1 -flags -cgop -slices 4 -bufsize 14000k -maxrate 14000k

可以用更高的 maxrate/bufsize
只要總位元速率 (視訊+音訊) 不超過 DVD 最大讀取速度 (18Mbps) 即可

色域規格:
-x264opts colorprim=bt709:transfer=bt709:colormatrix=bt709

色域規格 (用於 SD 以下):
-x264opts colorprim=smpte170m:transfer=smpte170m:colormatrix=smpte170m


Downmixing Audio Channels

-ac 聲道數

如果需要混合聲道,建議使用 6 或 2


Audio Encoding

Linear PCM 16-bit
-c:a pcm_s16le

Dolby Digital (AC-3)
-c:a ac3

Dolby Digital Plus (E-AC-3)
-c:a eac3

DTS
-c:a dts -strict -2



File format

-f 參數用於指定輸出檔案格式(影音容器),可省略,FFmpeg 會依輸出副檔名判斷

MPEG-2 TS (.m2ts)
-f mpegts

Raw video byte stream (MPEG-4 AVC / H.264 副檔名為 .h264 / .264 / .avc)
-f rawvideo

Waveform Audio Format (.wav)
-f wav

Audio Coding 3 (.ac3)
-f ac3


如果不知道該用什麼檔案格式,直接使用萬用容器 Matroska 即可
副檔名為 .mkv / .mka (純音訊)

例如
ffmpeg -input.mkv -vn -c:a dts -strict -2 -f matroska audiofile.mka
ffmpeg -input.mkv -vn -c:a pcm_s16le -f matroska audiofile.mka



實際轉換檔案

AVCHD: 1280x720p, 23.976 (24000/1001) fps, PAR 1:1 (DAR 16:9)

-b:a 位元率
  控制輸出音訊位元率,單位為 位元/秒。
-b:v 位元率
  控制輸出視訊位元率,單位為 位元/秒。

Step 1. Audio Encoding:
ffmpeg -i input.mkv -vn -async 1 -ac 2 -c:a ac3 -b:a 192k -f ac3 audiofile.ac3

Step 2. Video Encoding: 1st pass
ffmpeg -i input.mkv -an -pass 1 -passlogfile xxx.log -pix_fmt yuv420p -fastfirstpass 0 -vsync cfr -r 24000/1001 -filter:v "scale='w=min(1280,trunc((720*dar+0.5)/2)*2):h=min(720,trunc((1280/dar+0.5)/2)*2)',pad='w=1280:h=720:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=1/1'" -c:v libx264 -b:v 4000k -profile:v high -preset veryslow -level 41 -bluray-compat 1 -flags -cgop -slices 4 -bufsize 14000k -maxrate 14000k -x264opts "colorprim=bt709:transfer=bt709:colormatrix=bt709" -f null -

Step 3. Video Encoding: 2nd pass
ffmpeg -i input.mkv -an -pass 2 -passlogfile xxx.log -pix_fmt yuv420p -vsync cfr -r 24000/1001 -filter:v "scale='w=min(1280,trunc((720*dar+0.5)/2)*2):h=min(720,trunc((1280/dar+0.5)/2)*2)',pad='w=1280:h=720:x=(ow-iw)/2:y=(oh-ih)/2',setsar='sar=1/1'" -c:v libx264 -b:v 4000k -profile:v high -preset veryslow -level 41 -bluray-compat 1 -flags -cgop -slices 4 -bufsize 14000k -maxrate 14000k -x264opts "colorprim=bt709:transfer=bt709:colormatrix=bt709" -f mpegts videofile.m2ts


Step 4. 最後使用 tsMuxer 封裝輸出:
http://www.mobile01.com/topicdetail.php?f=510&t=3784550

若需要批次檔可以參考以下連結

AVCHD 720p BAT:
http://www.mobile01.com/topicdetail.php?f=510&t=4464983


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:
所需工具: ffmp...(恕刪)


感謝您的教學,已收藏.
文章分享
評分
評分
複製連結

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