直播系统中使用SEI传输用户自定义数据方案讨论

      在直播系统中,除了直播音视频之外,有时候还想从主播端发布文本信息等,这些信息可以不通过视频传输通道发送给用户播放端,但如果传输的数据想和视频保持精准同步,那最好的办法就是这些信息和视频数据打包在一起传输, 通过h264 sei方式就可以把数据放入h264 Access Unit中传输。

     H264 SEI 基本知识介绍:

     SEI 全称: Supplemental Enhancement Information  

     SEI Nal Unit Type: 6

     SEI 语法定义:

     Supplemental enhancement information RBSP syntax:

 sei_rbsp( ) {      CDescriptor
    do  
       sei_message( )  5 
    while( more_rbsp_data( ) )  
    rbsp_trailing_bits( )  5 
}  

     Supplemental enhancement information message syntax:

sei_message( ) {   CDescriptor
    payloadType = 0  
    while( next_bits( 8 ) = = 0xFF ) {  
        ff_byte /* equal to 0xFF */  f(8)
        payloadType += 255  
     }  
     last_payload_type_byte                                     5u(8)
     payloadType += last_payload_type_byte  
     payloadSize = 0  
     while( next_bits( 8 ) = = 0xFF ) {  
         ff_byte /* equal to 0xFF */       5f(8)
         payloadSize += 255  
     }  
     last_payload_size_byte 5u(8)
     payloadSize += last_payload_size_byte  
     sei_payload( payloadType, payloadSize )            5 
}  

      SEI 语义:

      Supplemental enhancement information RBSP semantics

      Supplemental Enhancement Information (SEI) contains information that is not necessary to decode the samples of coded pictures from VCL NAL units.

      Supplemental enhancement information message semantics

 

      An SEI NAL unit contains one or more SEI messages. Each SEI message consists of the variables specifying the type
payloadType and size payloadSize of the SEI payload. SEI payloads are specified in Annex D. The derived SEI payload
size payloadSize is specified in bytes and shall be equal to the number of bytes in the SEI payload.
ff_byte is a byte equal to 0xFF identifying a need for a longer representation of the syntax structure that it is used within.
last_payload_type_byte is the last byte of the payload type of an SEI message.

 

 

last_payload_size_byte is the last byte of the size of an SEI message

 

    从上面的描述可以看出一个Sei Nal Unit中可以包含多个SEI消息,每个SEI消息都有一个payloadType,目前h264规定payloadType为5时,sei_playload可以使用户自定义数据, 那么我们就可以利用它来传输数据。

     到此为止SEI基本知识介绍完毕,如果要自己实现代码的话,还需要了解更多细节,建议仔细阅读h264文档,这里不再深入讨论,也欢迎一起交流讨论。接下来进入实践环节。

     先下载软件: https://github.com/daniulive/SmarterStreaming  为方便测试, 下载windows版本就可以.

     rtmp 传输文本信息:

     1. 启动推送端软件: SmartPublisherDemo.exe

     2. 做如下配置:

   

    3. 可以点击自动发送文本按钮

    4. 打开播放端SmartPlayer.exe查看数据传输播放效果:

    rtsp 传输文本信息:

    1. 启动推送端软件: SmartPublisherDemo.exe

    2. 做如下配置:

   

    3. 可以点击自动发送文本按钮

    4. 打开播放端SmartPlayer.exe查看数据传输播放效果:

    总结

从上面的实验可以看出SEI的优势来, 第一个优势是并不依赖于相关协议,rtsp和rtmp都可以,其他协议只要播放端支持SEI解析的都可以使用。 第二个是兼容性很好,如果播放端不支持自定义SEI数据解析,把SEI数据丢给H264解码器,解码器只是忽略掉,并不影响正常播放. 上述操作也可以用VLC来播放,播放正常,只是不显示SEI消息而已。第三个是完全和视频保持同步,这个是其他传输通道无法做到的.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apicloud如何对接大牛直播SDK

随着apicloud的普及,越来越多的用户苦于apicloud下没有一款真正靠谱低延迟的rtmp/rtsp直播播放器苦恼。 鉴于此,大牛直播SDK携手apicloud资深版主,推出apicloud对接方案: 相关接口如下: daniuPlayer 模块概述 本模…

Win11新特性:在平板锁屏界面还有酷炫的3D视差效果

在深入挖掘 Windows 11 系统之后,用户再次发现了隐藏的 Windows 10 Mobile 保留功能。知名破解达人 ADeltaX 表示,如果你的设备有合适的硬件,Windows 11 将在锁屏上有一个很酷的 3D 视差(Paralla)效果。 Win11新特性&…

播放RTMP协议的流媒体的几种选择

播放网络视频,通常解析库我们可以有多个选择 FFMPEG,Daniulive 或者 vitamio。 什么FFMPEG? 官网地址: 地址 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了…

安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流

关于4K分辨率 4K分辨率即40962160的像素分辨率,它是2K投影机和高清电视分辨率的4倍,属于超高清分辨率。在此分辨率下,观众将可以看清画面中的每一个细节,每一个特写。影院如果采用惊人的40962160像素,无论在影院的哪个…

企业微信如何设置发票抬头 管理员在企业微信设置发票抬头的方法介绍

企业微信如何设置发票抬头?公司的发票抬头在企业微信中是由管理员在后台进行设置的,接下来的文章中小编将会带来详细的操作流程,感兴趣的朋友不要错过哦! 管理员在企业微信设置发票抬头的方法介绍 1、管理员在管理后台设置发票抬头信息 管理员登录企…

