nnezyj 发表于 2017-6-14 15:07:18

【转帖】關於在SBD v6.x.x以後無法再次MUX DTS-HD MA (.dtshd) 的問題

本帖最后由 nnezyj 于 2017-7-23 15:37 编辑

转载自 kchLceUbHT 的研究帖内容,内容是关于 Scenarist BD v6 里 .dtshd 的问题的 。
原帖文字为繁体中文,希望不影响阅读!
我对音频没啥研究,只知道拿个工具来切割音频而已……
概念名词好多,我是看得头晕,转过啦分享下!
---------------------------------------------------------------------------------

關於在SBD v6.x.x以後無法再次MUX DTS-HD MA (.dtshd) 的問題:

簡述(含自己的實驗結果):

⒈ 現行的 eac3to v3.31 中的改版 libdcadec.dll,解碼 DTS-HD MA 已經可以解出和 ArcSoft HD Audio Decoder 相同 HASH(正確,Bit-identical)的WAVE檔了,而且支援更高的聲軌數,所以現對 DTS-HD MA 的 WAVE 還原,用預設的 Dcadec 即可!

⒉ ArcSoft 的解碼器無法支持高聲軌(用 eac3to 轉成 WAVE 後全程爆音),eac3to 會自動降 DialNorm 的 Level(使整體音量變小,原本只是 metadata 殼層上的套用像音訊的FPS信息,但因誤判會永久修改最後的 WAVE 資料!)

⒊ 在 v5.x 的 SBD 中它會忽視已經做過 “DTS-HD stream smooth” 的 .dtshd 而直接 MUX,v6版則改掉了這個 “免識別BUG”。

⒋ DTS-HD stream smooth 為不可避免的破壞性操作,任何 MUX 工具在 MUX 前都會破壞一次(連 BDFix 得這種非正規的直灌工具也是),估計是潛規則的 DRM(數字版權管理)。
證據存放點:/solution/你的project名/你的rev號(00.00.0000)“/Encode/DTS/”,
比較裡面的“新”.dtshd和最後的成品(/MUX/BDROM/DB/)demux後的.dtshd,看看是不是一樣的HASH(damaged)。

⒌ DTS-HD stream smooth 會砍除頭部(header)約140byte的信息,導致之後回到原廠的 DTS HD StreamTools 都不認(切割或合併失敗,無法生成.dtspbr圖譜),難怪v6.x版中會:Error muxing: Cannot generate PBR smoothed DTS stream.,因為官方的流工具都不認了(或出於新DRM修補)!

⒍ DTS-HD stream smooth 也會破壞音訊文件中的 “PBR(Peak BitRate)” 當下的波形,導致先前提供的聯結中的“切削”情形(爆音,間接導致eac3to無法正確判斷是否要 “2nd-pass”-調低音量均等化等級),若你有興趣用 Beyond Compare 與第一手從官方編碼器中產出者比較,會發現該處缺音訊數據。

⒎ 若不執行 DTS-HD stream smooth 的操作而直接使用官方編碼器剛編出來的 .dtshd,會在一些舊的 .mkv MUX工具中報錯,也可能導致時間正位移二幀(經實驗:從WAVE編碼後的 DTS-HD MA 會較原來的時間長兩幀,Dolby TrueHD 則不會)。

⒏ DTS-HD MA是無法分出無損部,只能分出有損部 .dts(用eac3to),因此無法像 Dolby TrueHD 可內離(.ac3 or .ec3 + .mlp or .thd),因必須先都解碼再看設備支持選擇輸出有損還無損部,解碼時會吃較多 CPU 資源,儘管最後的表現結果都與 Dolby TrueHD 相同。

⒐ DTS-HD MA 不管你用什麼工具,MUX 後再 DEMUX 得出的 .dtshd 文件效驗值都各不相同,甚至連原始官方的編碼器 Batch(Folder-Based Encode)與否,都可能導致第一手 .dtshd 文件 HASH 不同(實際上:Batch Mode Encode 時因為它會取第一個文件的 metadata,然而就算是一個 BDMV 中的WAVE,header信息也不盡相同)。

⒑ 拿 DTS-HD MA、LPCM(WAVE)、Dolby TrueHD 比較同一段影片加同一個 WAVE輸入(eac3to ,Mono wavs)而編成的其他無損壓縮格式,最後的體積和順序:DTS-HD MA<LPCM(WAVE)<Dolby TrueHD,時間為:00:00:41<00:00:45<00:01:31,DTS-HD 完勝的原因為簡單粗暴[smooth(砍)過數據,且不用像 Dolby TrueHD 那樣還要即時 Interleave 成 .ac3+.mlp 的一流]。

