美文网首页
关于使用AudioTrack播放音频PCM数据

关于使用AudioTrack播放音频PCM数据

作者: 阑珊处等你 | 来源:发表于2019-08-16 14:45 被阅读0次

    AudioTrack的用法:

    1.创建AudioTrack的对象。

    参数一 streamType 表示使用哪种音频管理策略

                STREAM_VOCIE_CALL 电话声音

                STREAM_SYSTEM                系统声音

                STREAM_RING                      铃声

                STREAM_MUSCI                  音乐声

                STREAM_ALARM                  警告声

                STREAM_NOTIFICATION    通知声

    参数二 sampleRateInHz 采样率  前文提过

    参数三 channelConfig     

                常用的有单声道和双声道。注意区分是录制还是播放。

    参数四 audioFormat        位宽     前文提过

    参数五 bufferSizeInBytes  缓存大小 前文提过

    参数六 mode  播放方式

          方式一  static方式

          需要一次性将所有的数据都写入播放缓冲区,适合播放铃声,较短的音频片段。

          方式二  streaming方式

          按照一定的时间间隔不间断的写入音频数据。(常用方式)

    //采样率

    private int mSampleRate =44100;

    //位宽

    private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;

    private int mMinBufferSize;

    private int streamType = AudioManager.STREAM_MUSIC;

    private int mode = AudioTrack.MODE_STREAM;

    private int mChannelCountOut = AudioFormat.CHANNEL_OUT_MONO;

    private AudioTrackaudioTrack;

    audioTrack =new AudioTrack(streamType, mSampleRate, mChannelCountOut, mAudioFormat, mMinBufferSize, mode);

    2.开启一个子线程写入AudioTrack的缓冲区中

    private void play()throws FileNotFoundException {

    file =new File(rootFile, "test.pcm");

        if (!file.exists()) {

    return;

        }

    audioTrack.play();  //开始

        fileInputStream =new FileInputStream(file);

        outBys =new byte[mMinBufferSize];

        new Thread(new Runnable() {

    @Override

            public void run() {

    int len = -1;

                try {

    while ((len =fileInputStream.read(outBys)) != -1) {

    audioTrack.write(outBys, 0, len);

                    }

    }catch (Exception e) {

    }finally {

    if (audioTrack !=null) {

    audioTrack.stop();

                        audioTrack.release();

                    }

    }

    }

    }).start();

    }

    相关文章

      网友评论

          本文标题:关于使用AudioTrack播放音频PCM数据

          本文链接:https://www.haomeiwen.com/subject/oxofsctx.html