本文,记录Hi3516A芯片,搭载FFmpeg,利用共享内存,并实现FFmpeg的内容读取码流数据,实时RTMP推流至服务器。
项目需求:
- 编码H264裸流,Hi3516A实现编码;打包为FLV,FFmpeg利用RTMP推流。
- 分为两个进程,数据通信利用IPC--共享内存实现
- 要求:实时推流
学习主要参考资料:
- FFmpeg源码的example/avio_reading.c,正是FFmpeg自身提供用户学习的自定义IO例子(这个例子非常简单,直接学习)
- 雷霄骅师兄的《最简单的基于FFmpeg的内存读写的例子:内存转码器》,链接(其实并不简单,因为涉及内容很多的)
- FFmpeg源码--个人图解分析--av_read_frame()
读写内存的关键函数备注:
- 初始化自定义的AVIOContext,指定自定义的回调函数。
- 自己写回调函数。注意函数的参数和返回值(尤其是返回值)。
初始化自定义IO流程: