JDS*_*JDS 6 java audio android
在我的Android应用程序中,我正在录制用户的声音,我将其保存为.3gp编码的音频文件.
我想要做的是打开它,即表示音频样本的序列x [n],以便执行一些音频信号分析.
有谁知道我怎么能这样做?
您可以使用Android MeidiaCodec类来解码3gp或其他文件.解码器输出是标准PCM字节阵列.您可以直接将此输出发送到Android AudioTrack类,以播放或继续使用此输出字节数组进行进一步处理,例如DSP.要应用DSP算法,必须将字节数组转换为float/double数组.获取字节数组输出有几个步骤.总之,它看起来如下:
实例化MediaCodec
String mMime = "audio/3gpp"
MediaCodec mMediaCodec = MediaCodec.createDecoderByType(mMime);
Run Code Online (Sandbox Code Playgroud)创建媒体格式并配置媒体编解码器
MediaFormat mMediaFormat = new MediaFormat();
mMediaFormat = MediaFormat.createAudioFormat(mMime,
mMediaFormat.getInteger(MediaFormat.KEY_SAMPLE_RATE),
mMediaFormat.getInteger(MediaFormat.KEY_CHANNEL_COUNT));
mMediaCodec.configure(mMediaFormat, null, null, 0);
mMediaCodec.start();
Run Code Online (Sandbox Code Playgroud)从MediaCodec捕获输出(应在线程内处理)
MediaCodec.BufferInfo buf_info = new MediaCodec.BufferInfo();
int outputBufferIndex = mMediaCodec.dequeueOutputBuffer(buf_info, 0);
byte[] pcm = new byte[buf_info.size];
mOutputBuffers[outputBufferIndex].get(pcm, 0, buf_info.size);
Run Code Online (Sandbox Code Playgroud)此Google IO谈话可能与此相关.
| 归档时间: |
|
| 查看次数: |
5766 次 |
| 最近记录: |