Last Updated on 2021-05-12 by Clay
今天在使用 PyQt5 進行播放影片的測試時,使用 QMediaPlayer 必定會遇到以下這個報錯:
DirectShowPlayerService::doRender: Unresolved error code 0x8040266 (IDisspatch error #102)
查詢了幾個網站以後,終於在 so 當中找到了比較堪用的討論: https://stackoverflow.com/questions/53328979/directshowplayerservicedorender-unresolved-error-code-0x80040266
基本上,大意便是 PyQt5 當中的 QMediaPlayer 使用的後端僅能支援 avi 檔,並不支援 mp4。
為了解決這個問題,我們必須下載支援的解碼器並安裝,我們可以選擇的有 K-lite codecs 和 LAV Filters,在此我示範安裝 K-lite。
K-lite 安裝
首先來到 K-lite codecs 官網下載。

選擇 Normal installer 即可。

選擇 Download Basic。

選擇 Mirror 1 下載。
下載好後雙擊執行程式,只要一直選擇 Next,就會裝好了。
然後我們再次執行我們剛剛報錯的檔案。

看起來可以正常播放了!