白小花同学 2014-09-30 08:09
浏览 4062

如何播放科大讯飞录音后的pcm?

用这个方法播放的话全是噪音,因为播放要在listview的item中进行,而且要有图片的变换,所以用thread效果不好。
public void play() {

    // Get the file we want to playback./storage/emulated/0/oral/pcm/14091714280386951041300.pcm
    File file = new File("/storage/emulated/0/oral/pcm/14091714280386951041300.pcm");
    // Get the length of the audio stored in the file (16 bit so 2 bytes per short)
    // and create a short array to store the recorded audio.
    int musicLength = (int)(file.length()/2);
    short[] music = new short[musicLength];
    try {
        // Create a DataInputStream to read the audio data back from the saved file.
        InputStream is = new FileInputStream(file);
        BufferedInputStream bis = new BufferedInputStream(is);
        DataInputStream dis = new DataInputStream(bis);

        // Read the file into the music array.
        int i = 0;
        while (dis.available() > 0) {
            music[i] = dis.readShort();
            i++;
        }

        // Close the input streams.
        dis.close();    

        // Create a new AudioTrack object using the same parameters as the AudioRecord
        // object used to create the file.
        AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
                44100,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                musicLength*2,
                AudioTrack.MODE_STREAM);
        // Start playback
        audioTrack.play();
        // Write the music buffer to the AudioTrack object
        audioTrack.write(music, 0, musicLength);
        audioTrack.stop() ;

    } catch (Throwable t) {
        Log.e("AudioTrack","Playback Failed");
    }
}
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
    • ¥30 3天&7天&&15天&销量如何统计同一行
    • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
    • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
    • ¥15 vs2019中数据导出问题
    • ¥20 云服务Linux系统TCP-MSS值修改?
    • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)