⒒ eac3to-Warning:“XLL (lossless extension) output not lossless.” 在用 eac3to 轉成 WAVs,要重新用 DTS-HD MA Encode Suite 時會發生在已經做過DTS-HD stream smooth 的情況,因為做過的將導致永久性丟失原始的 WAVE 之 PBR 部分音訊數據(前面已解釋),而原始的 .dtshd(最初的WAVE,不是從任何DTS-HD MA獲得的)則不會報此警告(下點解釋)。

⒓ Dolby TrueHD 則無論用何工具,都可用 eac3to 轉 .mlp 或 .thd 回與原先的 HASH 完全相同的 WAVE 檔,DTS-HD MA 則依編碼模式不同(Batch還是手動一個一個拖的非 Batch):先用 eac3to 還原成 WAVE 後用 Beyond Compare 進位編輯器與原始 WAVE 比較,頭部或尾部將多出或少掉大量 “00” 字節[可靠手動修改補回成原始檔,只要不做 smooth(MUX)]。

⒔ DTS-HD MA 簡單判斷是否 smooth 過:裝最新版 LAV Audio Decoder,若打開的 .dtshd 有時間軸可拖(任一跳到某一時間點或幀),意謂著未被破壞或剛重編碼過過[在2016某版 LAV Audio Decoder 更新中成功達成分離 .dts 有損核以讀取得 Duration 判斷及同步無損部時間軸巡幀,在那次更新之前如同播 Dolby TrueHD 的無損部一樣只顯示經過時間,而無法任意跳(無同步流參考)]!

⒕ 原本放不進去(Buffer underflow)的 Dolby TrueHD 可用 eac3to 轉成 WAVE 後再編碼成 DTS-HD MA 則可通過!!!
且 DTS-HD MA 的有損部(core)碼率是而額外計算的,我試過原本以 768Kbps 的核心碼率無損編碼之 .dtshd 跟一段 “平均碼率”(39.xxxMbps,秒峰值為:44.xxxMbps)很高的動畫,SBD 做 MUX 後 MediaInfo-
Overall bit rate               : 47.9 Mb/s,Maximum Overall bit rate       : 48.0 Mb/s,看得都快爆炸了…。
但神奇得事發生了,重新以 1509Kbps 進行 DTS-HD MA 無損編碼後再以同樣的視頻 MUX,則-
Overall bit rate               : 48.7 Mb/s,Maximum Overall bit rate       : 48.0 Mb/s,
足以證明:DTS-HD MA 的有損部(.dts)碼率是額外計的
(但核心碼率調太高可能會導致無損壓縮過的 .dtshd 體積還比你原 LPCM 檔還大的尷尬狀況發生,自己權衡)!

⒖ 所有編成的 Dolby TrueHD 都會強制以 24bit 在 metadata 中表示(目的可能為提升壓縮率,和更高精度解析以減少無損壓縮後的微音質失真),因此 eac3to 需判斷後強制 2nd-pass 以還原出真 bit 數:BD Spec 支援的取樣位深有16、20、24bit,其中以16和24bit的音軌最常見;
DTS-HD MA 在 metadata 中的 Mode : 16與真實位元數無關,真位元數會如實(原LPCM檔)呈現,16就16bit、24就24bit,不像Dolby TrueHD不管輸入16、20、24bit的WAVE最後全變24bit表示!

⒗ Dolby TrueHD 和 DTS-HD MA 即使你不去改 EQ(等化器)和 Downmix 選項頁,用預設參數編碼,它都會(在殼層上)套用微音效和環繞效果,不像FLAC真原汁原味(無加料),還不用帶核[商業用格式須考慮“向後兼容性(Backward Compatibility)”],且也只有微損失音質(像其他無損壓縮編碼)!

⒘ 視頻平均碼率(ABR)和峰值碼率[PBR,分“秒”和“幀”峰值(有無考慮影片FPS做秒平均量化),大多數工具都看秒峰值,Buffer 也是以秒為單位設計的,大金也不例外,只要視頻一秒內能壓回平均40Mbps以下,你贏了(無MUX Error)!不然像前段的高碼率視頻,幀峰值 143.xxxMbps,MUX Error 早死一大片了],查看工具:Bitrate Viewer。

⒙ 一般藍光播放機可負載的整體最大上限平均碼率為 54Mbps,但大多數 HDMV Title 程式(如大金)都會限在 48Mbps,54-48=6 的這個 Mbps 數我稱為“緊急緩衝區”,像你保險絲會故意選低於標準的 amp 數一樣,若你用 BDFix 作量產,我建議不要超過第一段[48,51](區間表示法)而到第二段[51,54]緊急區(個人分),甚至超過,否則可能導致(硬件負載過高)不同步!
(用家用工具把 DVD 加灌一堆LPCM…;用 avs2bdnxml 生成 100 圖層/秒的 .sup,再直接用 BDFix 灌它的下場。)

