我需要能夠從Android系統的C++端自定義文件格式流式傳輸音頻。我正在移植一個自定義媒體播放器,並需要能夠打開一個自定義文件並從中流式傳輸音頻。這一點很重要,因爲我不認爲將整個播放器移植到JAVA從性能角度來說是可行的,並且通過JNI接口移動音頻緩衝器,我相信這樣做會太慢而不能保持體面的幀速率。我可以通過OpenGL ES處理NDK端的視頻,但音頻我不知道如何做到這一點。Android從C++端播放原始音頻
2
A
回答
1
NDK目前不支持播放音頻幀。你必須使用java AudioTrack API來實現這一點。
2
我建議你通過JNI傳遞音頻,看看它是如何實際執行的。我發現JNI實際上非常高效(如果正確實施),並且如果它足夠快以滿足您的需求,不會感到驚訝。
只是關於實現的一個註釋,不要讓Java在每次想要傳遞音頻時都創建一個緩衝區,只需在Java中創建一個緩衝區(或者通過JNI),然後在每次需要時使用memcpy創建一個緩衝區更新。
另外,你應該注意到Android上的所有音頻類目前都是用C++編寫的並且通過JNI運行。如果它的速度足夠快(我目前正在開發一款遊戲,我們可以在一些框架上提交超過0.5MB的Java音頻數據到AudioTrack中),那麼它可能不會太壞轉到另一個基本相同的操作,即鎖定緩衝區,寫入,解鎖到音頻以及鎖定緩衝區,讀取音頻類中的解鎖。
相關問題
- 1. 原始音頻播放5
- 2. 從Android的原始文件夾播放音頻
- 3. 無法播放原始音頻文件
- 4. 用QPython audiostream原始PCM音頻播放
- 5. 如何播放基本原始的端口音頻
- 6. Android音頻播放
- 7. 從Android音軌播放音頻
- 8. 原始聲音播放
- 9. Android中的放音音頻播放
- 10. 播放HTML5音頻時,原生iOS音樂播放器暫停
- 11. android音頻播放器
- 12. Android播放音頻文件
- 13. Android - 順序音頻播放?
- 14. Android播放音頻一次
- 15. Android音頻播放器
- 16. 從資產順序播放音頻 - Android
- 17. 從SD卡播放音頻Android Mediaplayer
- 18. Android - 從聽筒播放音頻
- 19. 有沒有方法在Android API中播放原始音頻/視頻流?
- 20. 從媒體播放器播放音頻
- 21. AudioTrack Android從原始文件夾播放聲音
- 22. 播放音頻
- 23. 如何從Android的原始文件夾播放視頻?
- 24. iPhone中的原生音頻播放器
- 25. 在媒體播放器上從MediaStore播放音頻Android
- 26. 安卓播放音頻文件在/ RES /按文件名原始
- 27. iPhone,以字節形式播放原始數據作爲音頻
- 28. 使用NAudio播放非PCM原始音頻
- 29. 如何在iOS中使用原始數據播放音頻?
- 30. 播放mp3原始音頻數據而不寫入文件