晨风交流论坛_CMP_CChat_Flash_音乐_视频_播放器_live直播_聊天室

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 23335|回复: 22

[教程] 自架Streaming服务器实现http伪流传输视频

[复制链接]
发表于 2011-11-13 22:13:05 | 显示全部楼层 |阅读模式
官方QQ群:102348392 | 捐赠CMP
拥有自己服务器的站长越来越多了,尤其现在用VPS的人越来越多,这样让站长有更多的自定义服务得以实现
比如自己架设streaming视频服务,然后用CMP4的stream参数实现可拖动视频播放
http://bbs.cenfun.com/thread-11037-1-1.html

视频在互联网上,一般有两种传输方式:

1,使用一般的webserver服务器如IIS,apache等,直接使用http下载视频文件,也就是逐渐式下载文件播放
2,使用专门的流媒体服务器,比如rtsp,rtmp,rtmfp等,能提供流媒体RealTime实时下载播放,真正的做到streaming


第一种服务端很容易支持,但数据总是固定从头开始下载,下载多少才能播放多少,不能跳过去到没下载地方播放
比如看一个时间较长的电影,要是看到一半断线或者停电之类的,下次又得从头开始下载,从头又看一遍

第二种很显然更符合用户的需要,直接弥补了上面的问题,它可以随时切换播放开始点,不用等前面的数据是否已经下载
但需安装或购买一个专门的流媒体服务器,这个对一个普通站长来说不易实现,而且有的对硬件要求也较高

那么能不能用普通的webserver来实现streaming呢?答案是肯定的

这里就教大家怎么用普通的webserver实现http伪流传输视频,可以认为是第一种方式的扩展方式
之所以说伪流,就是说他不是真正的RealTime实时streaming,是通过重新请求http变相来实现的

一,首先服务端需要安装伪流模块:
1,MP4视频需要H264 streaming module,地址:
http://h264.code-shop.com/trac#H264StreamingModule
支持Apache, IIS,Lighttpd, NginX等服务器:
•apache
http://h264.code-shop.com/trac/w ... ing-Apache-Version2
•IIS 5 and 6
http://h264.code-shop.com/trac/w ... rvices-IIS-Version2
•IIS 7
http://h264.code-shop.com/trac/w ... vices-IIS7-Version2
•Lighttpd
http://h264.code-shop.com/trac/w ... g-Lighttpd-Version2
•Nginx
http://h264.code-shop.com/trac/w ... ming-Nginx-Version2

2,flv则需要安装FLV streaming module,Lighttpd默认支持:
http://blog.lighttpd.net/article ... aming-with-lighttpd
flv伪流还可以用php实现:http://xmoov.com/xmoov-php/

有了上面的视频处理模块,服务器会根据请求的播放开始点参数,搜索视频对应播放位置然后发送数据到客户端
比如:
  1. http://cmp.cenfun.com/cmp4/music/test.mp4?start=30
复制代码
表示从30秒开始请求数据
开始点参数除了时间秒,还可以用开始字节位置,推荐用时间秒也就是cmp4里的{start_seconds}

CMP4的streaming详细列表设置教程见:
http://bbs.cenfun.com/thread-11037-1-1.html

补充:
伪流不同于http断点续传
断点续传是指,在HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载,如:
Range:bytes=512000-
这个头通知服务端从文件的512K位置开始传输文件
但是flash的URLRequestHeader里是有安全沙箱限制,是不能自己修改Range请求标头的
而且这个位置并不是播放视频的精确时间搜索位置,至少还要有视频位置标签的解码
所以纵然实现断点下载也是无法播放的

所以服务器支持断点续传和视频在flash里的streaming播放无关

当然如果条件允许,最好使用rtmp或rtmfp来实现真正的streaming,比如adobe官方的FMS等

网友提供的C++ RTMP Server:
http://www.rtmpd.com/
发表于 2011-11-13 23:36:10 | 显示全部楼层
虽然我看的不是很明白,不过又学习到了一点知识。
发表于 2011-11-13 23:40:54 | 显示全部楼层
我也看不懂的  但是很支持老大的
发表于 2011-11-14 10:48:38 | 显示全部楼层
这次就抢个板凳了,学习一下下~~
发表于 2011-11-14 15:06:22 | 显示全部楼层
看不懂,要学了!
发表于 2011-11-14 18:09:34 | 显示全部楼层
架设rtmp服务器,最简单的软件
http://www.rtmpd.com/
发表于 2011-11-14 19:42:28 | 显示全部楼层
老大,还是没看懂。。那个东西下载到服务器上了,又该怎么整。。
发表于 2011-11-14 23:41:40 | 显示全部楼层
老大,你给的FLV streaming模块,我看了一天了,查了一天的资料都没有在IIS下使用的方法,只有 Lighttpd的方法,可是我用的是IIS。。。
 楼主| 发表于 2011-11-15 06:47:57 | 显示全部楼层
二毛。 发表于 2011-11-14 23:41
老大,你给的FLV streaming模块,我看了一天了,查了一天的资料都没有在IIS下使用的方法,只有 Lighttpd的 ...

这年头眼神不好的真多,那个页面都有啊

•IIS 5 and 6
http://h264.code-shop.com/trac/w ... rvices-IIS-Version2
•IIS 7
http://h264.code-shop.com/trac/w ... vices-IIS7-Version2
发表于 2011-11-15 07:38:40 | 显示全部楼层
cenfun 发表于 2011-11-15 06:47
这年头眼神不好的真多,那个页面都有啊

•IIS 5 and 6

不好意思,昨晚彻底搞明白了。。看了好多资料  = =

QQ|客服QQ44023478|Archiver|手机版|小黑屋|晨风交流论坛 ( 粤ICP备05008793号 )

GMT+8, 2019-5-22 15:49 , Processed in 0.057781 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表