⒚ BDFix的激活問題:
在註冊機介面右下角有個框框帶勾,若你計算機中有“多個硬盤”將可能導致,
它取得的硬盤廠商 Serial Number(WD-WMCXXXXXXXXX之類的)為不是 BDFix 它要的(註冊後啟動時仍需要註冊),
此時須取消勾選並手動輸入各個硬盤的序號試試!(一堆論壇中的人在問且無解,但也不容易發現…。)
查看硬盤序號的常用程式有:CrystalDiskInfo(CDI)及HD Tune。

⒛ 關於:Composition areas must not be overlapped.Invalid graphic attributes(X, Y, Height, Width). the CompositionObject's range is outside of video.
以及伴生的:Invalid data, window areas must not be overlapped.(被一張1920x1080的透明圖0.png同時間軸下擠出字幕的.png報錯)
有些.ass字幕開始時間小於0.png中的00:00:00:08幀,所以你需要手動編輯轉成後的.xml,-
砍除.xml末尾的,首個Event這段:
    </Event>
    <Event Forced="False" InTC="00:00:00:00" OutTC="00:00:00:08">
      <Graphic Width="xxxx" Height="xxxx" X="0" Y="0">0.png</Graphic>
,而不用為了少數字幕取消掉大多數字幕都會用到的選項:首幀黑屏!

21.SBD MUX很慢(較BDFix、tsMuxer)是因為,它會讀取流文件頭部信息,後MUX時逐幀檢查其內容。
原帖作者参考了 Doom9 中的部分帖子内容:
【DTS-HD missing headers】http://forum.doom9.org/archive/index.php/t-153498.html

【audio conversion tool 】#13625 楼到#13646楼之间的内容
http://forum.doom9.org/showthread.php?p=1746427#post1746427
http://forum.doom9.org/showthread.php?p=1746496#post1746496
除了以上内容,原帖中其他内容也还不错,一并贴上!—— 这部分我能看懂!:lol
22.Scenarist QC v1.5問題:會發生在部分計算機上,成因暫不明[關聯層面可能很廣:顯卡AMD或NVIDIA、驅動太新、系統設置…
還有可能就是它對v1.1的SQC中的VMR9渲染器做了一些修改,導致新版v1.5中有潛在問題(BUG)]!
Interlaced片源(Deinterlaced後)就花屏,Progressive的則重影。解決方法為改用v1.1版的SQC。
合并功能我测试过,MUI Generator 的 Joint ES 仅对视频格式文件有效(.avc .vc1 等视频文件),合并生成一个 .ves 文件,扔到大金后,加入clip,然后MUX,的确是合并了的视频,不过仅视频而已,用来合并肉酱盘视频还是挺好用的,就是合并不了音频……残念ing!
23.大金還是有“合併”功能的,但只有視頻才可以,而且檢查很嚴苛(每段視頻的fps、crf、ref、bframes等都要相同)
[音訊切割:LPCM-很多工具都能勝任;DTS-HD MA、Dolby TrueHD:自家Stream Tools,tsMuxer二進制硬切也可以,
但一定要從頭部,否則可播放但大金不認(導不入)!],:
MUI Generator.exe:Joint ES。
24.為了確保DEMUX出的(單個).wav(不超過4GiB)-Channel Layout正確,請用BD Reauthor Pro做,不建議用其它(如BDFix、tsMUxer)的工具-
若原先是用MUI Generator.exe關聯的Multi LPCM(解決大多數.wav的4GiB限制)導入,若MUX後用BDFix做,會導致出來的.wav再導回SBD時報:
Error : ERROR: Specified BitsPerSample is not corresponding to data.

25.免用MUI Generator.exe+ScenaristBD.exe做Multi LPCM再MUX後DEMUX,就可以合併Mono Wavs,取得.wav:
C:\Program Files (x86)\Scenarist\Scenarist BD\AudioInterleaver\AudioInterleaver.exe
关于“一個Event含兩個圖層”,在大金中测试过,同一个显示事件内最多两张图片!
26.還有一種保存SUP(PGS)的方式:
.sup或.pes+.mui是BDN-XML的容器,一但他們被轉入此種容器,你將無法還原成原本“完整”的BDN+XML:
因為目前任何工具(甚至是官方的Lemony),經實驗,都會丟失如下結構(一個Event含兩個圖層的)-

    <Event Forced="False" InTC="00:00:08:12" OutTC="00:00:10:07">
      <Graphic Width="590" Height="85" X="666" Y="924">00000204_0.png</Graphic>
      <Graphic Width="675" Height="78" X="624" Y="85">00000204_1.png</Graphic>
    </Event>
    <Event Forced="False" InTC="00:00:10:07" OutTC="00:00:15:10">
      <Graphic Width="1333" Height="87" X="294" Y="922">00000247_0.png</Graphic>
      <Graphic Width="1512" Height="84" X="205" Y="79">00000247_1.png</Graphic>
    </Event>

   <Event Forced="false" InTC="00:00:08:12" OutTC="00:00:10:07">
      <Graphic>00002_1_01_0002.png</Graphic>
      </Event>
    <Event Forced="false" InTC="00:00:10:07" OutTC="00:00:15:10">
      <Graphic>00002_1_01_0003.png</Graphic>
    </Event>

