如何使用Android MediaPlayer按字节块播放音频数据



我是音频格式的新手。

当我从设备B接收到音频数据时,我正试图在设备A上逐块播放音频数据。问题是,只是一块一块地播放不会产生任何声音。如果我把所有的方块组合起来,然后玩,效果很好。但我想让应用程序播放实时数据,这意味着我想在收到部分音频数据的那一刻播放,即使竞争音频文件尚未发送。我想区块必须以特定的格式才能播放。

我在网上搜索了一下,发现MPEG_4可以分块播放,只要每个块都有一个标题。我想知道是否可以手动为每个区块添加一个标头。

我尝试记录多个样本,注意到它们在开头都有公共字节,如下所示:

0000 0018 6674 7970 6d70 3432 0000 0000
6973 6f6d 6d70 3432 0000 ....the rest..

这些公共字节是标题吗我想知道设备a是否有某种方法可以判断某个区块是否可以播放,这样我就可以在收到区块后立即播放它?

想一想这个问题就会有帮助!提前感谢!

我想自己回答这个问题。

首先,不要坚持使用MediaPlayer,因为它不能录制PCM文件。

实际上,PCM文件满足所有要求,因为它应用了原始文件格式(意味着它没有被压缩(。可以逐帧播放PCM文件。一旦在记录器和播放器中定义了采样率和其他参数,帧的大小(例如640字节(就被固定。

同时检查AudioRecordAudioTrack类,因为它可以录制和播放PCM文件。

最新更新