我到目前爲止創建的庫只有從文件或InputStream
解碼的方法。我有一個ByteBuffer
與OGG vorbis數據,我需要它解碼爲PCM,而不必先寫入文件。如何解碼來自ByteBuffer的OGG vorbis數據?
0
A
回答
3
這個問題似乎有2個部分。 1)獲取Java Sound來處理OGG Vorbis格式。 2)避免文件。
對於(1),Java Sound API允許通過服務提供者接口添加額外的格式。這個想法是將一個編碼器/解碼器放入一個Jar中,並使用標準路徑和文件格式來標識編碼/解碼的類。
對於(2),它僅僅是將一個InputStream和所需的AudioFormat提供給AudioSystem靜態函數的相關方法。例如。 (僞代碼)
byte[] b = byteBuffer.array();
ByteArrayInputStream bais = new ByteArrayInputStream(b);
InputStream is = new InputStream(bais);
AudioInputStrream aisOgg = AudioSystem.getAudioInputStream(is);
AudioInputStrream aisPcm = AudioSystem.
getAudioInputStream(pcmAudioFormat, aisOgg);
1
您可以使用ByteArrayInputStream,它是InputStream的子類。 如果您的數據流非常大,您可能必須寫入文件。
相關問題
- 1. C++ - FFmpeg Ogg/Vorbis解碼
- 2. 如何解碼ogg vorbis文件java?
- 3. 問題編碼WAV成的Ogg Vorbis
- 4. 用的Ogg Vorbis格式
- 5. 使用沒有Ogg的Vorbis?
- 6. 將TargetDataLine數據編碼爲Ogg Vorbis文件
- 7. 使用Ogg Vorbis SPI解碼.ogg文件對於小文件大小失敗
- 8. Ogg Vorbis標頭規格
- 9. 如何將錄製的語音編碼爲ogg vorbis?
- 10. 的Ogg/Vorbis格式:_ov_fopen無法找到
- 11. 用於Windows的Python Ogg Vorbis包裝
- 12. objective c - 將mpmediaitem轉換爲ogg vorbis
- 13. Audio Ogg Vorbis Android默認瀏覽器
- 14. 在Python中將wav轉換爲ogg vorbis
- 15. Vorbis SPI爲OGG文件拋出UnsupportedAudioFileException
- 16. 將ogg vorbis編碼添加到我的項目
- 17. OGG Vorbis:已定義但未使用 - 如何抑制?
- 18. 如何在Silverlight中播放ogg vorbis文件?
- 19. 解碼來自讀卡器的數據
- 20. 來自現有ByteBuffer區域的新Dart ByteBuffer?
- 21. 解碼Ogg/Opus文件
- 22. java,ByteBuffer來解析文件中的數據
- 23. 如何在web.py中解碼來自github的POST數據?
- 24. 如何使用MediaCodec解碼來自RTSP服務器的數據?
- 25. 我如何解碼來自TCP套接字的數據
- 26. 在Cocos2d-x中如何urlencode和解碼來自webservice的數據
- 27. Adobe Flex使用Ogg Vorbis編碼器將「.ogg」文件轉換爲與Sound類一起播放
- 28. 使用Vorbis和n音訊播放OGG文件
- 29. 如何從ByteBuffer讀取數據
- 30. JVM如何將數據存儲到ByteBuffer?
哦我不知道我可以從bytearray創建輸入流,但是我真的只有1個問題,pcm直接打開,java spi不會觸及它。 – Anon 2010-10-21 13:26:14