音视频处理中通常是用ffmpeg进行软件音视频编解码aac/h264编码,但其运行速度过慢消耗cpu占用率。因此需要寻找音视频硬件编解码方法。
rk3588系列芯片自带音视频硬件编解码框架ffmedia或者mpp,其内部原理是配合内部硬件rga内存,把音视频数据读入内部rga内存中进行Mpp硬件编解码计算,包括h264编码输出编码裸流文件,并读入h264裸流文件,进行硬件解码并保存为mp4文件。
编程方法,gitlab下载ffmedia_release,参考官方维基教程文档,下载并交叉编译参考例程。例程框架采用生产者消费者模式,一环一环前后配合,上一步的输出是下一步的输入,运行时只需启动第一步即可,第一步没有生产者。编码时需要先将图片数据读入rga中,再进行编码encmpp类调用。解码是调用media_decmpp类,解码后的数据可以通过调用回调函数setcallback()处理编码后输出数据。
最终的输出结果可以写入mp4文件,或者通过rtsp流推出到服务器地址。同时ffmedia也支持从rtsp拉流,直接进行h264编码后保存本地或进行rtsp推流远端。
硬件编解码的代码可以参考上传资源。