Android MediaCodec解码AAC,AudioTrack播放PCM音频

本文介绍了在Android上使用MediaCodec解码AAC音频,并通过AudioTrack播放PCM数据的过程。首先,通过MediaCodec创建AAC解码器并设置解码参数,包括采样率和声道数等。然后,解码AAC数据为PCM格式,并初始化AudioTrack进行播放。最后,提供了一个Demo的下载链接,供读者实践操作。
摘要由CSDN通过智能技术生成

   音频的编解码使用MediaCodec的方法是很相似的,由于之前做的项目是要实现全双工通信,所以在手机录音编码之后发送给IPC端的同时,还要解码来自IPC端的音频数据并播放,因此学习了AAC编解码。MediaCodec的编解码能力还是有限的,如果需要做专业的音视频编解码最好是选用ffempeg,功能齐全,支持的格式也比较多。还是先来学习一下MediaCodec这个安卓自带的编解码工具吧!

跟编码一样,要解码首先初始化解码器,告诉它你需要解码的音频格式,是否带ADT头,如果带了,头的格式和内容是什么

private MediaCodec audioDecoder;//音频解码器    
audioDecoder = MediaCodec.createDecoderByType("audio/mp4a-latm");

创建一个音频的解码器,初始化audioDecoder,具体的数据类型Type如下:

     * <li>"video/x-vnd.on2.vp8" - VP8 video (i.e. video in .webm)
     * <li>"video/x-vnd.on2.vp9" - VP9 video (i.e. video in .webm)
     * <li>"video/avc" - H.264/AVC video
     * <li>"video/hevc" - H.265/HEVC video
     * <li>"video/mp4v-es" - MPEG4 video
     * <li>"video/3gpp" - H.263 video
     * <li>"audio/3gpp" - AMR narrowband audio
     * <li>"audio/amr-wb" - AMR wideband audio
     * <li>"audio/mpeg" - MPEG1/2 audio layer III
     * <li>"audio/mp4a-latm" - AAC audio (note, this is raw AAC packets, not packaged in LATM!)
     * <li>"audio/vorbis" - vorbis audio
     * <li>"audio/g711-alaw" - G.711 alaw audio
     * <li>"audio/g711-mlaw" - G.711 ulaw audio

根据具体需求选择Type来创建解码器,本例子解码的是AAC音频数据所以写入"audio/mp4a-latm"。

接下来是设置解码参数,使用MediaFormat来描述相关数据:

MediaFormat mediaFormat = MediaFormat.createAudio
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值