我正在開發Android應用程序,我正在使用Android SDK的MediaPlayer
在我的應用程序中播放一些視頻。當我在我的應用程序中播放視頻時,大約有五分之一的時間,音頻播放時沒有視頻。這不是一個簡單的編碼錯誤,因爲大部分時間視頻播放完美。Android MediaPlayer - 有時即使播放音頻也沒有播放視頻
我認爲在我的代碼中的競爭條件導致了錯誤。但是,我添加了一些調試語句,並且在視頻不播放時似乎都可以正確設置所有內容。
我掃描了網頁,試圖找到解決方案,但沒有一個是足夠的(見下文)。
有沒有人遇到過這種類型的問題?如果是這樣,你做了什麼?
類似的問題:
android media player shows audio but no video
android video, hear sound but no video
一些細節:
- 我在兩部手機上遇到過這個錯誤。在三星充電視頻播放80%的時間和20%的時間有音頻,但沒有視頻。在T-Mobile Comet上,情況更糟;視頻僅播放大約10%的時間。
- 這不是一個文件的問題,我試過各種視頻文件和編解碼器,並得到相同的問題。
- 這不是存儲介質的問題。我試過在存儲在內部存儲器和SD卡上時播放視頻,這兩者都沒有什麼不同。我甚至在播放之前嘗試讀取一些文件,希望系統能夠緩存它,但這似乎也沒有幫助。
更新:
我已經調試這一點,並通過logcat的期待。我發現,當視頻作品,類似如下出現在logcat中:
09-28 00:09:03.651: VERBOSE/PVPlayer(10875): setVideoSurface(0x65638)
但是,當視頻不玩了,它看起來像有一個空項:
09-28 00:03:35.284: VERBOSE/PVPlayer(10875): setVideoSurface(0x0)
更新2:
當視頻無法播放時,MediaPlayer.OnInfoListener函數的參數爲what==MEDIA_ERROR_UNKNOWN(0x1)
和extra==35
。我查看了Android代碼庫,試圖確定未知錯誤35的含義。我遇到了pv_player_interface.h文件,這表明錯誤代碼35對應於一個叫做PVMFInfoTrackDisable
的東西。我搜索了這個術語,這個術語將我帶到一個名爲的文件中。該文件給了我以下難以理解的解釋:
4.34。PVMFInfoTrackDisable
關於特定軌跡的通知是 禁用。這是一個每個軌道的基礎上。對於未壓縮的 音頻/視頻格式,在選擇內容可用軌道 的過程中,如果解碼器不支持該軌道,則發送一個 PVMFInfoTrackDisable事件。如有必要,該事件將爲每個曲目發送一次 。
我覺得我已經走了很長的路,但我沒有更接近找到答案...仍在調查。
您是否每次播放相同的媒體內容或不同的媒體內容? – bluefalcon
您是否在多個設備上測試過以確保它不是設備錯誤? – Cameron
我已經回覆了你的評論。 – speedplane