2018年1月4日 星期四

Unity 5.6 的 WindowsVideoMedia error 問題

通常,將影像檔案匯入到 Unity 中,就可以直接在 Inspector 視窗裡預覽影片播放,但在 Windows 作業系統下,以前比較常見的狀況是因為電腦裡面沒有安裝 QuickTime,而使匯入的影像檔暫時無法使用,通常這種問題可以從 Console 視窗的訊息察覺到,而且也容易解決;而從 Unity 5.6 起,在 Unity 中匯入影像檔以及播放影片變得更好用,可是有時候還是會有某些影像檔匯入後無法使用的情況。


同樣都是 .mp4 的影像檔,使用 Windows 的媒體播放程式可以播放,但是匯入到 Unity 裡,卻有的可以播放,有的卻不能用,這種情況通常只會發生在 Windows 的 Unity,而如果把相同的專案放到 Mac 電腦的 Unity 裡面就會都能夠正常使用,

而在 Unity 5.6 的 Windows 版裡,Concole 視窗應該會獲得如下的錯誤訊息:

WindowsVideoMedia error 0x00d5212 while reading [影像檔的路徑和檔名]

Context: Setting media type for first video stream
Error details: No Suitable transform was found to encode or decode the content.
Track types:
audio Track, type:

看起來似乎是影像編碼/解碼上的問題,可是此段訊息也使人相當困惑,這究竟是怎麼回事呢?

從官方論壇裡,可以找到一篇討論主題「WindowsVideoMedia errors when importing monoscopic and stereoscopic 360 video files」,許多人都遇到相同的問題,其中官方人員做出了回應,原來 Unity 在 Microsoft 平台上使用 Media Foundation 來解碼 H.264 影像,而在 Windows 7 上,Media Foundation 無法解碼解析度在 1920x1088 以上的影像,更高版本 Windows 的限制則是 4096x2304。

既然知道問題可能來自影像解析度,那麼只要能夠改變影像解析度,再重新匯入到 Unity 中,應該就能正常使用了。

如果,你不曉得如何改變影像檔案解析度,在此推薦使用 MiroVideoConverter 這個軟體,免費、開源、跨平台,而且簡單易用,在轉換影像或聲音檔案時非常好用。

取得 Miro Video Converter

  • 開啟 Miro Video Converter 之後,將要處理的檔案拖拉進去。
  • 點擊右下方的齒輪圖示按鈕來開啟設定面板。



  • 勾選 Custom Size,就可以在其下方的欄位輸入影像想要轉換的目標寬度(Width)和高度(Height)。



  • 再次點擊齒輪按鈕來關閉設置面板,可以發現到視窗下方按鈕變成綠色的 Convert to Same Format 按鈕。



  • 點擊 Convert to Same Format 按鈕之後,該按鈕會變成紅色,可隨時停止處理,同時可以看到影像檔的檔名下方出現處理進度條和完成百分比。



  • 轉檔結束後,在影像檔名下方點擊 Show File,即可找到處理好的檔案。而視窗下方會變成 Clear and Start Over 按鈕,點擊此按鈕會清除掉所有要轉換檔案的清單。


經過 Miro Video Converter 調整過大小的影像檔,重新匯入到 Unity 中,應該就能正常使用了。