网页flash直播 抓取(做一个简单的、输出H.264直播流的rtmpserver )

优采云 发布时间: 2021-12-26 09:14

  网页flash直播 抓取(做一个简单的、输出H.264直播流的rtmpserver

)

  实现rtmp服务器输出h264直播

  RTMP(Real Time Messaging Protocol)是一种常见的流媒体协议,用于传输音视频数据,结合flash,广泛应用于直播、点播、聊天等应用,以及pc、移动和嵌入式。流媒体开发中经常遇到的协议。我曾经写过一篇文章《RTMP协议发送H.264编码和AAC编码的音视频》,简单介绍了如何在自己的程序中使用rtmp协议,但是那篇文章主要讲的是如何实现一个rtmp直播的发布方面,主要关注的是“集合-编码-rtmp发布”的流程。这篇文章的主要内容就是跟大家分享一下,制作一个简单的输出H.264直播流的rtmp服务器需要实现哪些功能和步骤。

  普通rtmp服务器

  众所周知的rtmp服务器有很多,包括商业程序和开源程序。简要列表如下:

  开源项目

  

  商业流程

  

  当然还有其他一些开源的、商业的rtmp服务器(比如ffserver),我就不一一列举了。我没有一一尝试,但是从他们的说法来看,一般来说,商业rtmp程序比开源程序支持更多的协议和更多的平台。至于哪个更好,不好说。我推荐的是crtmpserver,它的性能很高,号称支持“千同时连接”,目前它的开发社区非常活跃。但缺点是代码量有点大,而且还在不断增加。

  rtmp server的功能比较复杂,实现起来比较困难。如果您需要功能齐全的 rtmp 服务器,您可以选择其中之一。如果你的需求和我的一样,那只是一个简单的。 , 输出H.264直播的rtmp服务器,那需要自己设计实现了。

  rtmp 服务器与播放器的交互

  我们需要实现的是:一个支持flash播放协议,输出H.264直播流的rtmp服务器。首先要了解rtmp服务器和flash播放器客户端的交互过程。阅读《rtmp规范1.0》即可理解,我这里总结一下。

  

  基本上一个rtmp服务器实现了上述6点交互协议,可以支持flash播放,流畅输出h.264视频流。

  设计与实现

  知道了交互过程,我们就可以设计和实现自己的Rtmp服务器了。由于RTMP协议是基于TCP协议的,所以rtmp服务器本质上是一个TCP服务器,其逻辑结构与普通的TCP服务器基本类似。

  

  其实librtmp已经提供了基本的rtmp消息读取和传输,可以在librtmp的基础上进行开发,实现各种rtmp协议的封装和传输,可以从设备、文件或者网络中获取视频数据封装成Rtmp数据报文发送给flash播放器完成播放。

  在另一篇《RTMP协议发送H.264编码和AAC编码的音视频》中,我已经详细介绍了librtmp的编译和使用,有兴趣的可以看看。那篇文章讲的是rtmp协议视频发布端。和发布端一样,rtmp服务器发送给flash播放器的视频数据流也需要先发送“AVC序列头”,其中收录

重要的编码。如果没有信息,Flash 播放器将无法对其进行解码。以下代码是rtmp服务器收到播放请求后从“H264Reader”获取并发送的播放过程。

  

  ++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线