如何在RTSP/RTMP直播过程中加入SEI扩展数据发送和接收解析
在直播系统中,除了直播音视频之外,有时候还想从主播端发布文本信息等,这些信息可以不通过视频传输通道发送给用户播放端,但如果传输的数据想和视频保持精准同步,那最好的办法就是这些信息和视频数据打包在一起传输,并通过h264 sei方式就可以把数据放入h264 Access Unit中传输。
扩展SEI有使用场景:
1、公告广播:推送将相对/绝对时间戳/时间/公告内容发到播放端,播放端实时接收消息并做相应的逻辑处理;
2、冲顶大会:推流端实时将题目分发到播放端,借助于大牛直播SDK低延迟特性,轻松实现“音-画-题”同步接收;
3、直播:推流端将歌词/字幕分发到播放端,播放端实时绘制出歌词;
4、应急指挥/单兵:推送端将GIS信息/现场采集到的数据实时写入并分发到播放端;
5、在线教育:推流端将激光笔和涂鸦操作分发到播放端,播放端实时划圈划线,实现特定特效。
扩展SEI调用demo(以Windows平台为例):
1. 启动推送端软件: SmartPublisherDemo.exe,可到 Github 下载大牛直播SDK的相关测试软件或demo源码。
2. 做如下配置:
3. 可以点击自动发送文本按钮;
4. 打开播放端SmartPlayer.exe查看数据传输播放效果:
扩展SEI调用demo代码说明:
1. 推送端(对应工程:WIN-PublisherSDK-CPP-Demo):
2. 播放端(对应工程:WIN-PlayerSDK-CPP-Demo):
SEI优势
1. 不依赖于相关协议,rtsp和rtmp都可以,其他协议只要播放端支持SEI解析的都可以使用;
2. 兼容性很好,如果播放端不支持自定义SEI数据解析,把SEI数据丢给H264解码器,解码器只是忽略掉,并不影响正常播放,上述操作也可以用VLC来播放,播放正常,只是不显示SEI消息;
3. 在视频帧携带,完全和视频保持同步,这个是其他传输通道无法做到的。