用Delphi实现基于RTMP协议的多媒体直播系统
12 Comments 2013-11-09 admin
周末了,来一篇关于RTMP协议的东西。RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。它有三种变种:
1)工作在TCP之上的明文协议,使用端口1935;
2)RTMPT封装在HTTP请求之中,可穿越防火墙;
3)RTMPS类似RTMPT,但使用的是HTTPS连接;
基于RTMP协议的直播系统一般由三部分组成:采集推送端(实现数据采集和发送)、服务器端(接收推送端数据,并传输给播放端)、播放端(从服务器端接收并播放)。服务器一般不用自己写,因为开源和商业的都非常多,简单列举如下:
一、开源项目
项目名称 开发语言 项目地址
red5 Java http://code.google.com/p/red5/
crtmpserver C++ http://www.rtmpd.com
ErlyVideo erlong https://github.com/erlyvideo/erlyvideo
haXeVideo haXe http://code.google.com/p/haxevideo/
FluorineFx .NET http://www.fluorinefx.com/
二、商业程序
程序名称 所属公司 地址
FMS Adobe http://www.adobe.com/products/flash-media-server-family.html
Wowza Media Server Wowza Media Systems http://www.wowza.com/media-server
Helix Real Network http://www.realnetworks.com/helix/streaming-media-server/
Evostream Media Server EvoStream http://www.evostream.com/
当然,还有一些其他的开源、商业rtmp服务器(如ffserver),就不一一列举了。一般来说,商业rtmp程序要比开源程序支持更多的协议以及更多的平台。
虽然Adobe也在官方网站已经提供了RTMP协议的官方文档,但根据网上实际开发过的人写的文章说:“Adobe公司太坑人了,官方文档公布的信息根本就不全,如果只按照他上面的写的话,是没法用的”。幸好有个开源项目RTMPDUMP(http://rtmpdump.mplayerhq.hu/),RTMPDump是一个匈牙利人的作品。他在Adobe未公开RTMP协议的条件下,写出了针对RTMP协议的客户端程序。他和Adobe的故事,大家也可以在网上看看。后来又有个叫Faris Khowarizmi的人写了针对librtmp(RTMPDump的核心Dll)的Delphi头文件paslibrtmp,所以现在使用Delphi来开发就方便多了。不过他翻译的文件中有一个结构翻译错误了,具体是TRTMPPacket结构里面的m_hasAbsTimestamp,他定义为DWORD类型了,实际上应该是BYTE类型,这个如果错误的话,则后面会全部错误。
下面说一下推送流程:
1、采集视频和音频数据,然后编码。我这里是使用H264压缩视频,AAC压缩音频。
2、连接RTMP服务器,发送视频(如果有)的初始信息和音频的初始化信息。例如:视频的大小、音频的频率声道之类。
3、循环把第一步的数据发送给RTMP服务器。
最后效果如下:
推送端:
播放效果:
经过实际测试,RTMP协议在互联网的话延迟大概在2秒左右,局域网的话则延迟不大。点这里下载paslibrtmp,点这里下载演示程序,相关问题请加QQ群讨论,另外群共享里面也有一些相关的代码。
分类:多媒体相关
12 Comments 发表评论
已使用email寄至 amdin@woods8.com 提問,謝謝
在購買元件,請問一些元件支援的問題.
mail 問題至admin@woods8.com 被退件
請與我 mail 聯絡 謝謝
is done.
希望能得到您的帮助,需要delphi开发视频直播的源代码。
购买了Delphi RTMPLivePublish Component,还没拿到代码,请联系我,谢谢哈。
你好
希望能得到您的帮助,能发我delphi开发视频直播的源代码吗
作为一个10多年delphi开发的老兵,目前需要涉及RTMP的开发,非常希望能得到陈兄的帮助!赐于我一份视频直播放的源码吧:-)
跪求陈老一份视频直播放的源码
付费跪求一份视频直播放的源码,我付费,,,
beylandsoft@qq.com
付费求支持rtmp的控件
跪求陈老发一份视频直播放的源码给我吧!123141432@qq.com
你好 is the author of this component still around ?
i need to have this component but its pricey
any change to have this component in lower price ?
发表评论
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
TrackBack URL | RSS feed for comments on this post.