长宁做网站价格,微信小程序注册费用,做怎样的网站能赚钱,营销型网站建设市场分析众所周知#xff0c;RTMP是以flash为客户端播放器的直播协议#xff0c;主要应用在B/S形式的场景中。本人研究并用C开发实现了RTMP直播流协议的播放器#xff0c;结合之前做的RTMP直播采集端#xff0c;可以将RTMP协议完全扩展到C/S形式的应用场景中#xff0c;这将对之后… 众所周知RTMP是以flash为客户端播放器的直播协议主要应用在B/S形式的场景中。本人研究并用C开发实现了RTMP直播流协议的播放器结合之前做的RTMP直播采集端可以将RTMP协议完全扩展到C/S形式的应用场景中这将对之后的通用、全平台的流媒体架构设计和实现打下坚实的基础。 开发的意义 RTMP直播协议是Adobe公司推出的以flash播放器为客户端的实时直播流协议是一种应用非常广泛的通信协议。而flash直播也是到目前为止web页面上最成熟的直播技术。不过因为flash主要是嵌入到web页面中因此RTMP直播通常也就局限在B/S形式的直播应用。 我之前陆续做了很多与RTMP直播协议相关的项目开发都是采集发布端的数据发往FMS等rtmp服务器之后最终是通过flash来收看的。并不是考虑flash本身好或不好的问题而是想把这个BS的技术直播协议不借助Adobe Air平台扩展到C/S场景中这样用户不仅可以在网页上收看RTMP协议的直播流还可以通过客户端来收看大大丰富了直播协议的灵活度。另外实现了这一点为RTMP直播协议的跨平台以及跨移动平台Android, iOS的应用也提供了可能。有很好的前景。 比如通过实现不同平台上的rtmp播放器来实现如下架构。 设计和流程 其实实现RTMP直播流播放器逻辑上和实现其他直播流协议播放器是一致的整体上程序可以分为三个部分 RTMP直播数据下载与数据包分解数据包中分离H.264和AAC数据并解码视频渲染和音频播放 实现的模块以及主要流程如下图所示 目前为止这个设计是为Windows PC端开发所做将来会做进一步移植这个情况下主要是修改视频渲染和音频播放的实现。 细节与实现 1. RtmpDownloader RtmpDownloader模块非常重要我这里是将librtmp作为底层的rtmp传输协议。在librtmp之上除了接口调用还需要进行数据包的解析h.264视频数据和aac音频数据的分离以及从中解析出重要的解码信息交给解码器解码并初始化渲染器。整个的框架和流程如下图 RtmpPlayer四个接口所代表的意义下面列了出来。这就是RTMP下载最需要获取到的数据以及解码信息。 2. 渲染和播放 说到视频渲染这似乎是个坑相信做播放器开发的朋友会有说不完的话不过我在这里就简单贴下我的主要渲染流程。Windows上视频渲染可以选择的方式有很多比如Direct3D、DirectDraw、GDIOpenGL等这里选择d3d的方式来渲染。 音频播放可以选择WAVE系列函数或者DirectSound的接口等这里我选择使用WAVE接口原因当然是比较简单啦 :) 实际效果 播放一下从网上找到的深圳卫视rtmp直播流地址画面清晰音视频同步效果还不错 :) 配合之前做的RTMP采集推送端可以完全脱离flash来实现基于RTMP协议的直播。 from:http://www.cnblogs.com/haibindev/p/3466094.html