[ Windows 軟體 ] 影像轉檔:MediaCoder Error code 015: 忽然一直跳錯誤出來了?救命啊~~

Title
之前曾經寫過 [ Video Editing ] 利用 Intel Quick Sync Video 技術,搭配 MediaCoder 與 DebugMode FrameServer,將 Vegas Pro 輸出的影像快速編碼成 H264 影像檔吧! 與大家分享如何利用 Intel Quick Sync 技術來縮短 rendering 的時間。最近由於 MediaCoder 更版,其中一項新增的設定反而讓 MediaCoder 嬌嗔的說「有錯誤喔,不要幫你做了」…
遇到的問題就是:MediaCoder 會一直跳出 Error Code : 15 。為了解決這個問題,除了反覆測試外,也在網路上搜尋了一些他人的經驗,因此在此寫下幾個也許能讓 MediaCoder 乖乖就範的方法。不過這裡記載的不會是所有解決方式,相信只是一部分而已。如果有其他的方案也歡迎交流。

一,選擇不同的 D3D 介面

MediaCoder 某次改版後,Intel Encoder 的 “Use D3D Surface“ 從一個勾選的選項,變成了可以選擇 D3D 版本的下拉式選單

舊版:

新版:

這個選項的用處是使用 DXVA ( DirectX Video Acceleration ) 功能,硬體解碼影像內容。

  • Disabled 就是不使用 DXVA 功能。
  • Direct3D 9 就是使用 DirectX 9 的 Direct3D 功能處理 DXVA 需求。
  • Direct3D 11 就是使用 DirectX 11 的 Direct3D 功能處理 DXVA 需求。

那這邊要選哪一個呢?由於 Intel Quick Sync 是要交給 CPU 內建的 GPU 晶片,因此要選擇哪個版本當然也就是照著 CPU 內建的 GPU 晶片走。一般來說,除了 Ivy Bridge 搭配的 CPU (例如第三代 Core i3/i5/i7)以前的 Intel HD GPU,都不支援 DirectX 11,因此都要選 Direct3D 9。而 Ivy Bridge 時期的 CPU 內建的 Intel HD 2500 / 4000 都支援 DirectX 11,因此可以選 Direct3D 11。如果你使用上發現轉檔時毫無進度,那有可能就是 D3D 選錯版本。換一個版本或是選擇 Disabled 應該就能解決問題。

二,用舊版本的 Intel HD x000 驅動程式

Intel Quick Sync 需要依賴第二代/第三代 Core i5 / i7 系列內建的 HD 系列 GPU 晶片。有時候最新的驅動程式不一定適用。當 MediaCoder 無法運作時,嘗試比較舊版本的驅動程式。

三,Virtu 記得要設定好

如果是在使用獨立外接顯示卡的環境中,務必要安裝 LucidLogix Virtu 系列軟體。透過 LucidLogix Virtu 系列軟體才有辦法將資訊傳遞到 CPU 內建的 HD 3000/4000 GPU 晶片處理。而且要記得將 MediaCoder.exe(位置在 MediaCoder 安裝目錄下) 與 imsdkenc.exe(位置在 MediaCoder 安裝目錄codec 或 MediaCoder 安裝目錄codec64 下)加入 Virtu,而且顯示模式必須是 i-mode。

四,確保 temp 目錄有足夠空間

不要只確保你最終輸出檔案放置的目錄空間是否足夠… MediaCoder 編碼過程中會產生暫存檔,理所當然的就是使用 temp 目錄來存放這些暫存檔。如果 temp 目錄放置的磁碟機空間不足,會使得 MediaCoder 無法正常完成每一階段的工作。

五,如果真的沒有頭緒,按下 F6 叫出除錯資訊視窗

如果真的不知道什麼原因,即使要反覆測試,也要從錯誤中學習。按下 F6 叫出除錯資訊視窗,檢視 MediaCoder 的行為,以及各隻程式運作中所產生的錯誤訊息,才方便尋找真正的症頭,對症下藥。