【问题标题】:Read byte array from audio file and play file using AudioTrack从音频文件中读取字节数组并使用 AudioTrack 播放文件
【发布时间】:2015-09-05 04:05:43
【问题描述】:

我想将 sdcard 中的音频文件读入字节数组。并使用此字节数组将文件播放到 AudioTrack 中。

喜欢AudioTrack这样播放文件

   track.play();                       
   track.write(byte_Arr,0,byte_Arr.length);

【问题讨论】:

    标签: android bytearray audiotrack


    【解决方案1】:

    在这种情况下播放音频的最简单方法是读取“wav”文件。如果您想阅读另一种格式,例如“mp3”,您将不得不使用另一个音频播放器类,例如MediaPlayer。其用法示例如下:

    String filePath = Environment.getExternalStorageDirectory()+"/yourfolderName/yourfile.mp3";
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setDataSource(filePath);
    mediaPlayer.prepare();   
    mediaPlayer.start();
    

    如果您仍想使用 AudioTrack 进行播放,那么您需要一个解码器。这可能是一项非常复杂的任务,因此我们将继续处理“wav”文件。

    “wav”文件具有与“mp3”等其他格式一样的标题。

    为此,您必须阅读标题。您必须找出文件的采样率、位深度和通道配置。您可以通过研究了解如何从标题中获取这些信息。我不确定您是否真的想阅读“wav”文件,因此不提供有关标题的更多详细信息,但您可以查看:

    Wave format

    如果您只知道采样率、位深度和通道配置,那么您可以绕过标头。它通常占据文件的前 44 个字节,然后是原始 PCM 数据。您可以使用BufferedReader 读取该数据。

    String filePath = Environment.getExternalStorageDirectory()+"/yourfolderName/yourfile.wav";
    BufferedReader br = new BufferedReader(new FileReader(filePath));
    File mFile = new File(filePath);
    long fLength = mFile.length();
    char[fLength - 44] buffer;
    br.Read(buffer, 44, fLength - 44);
    br.close();
    // Additional tasks...
    

    上面的代码我不确定,因为我没有尝试过。

    【讨论】:

    • 您应该以 wav 格式保存您的记录。看看这个:link你可以加载它然后机会它的频率。你想要一个代码示例吗?
    • 是的兄弟,如果你能提供我的代码示例,那就太好了,谢谢
    • 这是用于从麦克风录制音频,然后将其保存到文件:link。另请查看:link。很抱歉没有给出完整的例子。使用BufferedReader 读取文件内容。在我回答的最后一个代码示例中,有一个名为buffer 的字符数组。使用AudioTrackWrite 函数将该缓冲区写入AudioTrack。使用SetPlaybackRate函数改变频率。
    • 你到底卡在哪里了?
    【解决方案2】:

    您可以像这样设置路径,而不是从音频文件中读取字节数组

    MediaPlayer mp = new MediaPlayer();
    mp.setDataSource("/mnt/sdcard/yourdirectory/youraudiofile.mp3");
    mp.prepare();
    mp.start();
    

    【讨论】:

    • 小心使用 mp3 许可证!
    • @Salivan 你是什么意思? :D
    • @AjayShrestha 实际上我想使用音轨播放文件,因为在音轨中我可以更改频率,因此我可以将一种声音更改为另一种声音。我正在开发语音转换器应用程序
    • 我的意思是使用 MP3 技术开发应用程序需要您支付版税。因此,如果可能,最好使用除 mp3 之外的其他编解码器。 :) 直到我在为我的应用程序检查许可证时发现它时才知道这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多