問題:
有一堆影片檔案只能用自訂播放器播放,我想對其進行逆向工程,以便可以在常見的媒體播放器(如 VLC 或 MPC)上播放影片。
到目前為止我發現了什麼:
探測這些文件發現它們是 EBML 類型,由Matroska 媒體容器。
MKV工具尼克斯探測發現有一個使用 h.264 編碼的視訊軌道和一個使用 AC3 編碼的音訊軌道。
但透過故意更改“軌道類型”標籤,音軌已被“標記”為視頻,視頻軌道被“標記”為音頻。
MKV工具尼克斯曲目資訊截圖:
- FFMPEG也證實了同樣的事情:
[matroska,webm @ 0x7f966c800a00] 無法在 avformat_find_stream_info 中開啟編解碼器
[h264 @ 0x7f966c811a00] 編解碼器類型或 ID 不符
[ac3 @ 0x7f966c812600] 編解碼器類型或 ID 不匹配[matroska,webm @ 0x7f966c800a00] 找不到流 0 的編解碼器參數(音訊:h264(高),0 個通道):未指定取樣率考慮增加「analyzeduration」和「probesize」選項的值
[matroska,webm @ 0x7f966c800a00] 找不到流 1 的編解碼器參數(視頻:ac3,無,192 kb/s):未指定大小考慮增加“analyzeduration”和“probesize”選項的值
(已編輯)
持續時間:01:46:42.00,開始:0.035000,位元率:2629 kb/s
... Stream #0:0(eng):音訊:h264(高),0 個通道(預設)串流 #0:1(eng):影片:ac3、無、192 kb/s、31.25 fps、31.25 tbr、1k tbn、1k tbc(預設)
疑慮:
是否可以編輯 Matroska 容器並更改媒體軌道的「軌道類型」標籤?
是否可以使用ffmpeg為視訊和音訊軌道指定正確的輸入編解碼器,並提取它們(最好不重新編碼)?
答案1
我無法提交任何 EBML 編輯器或 Matroska 媒體容器編輯器來允許我輕鬆更改 Matroska 檔案中「軌道類型」的值。
因此,最終需要使用十六進位編輯器直接編輯二進位檔案。如果沒有 MKVToolNix,這將是一項耗時的任務。這MKVToolNix 資訊工具現在包含指定 Matroska 檔案中資料(標籤)位置的漂亮功能!
據其稱“曲目類型:音頻" 位於位置 414 且 "曲目類型:視頻" 位於 Matroska 檔案中的位置 532。
MKVToolNix 資訊視圖的螢幕截圖:
在十六進位編輯器中開啟檔案後(試用版綜合一下吧!專業版對於 macOS),只需在 MKVToolNix Info 指向的位置搜尋資料即可。螢幕截圖:
我們發現位置 414 包含資料83 81 02
(聲音的- 對於標籤“軌道類型”)且位置 532 有資料83 81 01
(影片- 對於標籤“軌道類型”)。所以我們只需要交換和替換這些數據。