因此你需要用tsMuxer,帶一段從PTS:0開始的視頻當相對基準點(建議全黑屏低碼率.264,且Duration一定要長過所有字幕中最長者),
一起封裝這些SUP(之前仍建議獨檔備份),
這樣做有兩個好處:
一:方便日後用BD Reauthor Pro再度DEMUX無損“搬遷”成.PES+.MUI(容器→容器是無損的)!
二:沒經過BDN-XML所以確定無任何損失!且最後只有一個檔!

甚至你可以在SBD(VideoOffset)或tsMuxer[Delay (in ms),可輸入負值變“提前”]
中修改它們的開始時間(相當於改.mui,改後.pes的HASH未改變!)後再重新tsMuxer,
以方便日後可直接在SBD-Remux作業中直接填值(新StartTime),而不用想這個字幕要不要減或加延遲,一勞永逸!

結論:BD Reauthor Pro生成的BDN-XML文件夾(eg.:xxxxx_x_xx PG)可以砍掉了,不完整又占空間(.pes才是=原始.sup,可別砍了)!

27.DTS-HD MA Suite (Encoder+Stream Tools)啟動失敗或卡在Pending的原因-

⑴卡在Pending(最多人的問題):
不要聯網!(任何形式,區域或寬帶及Wi-Fi),
最好暫拔網線或在斷網的虛擬機內運行!
PS:別用任何防火牆擋,否則反而會導致啟動時卡在“………Waiting for License Information………”!

⑵DTS-HD MA編碼器(C:\Program Files (x86)\DTS\MAS-SAS\dtshd.exe)及
流工具(C:\Program Files (x86)\DTS\MAS-SAS\dtshdst.exe)沒有成功啟動(沒有介面):
成因~不當清理軟件或註冊表損壞,如用Total Uninstall(TU)等類軟件暴力移除過Java運行庫重裝後所致-
請手動按序起動…

①編碼器
C:\Program Files (x86)\DTS\MAS-SAS\DtsJobQueue.exe
C:\Program Files (x86)\DTS\MAS-SAS\DTSEncoder.jar
②流工具
C:\Program Files (x86)\DTS\MAS-SAS\DTSToolFramewrk.exe
C:\Program Files (x86)\DTS\MAS-SAS\DTSTools.jar

28.不要用avs2bdnxml生成的“.sup”直灌!會導致在專業(按BD Spec.出產的)BDMV播放器
[如PowerDVD(PD)或TotalMedia Theatre(TMT)]中特效字幕很淡(甚至幾近透明)!
而要用它生成的“.png+.xml”去過水SBD(大金BD,MUX後再抽出成.sup)以確保最高兼容性(基本沒做死用太多酷炫的.ass特效指令都不會閃)!
(除非你不在乎兼容性,而是急用:在免費的播放器如MPC-HC或PotPalyer+LAV+DirectVobSub/VSFilter,則播放avs2bdnxml封的.sup不閃。)

29.若使用eac3to生成高聲軌的WAVE檔案生成會,導入SBD會發生:ERROR: This file is not at the channel assign.
解決方法有以下兩種情況:
⑴若最終的單WAVE檔案小於4GiB,先用eac3to轉成Mono Wavs,再用Scenarist BD自帶的AudioInterleaver輸出符合BD Spec的.wav。
⑵超過4GiB暫時無解:eac3to也支援輸出.w64解決.wav的32-bit檔頭單檔4GiB尋址限制,但在SBD中會發生channel assign問題。
BDFix則無上述問題,可直接用eac3to生成的單WAVE上[不建議,還是建議用⑴的方法以提高在硬體播放器的兼容性],
但點二無法處理:因為BDFix不支援導入“.w64”格式!

meitp 发表于 2017-6-14 18:09:47

老师勤学博学乐于助人的精神值得称道!

夜深沉1966 发表于 2017-6-15 06:15:43

老师勤学博学乐于助人的精神值得称道!

511747971 发表于 2017-6-17 20:58:39

感谢分享 。:D
页: [1]
查看完整版本: 【转帖】關於在SBD v6.x.x以後無法再次MUX DTS-HD MA (.dtshd) 的問題