2017-08-22 73 views
0

我有這個用例,其中MediaPlayer的視頻必須傳遞到兩個Surface s。不幸的是,整個Android Surface API缺乏這種功能(或者至少在學習開發者網站後,我無法找到它)。多個android Surface消費者 - 視頻播放到兩個視圖

我有一個simillar用例,其中視頻是由自定義相機模塊生成的,但稍作修改後,我能夠從相機中檢索Bitmap,因此我只在兩個表面上使用了lockCanvas,drawBitmap和unlockAndPost 。有了MediaPlayer,我不知道如何檢索位圖並在適當的時機繼續播放。

另外,我試圖用Allocation爲宗旨,用一個分配作爲USAGE_IO_INPUT,兩成USAGE_IO_OUTPUT,並與ioReceive,具有copyfrom,ioSend方法。但它也是一個死衚衕。對於一些未知的原因,發動機的renderScript是我的平臺上很不穩定,我有很多這樣的錯誤:

android.renderscript.RSInvalidStateException: Calling RS with no Context active. 

當傳遞給RenderScript.create背景是從應用類,或

Failed loading RS driver: dlopen failed: could not locate symbol .... falling back to default 

(我在某處丟失了完整的日誌...)。最後,我無法創建適當的輸入分配類型以與MediaPlayer兼容。由於我的平臺上提到了RenderScript的缺陷,我認爲這是解決這個問題的最後手段。

因此,總結:如何播放視頻(從mp4文件)到兩個曲面?此視頻必須同步。此外,更常見的問題,如何播放視頻到#X Surface可以動態添加,在播放過程中移除?

回答

0

我已通過將多個MediaPlayer具有相同視頻文件源的多個實例解決了我的問題。在做暫停/播放/尋找等基本玩家操作時,我只是在每個玩家身上做這些操作。