本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。
0.背景知识
本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:RTMP是非常重要的。
使用RTMP技术的流媒体系统有一个非常明显的特点:使用 Flash Player 作为播放器客户端,而Flash Player 现在已经安装在了全世界将近99%的PC上,因此一般情况下收看RTMP流媒体系统的视音频是不需要安装插件的。用户只需要打开网页,就可以直接收看流媒体,十分方便。
目前使用RTMP技术的电视台有如下几个:
CNTV部分点播内容中国教育电视台1直播(rtmp://pub1.guoshi.com/live/newcetv1)
中国教育电视台3直播(rtmp://pub1.guoshi.com/live/newcetv3)
香港电视台直播(rtmp://live.hkstv.hk.lxdns.com/live/hks)
北广传媒移动电视直播(rtmp://www.bj-mobiletv.com:8000/live/live1)
中石化网络电视台直播(rtmp://wowza.sinopectv.cn:1935/live/sinopec)
使用RTMP技术社交直播平台:
六间房
9158
新浪秀场
可以这样概括一下:凡是想实现“无插件直播”的流媒体系统,都会使用RTMP。
1.RTMP在Flash流媒体系统中的使用
RTMP被Adobe开发出来,就是用于在其Flash平台的流媒体系统之间传递数据的。因此想要了解RTMP,需要首先了解Flash流媒体系统。
最简单的Flash流媒体系统由两部分组成:
客户端:Flash Player(一般只有这一种)
注:支持RTMP的基于Flash的播放器除了可以自己开发之外,还有现成的,比如说jwplayer,flowplayer等等。
服务器端:
1.Flash Media Server(FMS):Adobe官方的流媒体服务器。毕竟是商业服务器,其性能应该是最强的,配置是最简单的,但是价格不菲,推荐作为入门学习使用。个人下载使用是不用花钱的。服务器端编程使用ActionScript语言。
官网:http://www.adobe.com/cn/products/adobe-media-server-family.html
可参考教程:
1.FMS开发者向导。这个教程讲的是FMS开发技术,是网友翻译的中文版,学习起来比较方便。这里有英文原版,内容更全:Flash Media Server Delevoper's Guide
注:FMS开发技术方面使用到了ActionScript,可以先找相关教程做一个初步的了解。主要使用Flash CSx进行开发。
2.FMS技术指南。这个教程主要是讲述FMS配置的,第2部分涉及到集群,负载均衡等内容,挺高端的。
2.Red5:开源流媒体服务器,基于Java的。曾经使用过,感觉也还算比较方便,如果商业应用,又买不起昂贵的FMS的话,使用也不错。服务器端编程使用Java语言。
3.还有其他服务器,但目前我还没接触过
2.RTMPdump(libRTMP)的使用
这一章就要开始学习RTMP协议的处理了。
可以使用RTMPdump(libRTMP)进行学习。这是一个C++的开源工程。主要作用是下载RTMP流媒体。首先可以了解一下其使用方法:RTMPdump 使用说明
官网:http://rtmpdump.mplayerhq.hu/
3.RTMPdump(libRTMP)源代码分析
这一章开始学习RTMPdump(libRTMP)的源代码。学习它之前需要有Socket编程的基础。
首先学习《RTMP协议规范》
中文翻译版:http://download.csdn.net/detail/leixiaohua1020/6563059
英文原版:http://www.adobe.com/cn/devnet/rtmp.html
我对其部分内容做的简单分析:RTMP规范简单分析
其次从协议规范中,总结出RTMP协议建立连接的流程:RTMP流媒体播放过程
然后,下载一个windows下可以编译通过的RTMPdump工程(这个工程是很难得!):rtmpdump vs2005版本
(当然,linux下会方便很多,因为RTMPdump就是在linux下开发完成的)
最后,通过调试工程,就可以基本掌握RTMP协议了,我写了一些分析RTMPdump(libRTMP)源代码的文章:
RTMPdump 源代码分析 1: main()函数
RTMPDump(libRTMP)源代码分析 2:解析RTMP地址——RTMP_ParseURL()
RTMPdump(libRTMP) 源代码分析 3: AMF编码
RTMPdump(libRTMP)源代码分析 4: 连接第一步——握手(Hand Shake)
RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
RTMPdump(libRTMP) 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1)
RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)
4.相关应用
libRTMP作用还是很大的,除了可以保存RTMP流媒体之外,还可以发送RTMP流媒体等等。它可以整合到FFMPEG中,下面几篇文章简述了它的应用:
libRTMP使用说明
在FFMPEG中使用libRTMP的经验
(以后更新其他方面......)
相关推荐
在IT行业中,流媒体技术是不可或缺的一部分,尤其在视频直播、在线教育...在实际操作中,不仅要熟悉测试工具的使用,还需对RTMP协议、流媒体服务器以及相关客户端技术有深入理解,才能确保测试工作的全面性和有效性。
**Nginx搭建rtmp流媒体服务器** 在现代互联网中,流媒体服务已经成为不可或缺的一部分,尤其是在直播、在线视频等应用场景中。Nginx作为一个高性能的HTTP和反向代理服务器,也支持通过RTMP协议来搭建流媒体服务器。...
在本文中,我们将深入探讨如何使用CKPlayer播放基于RTMP的流媒体,并了解相关技术背景和实现步骤。 首先,RTMP(Real-Time Messaging Protocol)是由Adobe Systems开发的一种实时传输协议,主要用于将音频、视频...
标题中的“rtmp流媒体”是指Real-Time Messaging Protocol(实时消息传输协议),它是一种广泛用于在互联网上传输音视频流的技术。RTMP被设计用来在服务器和客户端之间高效地进行实时数据交换,尤其是在在线直播领域...
在描述中提到的“基于VLC开发的”,意味着我们讨论的是一个利用VLC媒体播放器技术来实现RTMP流媒体播放的解决方案。VLC是一个开源、跨平台的多媒体播放器,它不仅能够播放多种本地媒体文件,还支持通过RTMP协议播放...
根据提供的文档信息,本文将详细阐述如何使用FFmpeg和Red5搭建一个RTMP流媒体服务器,以及相关的配置和测试步骤。 首先,了解RTMP(Real Time Messaging Protocol)是一种网络协议,它被广泛用于在线直播和流媒体...
在本文中,我们将深入探讨如何使用Qt框架与FFmpeg库来构建一个功能完善的RTMP流媒体播放器。首先,我们要了解这两个关键组件的作用及其在播放器开发中的角色。 **Qt框架** 是一个跨平台的应用程序开发框架,用C++...
压缩包里包含了: Linux下通Nginx搭建RTMP流媒体服务器需要的一系列源码包。 搭建方法可以参考博文: https://blog.csdn.net/xiaolong1126626497/article/details/105378894
Nginx-rtmp流媒体服务器搭建+ffmpeg推流.pdf 本文将对Nginx-rtmp流媒体服务器的搭建和ffmpeg推流进行详细的讲解,从操作系统的选择到Nginx的编译安装,最后到配置Nginx服务和ffmpeg推流的配置。 一、操作系统的...
rtmp学习,搭建rtmp服务器,实现网络直播,对比rstp协议的异同
综合来看,"QT+FFMPEG设计的流媒体播放器"是一个结合了前端UI设计和后端多媒体处理技术的项目,能够有效地处理实时流媒体,实现对RTMP和RTSP流的播放,是学习和开发流媒体应用的宝贵资源。通过理解并实践这个项目,...
在IT行业中,流媒体技术是不可或缺的一部分,尤其是在视频传输领域。本教程将深入探讨如何使用C++语言,结合libRTMP库,实现读取H264编码的视频文件并将其推送到RTMP流媒体服务器的过程。这对于开发实时视频应用或者...
rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流网页播放器rtmp流...
本文将深入探讨如何使用C#语言实现RTMP(Real-Time Messaging Protocol)和RTSP(Real-Time Streaming Protocol)流媒体的播放功能,同时结合提供的“WinFormsSource”源代码文件,为你揭示其背后的关键技术和知识点...
总结,Nginx RTMP流媒体服务器源码为开发者提供了深入了解流媒体服务内部工作原理的机会,同时也提供了定制和优化的可能性。通过学习和分析源码,我们可以更好地理解和控制流媒体服务器的行为,以满足特定的直播或...
搭建RTMP流媒体服务器是构建在线视频直播或点播系统的关键步骤。RTMP(Real-Time Messaging Protocol)协议常用于...不断学习和了解相关的网络协议、流媒体技术和服务器管理,将有助于你更好地构建和维护这样一个系统。
Nginx-RTMP流媒体服务器是基于Nginx的一个扩展模块,用于处理实时传输协议(RTMP)的流媒体内容。它为广播者提供了一个高效且可扩展的平台来分发视频和音频流,广泛应用于在线直播、视频会议、远程教育等场景。OBS...
流媒体技术在现代互联网应用中占据着重要地位,尤其在在线教育、直播、视频会议等领域。RTMP(Real-Time Messaging Protocol)是Adobe Systems开发的一种实时数据传输协议,主要用于音视频流的传输。而Nginx-RTMP是...
HTML播放RTMP流直播加回放的技术涉及到网络流媒体传输协议、HTML5视频播放和多媒体内容处理等多个领域。RTMP(Real-Time Messaging Protocol)是由Adobe Systems开发的一种用于音视频数据实时传输的协议,广泛应用于...
rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root nginx-rtmp-module-master/; } location /control { rtmp_control all; } rtmp { server { listen 1935; chunk_size ...