转载于:http://www.cnblogs.com/haibindev/archive/2012/04/16/2450989.html

  RTMP(Real Time Messaging Protocol)是常见的流媒体协议,用来传输音视频数据,结合flash,广泛用于直播、点播、聊天等应用,以及pc、移动、嵌入式等平台,是做流媒体开发经常会接触到的协议。我之前曾经写过一篇文章“RTMP协议发送H.264编码及AAC编码的音视频”,简单介绍过如何在自己的程序里使用rtmp协议,不过那篇文章讲的主要是如何实现一个rtmp直播的发布端,主要侧重在“采集-编码-rtmp发布”这样的流程。这篇文章的主要内容是和大家分享下,做一个简单的、输出H.264直播流的rtmp server,需要实现哪些功能和步骤。

常见的rtmp服务器

  有很多知名的rtmp server,其中既有商业程序也有开源程序,简单列举如下:

  开源项目

  商业程序

  当然,还有一些其他的开源、商业rtmp服务器(如ffserver),我就不一一列举了。我并没有一一尝试,不过,从它们的声明来看,一般来说,商业rtmp程序要比开源程序支持更多的协议以及更多的平台,至于哪个更好,这就不好说了。我比较推荐的是crtmpserver,高性能,号称可以支持“thousands of simultaneous connections”,而且它的开发社区目前很活跃。不过缺点是,代码量有点庞大,而且在不断增加当中。

  rtmp服务器的功能比较复杂,要完整实现比较困难,如果你需要的是一个完整功能的rtmp server,那就可以从它们之中选择一个,如果你的需求和我一样,只是一个简单的、输出H.264直播流的rtmp server,那就需要自己来设计和实现。

rtmp server与播放器的交互

  我们需要实现的是:支持flash播放协议、输出H.264直播流的rtmp server,那么首先,我们必须了解rtmp服务器和flash播放器客户端之间是怎样的一个交互流程。通过阅读《rtmp specification 1.0》就可以了解,我这里把它归纳总结一下。

  基本上一个rtmp server实现了以上6点交互协议,就可以支持flash的播放,顺利的输出h.264视频流。

设计与实现

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

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

  我在另一篇文章“RTMP协议发送H.264编码及AAC编码的音视频”中,已经详细介绍了如何编译和使用librtmp,感兴趣的可以去看一下。那篇文章中谈的是rtmp协议视频发布端,和发布端相同的是,rtmp server向flash播放器发送的视频数据流,也是需要首先发送"AVC sequence header",这其中包含的是重要的编码信息,没有的话,flash播放器将无法解码。下面的代码即是rtmp server收到播放请求之后,从"H264Reader"获取并发送的播放流程。

转载于:https://www.cnblogs.com/wenjing309/archive/2013/01/02/2841824.html

rtmp服务器与播放器的交互相关推荐

  1. FFmpeg/WebRTC/RTMP/RTSP/HLS/播放器-音视频流媒体高级开发【零声学院】

    FFmpeg/WebRTC/RTMP/RTSP/HLS/播放器-音视频流媒体高级开发 学习 音视频流媒体高级开发学习 01音视频基础 [录播]0-音视频开发高级课程简介(22分钟) 免费试学 [录播] ...

  2. 【技术分享】Windows平台低延迟RTMP、RTSP播放器接口设计探讨

    背景 我们看过了太多介绍RTSP.RTMP播放相关的技术资料,大多接口设计简约,延迟和扩展能力也受到一定的局限,好多开发者希望我们能从接口设计的角度,大概介绍下大牛直播SDK关于RTMP.RTSP播放 ...

  3. C++ RTMP直播流播放器

    抛开flash,自己开发实现C++ RTMP直播流播放器 众所周知,RTMP是以flash为客户端播放器的直播协议,主要应用在B/S形式的场景中.本人研究并用C++开发实现了RTMP直播流协议的播放器 ...

  4. 【技术分享】如何实现功能完备性能优异的RTMP、RTSP播放器?

    技术背景 这几年,我们对接了太多有RTSP或RTMP直播播放器诉求的开发者,他们当中除了寻求完整的解决方案的,还有些是技术探讨,希望能借鉴我们播放端的开发思路或功能特性,完善自己的产品. 忙里偷闲,今 ...

  5. Windows平台RTMP、RTSP播放器录像模块精细化控制

    技术背景 上篇文章,我们介绍了Unity平台RTMP.RTSP播放器录像功能,这里,我们详细的介绍下,做个RTSP或RTMP拉流端录像模块有哪些需要考虑的技术点? 在我们常规的考量,RTMP或RTSP ...

  6. 跨平台低延迟的RTMP/RTSP直播播放器设计实现

    开发背景 2015年,当我们试图在市面上找一款专供直播播放使用的低延迟播放器,来配合测试我们的RTMP推送模块使用时,居然发现没有一款好用的,市面上的,如VLC或Vitamio,说白了都是基于FFMP ...

  7. 流媒体服务器 客户端播放器方案推荐

    https://github.com/jacke121/stream-rtsp 使用说明: 貌似把rtsp转为webrtc,但是没有把图片编码为webrtc: Example config.json ...

  8. 抛开flash,自己开发实现C++ RTMP直播流播放器

    https://www.cnblogs.com/haibindev/p/3466094.html

  9. 实现输出h264直播流的rtmp服务器 flash直播服务器

    参考自:http://www.cnblogs.com/haibindev/archive/2012/04/16/2450989.html RTMP(Real Time Messaging Protoc ...

最新文章

  1. 团队-团队编程项目作业名称-需求分析;
  2. 启明云端分享| sigmastar ssd201_ffmpeg移植
  3. pcb过孔漏铜_为什么PCB板在生产中会铜线脱落?
  4. Nutch关于robot.txt的处理
  5. SAP Customer Data Cloud的Audit log设置
  6. 修改git历史提交的commit信息
  7. 怎样Interlocked.Increment一个反射得到的field?
  8. “阿里离职女高管”蹭马云热度遭阿里高管打假:重新定义高管
  9. vue路由1.0_【Vue】路由
  10. 字符串之String类
  11. JavaScript调Java
  12. IAR下STM32工程建立基本步骤
  13. 手机抓直播源工具app_香港卫视 手机在线直播 央视源
  14. 多媒体计算机教室的构成,几种常见的学习环境--多媒体综合教室的构成及其教学功能...
  15. WIN7 vc2008【fatal error C1083: 无法打开文件:“Windows.h”: No such file or directory】【cl.exe link.exe手动调用编译】
  16. 财会法规与职业道德【1】
  17. 知己知彼 看CIO如何成功领导80后
  18. 原生JS零魂之问(上)学习笔记‍
  19. Mac 电脑下载 AppStore 中的 ipa 软件包详细流程
  20. 绘制超漂亮的基因差异表达火山图

热门文章

  1. Consul和ZooKeeper的区别
  2. 出场率比较高的一道多线程安全面试题
  3. GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean
  4. 操作系统:连续分配、分页和分段三种存储分配机制的优缺点
  5. 多线程:synchronize、volatile、Lock 的区别与用法
  6. websocket导致spring boot 项目单元测试启动失败的问题解决
  7. Python 函数参数的分类及使用方法
  8. useradd -g mysql mysql_Linux —— useradd -g mysql mysql解析及useradd详解
  9. go http 处理w.write 错误_Go语言中的异常和错误处理简介
  10. 机房空调清理杨柳絮操作