2016-10-11 137 views
1

我開發基於聲音和視頻記錄的Android應用。我希望在預覽和捕捉視頻和聲音時實時播放耳機中的麥克風音頻。Android:同時錄製原始音頻和錄製視頻

我現在有,精細單獨工作:

1)使用超能力庫進行錄音和播放回實時(預覽和錄製期間)。在場景後面,它通過將緩衝區推送到輸出端(耳機)來直接與C++的AudioRecord工作。目標是實時應用原聲音頻效果。

2)捕獲視頻與mediaRecorder

當音頻播放運行時,我嘗試推出視頻記錄,它開始崩潰:

E/MediaRecorder: start failed: -2147483648 

我想,我不能推出兩款記錄同時處理。我認爲使用AudioRecord或Superpowered lib是處理原始音頻的好方法,但我無法弄清楚如何錄製視頻而不會與當前的音頻錄製相沖突。

那麼有沒有辦法實現我的功能?

(minSdk 16)

+0

我設法同時使用沒有audioSource的MediaRecorder錄製視頻(並避免MediaMuxer沒有aspi16的複雜性MediaCodec)和我的Superpowered lib音頻。之後,我使用ffmpeg合併我的兩個文件。 – ddp

回答

1

根據bigflake

的MediaCodec類第一Android中4.1(API 16)變得可用。它被添加來允許直接訪問設備上的媒體編解碼器。

在Android 4.3(API 18)中,MediaCodec被擴展爲包含一種通過Surface提供輸入的方法(通過createInputSurface方法)。這允許輸入來自相機預覽或OpenGL ES渲染。

所以,如果有可能,請想想MinSDK增加至18,並使用AudioVideoRecordingSampleHWEncoderExperiments作爲例子。

+0

其實我不能增加到18.我設法得到預覽 – ddp

+0

我設法使用MediaCodec在SurfaceView上獲取相機的預覽,這是一個好的開始。記錄我肯定會同時寫入一個文件。通常我的音頻部分可以同時錄製。 – ddp

+0

音頻和視頻之間存在延遲 –