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

标签: | 发表时间:2019-06-18 13:36 | 作者:
出处:https://www.jianshu.com

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

     H264 SEI 基本知识介绍:

     SEI 全称:Supplemental Enhancement Information  

     SEI Nal Unit Type: 6

     SEI 语法定义:

     Supplemental enhancement information RBSP syntax:

     sei_rbsp( ) {  

     do  

       sei_message( )   

     while( more_rbsp_data( ) )  

     rbsp_trailing_bits( )  

   }  

   Supplemental enhancement information message syntax:

    sei_message( ) {   

      payloadType = 0  

      while( next_bits( 8 ) = = 0xFF ) {  

       ff_byte /* equal to 0xFF */ 

       payloadType += 255  

     }  

     last_payload_type_byte                                

     payloadType += last_payload_type_byte  

     payloadSize = 0  

     while( next_bits( 8 ) = = 0xFF ) {  

         ff_byte /* equal to 0xFF */     

         payloadSize += 255  

     }  

     last_payload_size_byte 

     payloadSize += last_payload_size_byte  

     sei_payload( payloadType, payloadSize )           

    }  

      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消息而已。第三个是完全和视频保持同步,这个是其他传输通道无法做到的.

相关 [直播 系统 中使] 推荐:

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

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

为了解决弹幕喷子,直播平台Twitch研发了一个深度学习系统

- - TECH2IPO/创见
从电子邮件到论坛,从论坛到微博,再从微博到现在的视频直播. 当人们在网上发言的速度越来越接近口语的时候,也就给网络喷子带来了越来越多的便利. 虽然从人类学会说到现在,还没有什么办法能阻止人类之间互相对骂. 但网络空间不比线下,一个人用嘴骂人只能被少数人听到,而在网上却可能影响几千人几万人. 在最新一季的南方公园中,甚至认为网络喷子是川普当选和第三次世界大战以及人类登上火星的主要原因.

聊聊高并发长连接架构:百万在线的美拍直播弹幕系统如何实现

- -
导读:直播弹幕是直播系统的核心功能之一. 如何迅速作出一个有很好扩展性的弹幕系统. 相信很多工程师/架构师都有自己的想法. 本文作者是美拍的架构师,经历了直播弹幕从无到有,从小到大的过程. 本文是作者对构建弹幕系统的经验总结. 王静波,毕业于西安交通大学,曾任职于网易和新浪微博,微博工作期间负责开放平台业务和技术体系建设.

现场直播

- 纸条 - 新闻跟帖局
核心提示:8月29日上午,福建气象台发布“沿海地区台风警报”与“台风黄色预警信号”称,台风“南玛都”可能于30日白天在福建省中南部沿海登陆. 受台风影响,福建自29日起3日内多地将有大雨到暴雨. [查看原文]好友向您推荐这条跟贴. 网易福建省泉州市网友 [小小小书童] 的原贴:1. 你好,主持人,我现在在泉州惠安西沙湾,现在风力非常大,屁股对准海边保你菊花都被吹开,现场的情况就是这样,现在把画面交给演播室.

E3大展直播

- 杯子 - 译言-电脑/网络/数码科技
来源Live from Microsoft\'s E3 2011 keynote!.   1:59PM 是否期待今年用声控操作Xbox上的一切呢.   1:58PM 2012年假期发布.    1:57PM Xbox 360新纪元即将到来  .   1:56PM 使命召唤的下载内容将会首先登陆XBOX 360.

HTML5 视频直播(一)

- - JerryQu 的小站
前不久工作中遇到了在移动 WEB 端直播视频的需求,研究了一下相关技术,记录一下. 目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前就只有 HLS 能用,我们重点介绍它. HTTP Live Streaming(简称 HLS)是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了对 HLS 的支持.

[原]用RED5做直播

- - 上善若水 厚德载物
服务端用Java web或red5 server即可,直播和收看都是用Flash Builder 4做的flash. red5最新版已经更新到1.0.5 ,需要JDK8的支持. RED5主页: https://github.com/Red5. 服务器端用Java做web工程,主类继续ApplicationAdapter 空实现即可.

Web 直播流的解析

- - IT瘾-geek
Web 进制操作是一个比较底层的话题,因为平常做业务的时候根本用不到太多,或者说,根本用不到. 现在比较流行的就是音视频的处理,怎么说呢. 如果,有涉及直播的话,那么这应该就是一个非常. 我这里就不废话了,先主要看一下里面的基础内容. 首先,一开始我们是怎么接触到底层的 bit 流呢. 记住:只有一个对象我们可以搞到 bit 流 --> ArrayBuffer.

WebRTC 点对点直播

- - SegmentFault 最新的文章
摘自: villainhr. WebRTC 全称为: Web Real-Time Communication. 它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer(就是浏览器间)的视频交互. 实际上,细分看来,它包含三个部分:. MediaStream:捕获音视频流.

[直播]正直播CNN乔布斯逝世特别报道

- 洞箫 - cnBeta.COM
现在正在直播美国CNN的乔布斯逝世特别报道. 点击进入直播间(iOS用户暂不可观看)(海外入口).