我想在我的Android設備上播放(渲染到表面)兩個或更多個連續的mp4視頻序列(每個都存儲在設備上的單獨文件中,可能不會在啓動時顯示)光滑的(沒有攤位,閃爍等)方式。所以,觀衆可能會得到僅觀看一個連續視頻的印象。在第一步中,僅用於Nexus 7平板電腦就足夠了。 對於只顯示一個視頻,我一直在使用MediaCodec API,與http://dpsm.wordpress.com/2012/07/28/android-mediacodec-decoded/類似,它工作正常。通過在第一個序列完成之後僅創建(並配置)第二個解碼器(第一個序列的解碼器.stop和解碼器。發行被稱爲),可以看到混合。爲了在兩個不同的視頻序列之間平滑淡化,我正在考慮在第一個播放過程中第二個視頻已經通過解碼器配置(格式,表面,空值,0)初始化了一個功能。此外,第一幀還通過decoder.queueInputBuffer排隊。 但這樣做的結果是出現以下錯誤:在Android上連續播放mp4視頻序列
01-13 16:20:37.182: E/BufferQueue(183): [SurfaceView] connect: already connected (cur=3, req=3)
01-13 16:20:37.182: E/MediaCodec(9148): native_window_api_connect returned an error: Invalid argument (-22)
01-13 16:20:37.182: E/Decoder Init(9148): Exception decoder.configure: java.lang.IllegalStateException
在我看來,一個表面只能由一個解碼器同時使用。那麼,有沒有其他的可能性呢?也許使用OpenGL?
最好, Alex。
這絕對是一個有前途的方法,但可能並非所有的視頻序列已經存儲在我的設備上,當第一個播放開始時,我必須同時下載它們。因此,「連接」不適合我。 –
@ A.Wolf流式傳輸比如何? –
當然,它「感覺」類似於流式傳輸,但我們沒有連續的幀流。每個視頻序列都是幀的組合,比如約2秒的視頻。 –