【发布时间】:2015-02-11 12:25:31
【问题描述】:
我可以使用 NDK AMediaCodec API 成功解码 AAC,但没有播放音频。
这是我的配置:
AMediaFormat_setString( format, AMEDIAFORMAT_KEY_MIME, "audio/mp4a-latm" );
AMediaFormat_setInt32( format, AMEDIAFORMAT_KEY_CHANNEL_COUNT, 2 );
AMediaFormat_setInt32( format, AMEDIAFORMAT_KEY_SAMPLE_RATE, 44100 );
AMediaFormat_setInt32( format, AMEDIAFORMAT_KEY_IS_ADTS, 0 );
uint8_t es[2] = { 0x12, 0x12 };
AMediaFormat_setBuffer( format, "csd-0", es, 2 );
这就是我要做的解码:
ssize_t inputIndex = AMediaCodec_dequeueInputBuffer( decoder, kInputTimeout );
uint8_t* inputBuf = AMediaCodec_getInputBuffer( decoder, inputIndex, &inputSize );
// Copy AAC data into inputBuf ...
AMediaCodec_queueInputBuffer( decoder, inputIndex, 0, aacSize, pts, 0 );
ssize_t outputIndex = AMediaCodec_dequeueOutputBuffer( decoder, &outputBufferInfo, kOutputTimeout );
if( outputIndex >= 0 )
{
AMediaCodec_releaseOutputBuffer( decoder, outputIndex, true );
}
我没有收到任何错误,outputBufferInfo.presentationTimeUs 正在适当更新,所以它似乎正在解码。但是没有音频输出。 releaseOutputBuffer 这样做是为了音频吗?我尝试将其 render 布尔参数设置为 true 和 false,但我对两者都保持沉默。
MediaCodec 是否像输出视频一样输出音频?
【问题讨论】:
标签: android audio android-ndk aac android-mediacodec