mingw64+msys2下使用cmake问题

直接pacman -S cmake 安装的并不好用,直接下载windows版本的cmake. 比如安装在D:\\cmake下. 然后设置环境变量 export PATHD:/cmake/bin:$PATH 然后编辑一个 toolchain-mingw64.cmake文件: SET(CMAKE_SYSTEM_NAME Windows) SET(CMAKE_C_COMPILER x86_64-w64-min…

腾讯TIM自动回复内容怎么自定义添加

tim想要使用自动回复,但是有不喜欢自动回复的内容,我们可以自己设置自动回复的内容,该怎么设置呢?下面我们就来看看详细的教程。 1、首先我们打开tim 腾讯TIM自动回复内容怎么自定义添加? 2、找到右上角的鼠标所指的三道杠,鼠…

干货:如何实现RTSP推送H.264、RTSP推送H.265(hevc)

rtsp推送相关的资料和测试软件比较少,本文介绍rtsp推送相关信令和测试效果: 1. rtsp推送流程. 主要分两部分:第一部分先发送信令;第二部分发送rtp包。 信令流程: 1.1 先发送OPTIONS, OPTIONS比较常用,就不做详细说明…

微信公众号文章中的音乐怎么设置自动播放

1、搜微信公众号登录,点网“微信公众号官网”。 微信公众号文章中的音乐怎么设置自动播放? 2、点新建群发。 微信公众号文章中的音乐怎么设置自动播放? 3、进入新建群发,在正文里输入内容。 微信公众号文章中的音乐怎么设置自动播放? 4、在选择…

h264, h265 和 libvpx 比较(h264/avc, hevc 和vp9比较)

好多开发者或公司咨询我们关于H.264和H.265(hevc) 的码率,在此,我们转一篇关于x264,x265, libvpx 比较, 原文出处请点击 ,如有版权问题,请联系我删除. A Large-Scale Comparison of x264, x265, and libv…

钉钉电脑版怎么创建共享文件 钉钉文件共享的方法

1、进入首页,点击首页左侧任务栏的“钉盘”按钮,进入相应页面。 钉钉电脑版怎么创建共享文件? 钉钉文件共享的方法 2、在钉盘页面中,点击“共享文件”按钮,如图所示。 钉钉电脑版怎么创建共享文件? 钉钉文件共享的方法 3、在…

如何支持RTSP播放H.265(HEVC)流

随着H.265的普及,越来越多的开发者希望大牛直播SDK能支持低延迟的RTSP H.265播放,并分享相关经验: 实现思路: 对rtsp来说,要播放h265只要正确解析sdp和rtp包即可. 下面对这些相关内容做一些介绍. 1. H265 Nal Unit …

直播协议的选择:RTMP vs. HLS

前言 随着直播业务的兴起,越来越多的直播平台开始涌现,这火热的程度好像一个应用不带上直播业务出来都不好意思跟人打招呼。想要做一个直播业务,主要包括三个部分:采集推流端、流媒体服务端、播放端。这里不多说,就主…

生命大发的意义 BY 几米

1993年底,我还在广告公司上班。那一年,我在工作上遇到前所未有的低潮。一个寒冷的冬夜,我迷迷煳煳的走进一家位于地下室的命相馆,我还清楚记得,那个纹着两道浓黑夸张柳叶眉毛、声音粗嗄的女相士,用几乎是命…

陌陌怎么发起群活动 陌陌群组发起群活动教程

陌陌是一款好玩的社交类软件,在陌陌上用户可以和好友们组成陌陌群,那么陌陌怎么发起群活动呢,接下来,小编为大家带来陌陌群组发起群活动教程,一起来看看吧! 陌陌怎么发起群活动 陌陌群组发起群活动教程 陌陌发起群活…

Flutter下实现低延迟的跨平台RTSP/RTMP播放

为什么要用Flutter? Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 …

企业微信怎么删除好友 企业微信如何删除成员

1、打开企业微信,点击“通讯录”。 企业微信怎么删除好友 企业微信如何删除成员 2、找到要删除的成员,点击。 企业微信怎么删除好友 企业微信如何删除成员 3、在个人信息页面,点击“⋮”。 企业微信怎么删除好友 企业微信如何删除成员 …

如何推送和播放RTMP H265流 (RTMP HEVC)

rtmp 播放h265 首先要扩展flv协议,国内常用扩展方式是给flv的videotag.codecid增加一个新类型(12)来表示h265(hevc),其他和h264规则差不多,另外和h264不同的地方是要解析HEVCDecoderConfigurationRecord,从HEVCDecoderConfigurationRecord中解…

Win7系统隐藏文件恢复的方法

有不少小伙伴为了自己文件的安全性,选择将自己的文件进行隐藏,但却不知道如何将文件恢复,那么遇到这种问题应该怎么办呢?下面就和小编一起来看看Win7系统隐藏文件恢复的方法吧。 Win7系统隐藏文件恢复的方法 1、首先打开计算机。 Win7系统…

5张图看懂如何实现Windows RTMP实时导播功能

一直以来,好多开发者苦于如何实现RTMP导播数据源实时切换,以下是大牛直播SDK导播切换说明,支持只切换数据源模式,或音视频混音合成输出模式: 数据源: 1. rtmp/rtsp音视频流; 2. 本地屏幕/摄像…