踩坑血泪史
MediaCodec
MediaCodec是Android原生提供的API,用于编解码操作,相信很多小伙伴都玩过。相对于其他API接口,MediaCodec的Java层代码较浅,主要逻辑都使用C++实现,一旦出现问题,报错信息不能充分的说明问题所在,所以在此记录鄙人使用过程种遇到的各种问题,供后来人参考。
本文主要涉及音视频编码流程。
MediaRecoder
状态机
MediaRecorder的生命周期比较重要,不同的生命周期对应不同的状态,不同的状态对应不同的可操作性方法。不按状态调用错误方法都会导致运行时错误。状态转换图可以在官网找到。
保存到本地文件
MediaRecorder可以很方便的将录制文件保存为本地文件,只要在设置outputFile为一个可用的路径即可。
注意两个点:
- 确保应用有权限写入目标文件
- 遵守参数设置顺序,参考如下javadoc
/**
* Pass in the file object to be written. Call this after setOutputFormat() but before prepare().
* File should be seekable. After setting th