`
pincs
  • 浏览: 13018 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

如何搭建视频分享网站---视频分享关键技术服务器

阅读更多
视频点播业务是近年发展势头最好的互联网业务。本文以从技术角度解析视频点播服务关键技术



视频内容是如何在互联网进行分发的



视频网站如youtube,优酷网,土豆网,新浪视频等视频分享网站通多CDN技术进行视频内容分发。CDN翻译成汉语就是“内容分发网络”。编辑,网友制作或上传视频到CDN网络,CDN网络将这些视频分发到分布于全国各地IDC机房中的点播服务上。用户则就近访问最近的点播服务进行视频体验。组成CDN网络的关键软件有“Squid”  “Apache”    等基于HTTP协议的服务端软件 和域名服务器软件如 bind,域名服务器软件负责根据用户的ip地址将用户的http请求引导到离用户最近的IDC机房中的点播服务器。



CDN软件分析



流行的点播服务主要基于HTTP协议,mms协议,rmtp协议,其中http协议没有控制消息,所以此协议不支持对点播流媒体的控制操作,如进度拖动,play,pause,stop等。

squid apche,这两种服务器支持基于http的点播服务,时下最流行,大部分视频分享网站都采用类似这样的方案。squid主要功能是反向代理的功能。一般作为点播前端服务器使用。什么是反向代理---说白了就是,当用户访问squid服务软件时,如果squid没有此视频文件,则它会根据配置文件里设置的参数,到上行的数据中心去抓取文件,之后再返回给用户进行观看。举例说,当西安的用户访问优库网时,优酷网发现访问来自西安的用户,则将此访问引导至优酷网在西安布置的squid服务器,当squid发现自己没有用户要的视频时,则它根据配置文件里设置的参数,到北京的数据中心的服务器抓取文件到自己本地。之后再返回视频文件给用户。当下次再有用户访问相同的视频时,本地已经存在了,就直接返回视频给用户了。

media service,flash server。这两种服务器支持控制协议,其中media service支持mms,rtsp,flash server支持rtmp。这两种协议服务的点播业务,当用户访问时,用户可以拖动滚动条,和进行暂停,终止等控制操作。56网的视频可以拖动进行观看,我觉得应该使用的是rtmp协议。新浪早期的视频服务都是mms协议的视频点播,也支持拖动。



点播技术方案和优略势

squid + apache 方案,次方案的优势:



软件很成熟稳定。

视频分发采用拉模式。并且squid可以组群,所以分发简单,相对高效

技术开放。由于squid,apache都是linux上流行的软件,并且源码开放,所以用户可以进行二次开发

软件成本低、linux不需要授权费,squid,apache都免费,软件成本基本为0



劣势:



squid是一个古董软件,设计的目标是代理功能,那个时候还没有视频分享概念。所以做cdn服务有些强人所难。很多公司搭建cdn网络时都针对squid进行改造和二次开发工作

squid代理的单位是文件。当视频文件比较大时,如几百兆大小,反向代理抓取效率低。大家都有经验,传几百兆大小的文件需要花很长时间,并且大量占用带宽和cpu。

squid与系统的结合。作为服务器软件,支持并发量是一个很重要的参数,如果一台服务器支持并发用户量大,则可以为公司节省大量成本。影响并发量数量有以下一些因素:

带宽:我们都知道服务器网卡通常是千兆网卡。如果视频编码率为400K码流,1000M除以400K,理论跑满网卡可以支持2500个连接。但实际情况一般能跑到500M,支持并发1000个连接就很不错了。

内存:当并发连接数量很多时,服务器使用的内存往往出现瓶颈。想想,如果一个连接需要使用1M内存进行数据传输,那么1000个并发1G内存就没了。这就是事实。所以ngix这个软件在这方面比apache太有优势了。

cpu:网络io在很多系统上消耗致命的cpu。原因是有些平台没有提供高效的io模型方案。网络io分阻塞和非阻塞模式,异步和同步模式。

最差的方式是阻塞同步模式。但这个模式实际是最常用的。这就是bsd socket的接口,read,write,connect,bind,listen,打多数软件为了编程方便,让调用线程阻塞调用这些系统调用。当并发量大的时候,尤其是服务器软件,这种编程方式绝对不能接受。

非阻塞同步模式:这个模式在服务器编程中最流行,系统调用在unix和linux是 select, poll,windows也支持select,但提供了相对性能更好的waitforobject系统调用。但这些调用的基础都是查询句柄状态,而且是在用户态下,当并发量大时,这个轮询也会耗去大量的cpu。linux2.6之前的服务器,只能采用这个方案,而且是最优方案。但这对于网络服务大并发的要求此方案不可接受。此方案有些二次开发针对write,read系统调用次数进行改造,替换成writev,readv这种基于iovector的调用替换,在io时减少系统调用的次数。但个人认为效果有限。

最高效的方案非阻塞异步模式:支持此模式的的操作系统有solaris ,windows,linux 2.6以上版本,freebsd

solaris 和windows在aio基础上实现,是真正的内核态异步io。linux的epoll调用只是异步通知句柄状态的改变,但io的读写还是用户负责,所以算不上真正的异步io。freebsd的kqueue也类似。但这个方案是现有方案的中的最佳方案了。其中本人更看好windows的iocp,因为windows的iocp中的系统调用不仅是真正的异步io,而且还支持overlapped读写,可以说支持多线程并发读写同一个io句柄。windows平台应该是网络服务最优前途的方案。太牛了。solaris的aiowait系统调用不支持多线程。



cpu对io的影响好像用掉的笔墨太多,主要是这个对并发量影响巨大。

带宽限速:我们都知道,用户带宽越来越大,如果我们不限制用户下载速度,后果很严重。比如:如果用户使10M带宽,如果不限速,100个用户就把服务器带宽吃掉了。实际情况中,50个这样的,就不行了。所以服务器一定要限制用户下载速度。如果视频的码流是400K,最好限制用户500K,这样既不影响用户流畅的观看,又节省了服务器带宽。这样一台服务器并发就可以支持更多的用户了。

本地缓存:反向代理软件squid的主要的优势就是进行本地缓存。但如果缓存被大量的用户很少访问的文件占用,服务器磁盘空间毕竟有限,这时候会加剧对反向代理的次数。降低代理效果,所以对缓存要进行算法调整和设计。

cdn对p2p技术的应用。如果反向代理软件可以组成p2p网络,进行网络数据块交换,存储。这样会极大的减少数据中心访问次数,加速数据交换效率。squid因为是基于文件的代理,如果进行交换也是基于文件的交换,当问及大小巨大时,效果很差。



写的很多了。media service方案和flash server方案下次再写吧。睡觉了。。。

分享到:
评论
8 楼 xiaoyu 2009-05-12  
如果一个视频文件超过了100M早就被分割了。

视频网站考虑的东西很多。

还有很多的细节。

建议大家看看youtube的技术方案(网上搜吧)然后会有一个概念
7 楼 lzg3267373 2009-05-12  
kimmking 写道
lzg3267373 写道
LZ 这个帖子写的不错 对我很有用,我们公司在做运营一个视频网站,还打算给上海OCN(有线通)做网上高清视频点播。
OCN(有线通)打算搞一种服务把客户的带宽提升到30M。
希望LZ 能尽快完善。

有时间我来个flash视频技术的总结帖~~


晕倒,要等多久咯,期待中。
6 楼 kimmking 2009-04-05  
lzg3267373 写道
LZ 这个帖子写的不错 对我很有用,我们公司在做运营一个视频网站,还打算给上海OCN(有线通)做网上高清视频点播。
OCN(有线通)打算搞一种服务把客户的带宽提升到30M。
希望LZ 能尽快完善。

有时间我来个flash视频技术的总结帖~~
5 楼 lzg3267373 2009-04-05  
LZ 这个帖子写的不错 对我很有用,我们公司在做运营一个视频网站,还打算给上海OCN(有线通)做网上高清视频点播。
OCN(有线通)打算搞一种服务把客户的带宽提升到30M。
希望LZ 能尽快完善。
4 楼 shatuo 2008-05-29  
只要有耐心,能找到,不过要找到适合自己的话,比较困难,做好能做个几年内的职业规划( 我也是应届生,同勉)。
ps:计算机网站这词不好(雅),还是成为web开发好一些(个人意见)
3 楼 xfbbsnet 2008-05-29  
难找总归要找的~~加油吧。
2 楼 xellos 2008-05-21  
猫咪还是要相信自己一些.
不要被这些世俗的观念束缚了.
不可否认的学历会给你造成许多困难.但你其实还是可以找到薪水不错的工作的.因为你用心去找,总会有一个能让你发挥能力的岗位的.
1 楼 魔力猫咪 2008-05-20  
就是感觉技术太杂了。Java、.NET、部分美工、好像还有ASP和VB。容易让你觉得什么都会点,什么都不精。还有就是项目经验太少,如果不是专门招应届的话不容易进去。
说真的,我学历上比你还惨。中专。不过好在我有些工作经验。终于最近一家被录取,同时另一家说尽快给消息。不过待遇还是比较低的。

相关推荐

    视频服务器调试工具

    9. **安全措施**:视频服务器还需要考虑版权保护和内容安全,例如实施DRM (Digital Rights Management) 技术来防止非法复制和分享。 10. **用户体验**:调试工具也能评估用户界面的友好性和播放质量,确保视频加载...

    webRTC-简易视频通讯服务器

    总的来说,“webRTC-简易视频通讯服务器”项目涵盖了WebRTC的基本要素,尤其是STUN服务器,它是实现跨NAT通信的关键。为了构建一个完整的视频通话系统,开发者需要理解WebRTC的架构,包括信令流程、媒体处理、网络...

    phpcms2008视频模型 UTF-8 Build 20090603 正式版.rar

    在实际应用中,phpcms2008可以用来搭建新闻门户、视频分享网站或者教育平台,提供丰富的视频课程。 总的来说,phpcms2008视频模型提供了强大的视频内容管理功能,结合PHP技术,能够帮助开发者快速搭建和维护一个...

    酷播局域网电影服务器软件

    - **功能**: 在局域网内搭建视频点播服务平台。 - **特性**: - 支持局域网内视频资源发布。 - 采用微云技术和专用传输协议保障视频传输质量。 - 无需专业技能即可快速部署。 2. **CoolPlayer客户端播放器-...

    一个简单视频网站全站代码

    这样的网站可以帮助初学者理解视频网站的基本工作原理和开发流程,同时也为快速搭建一个简易的视频分享平台提供了可能。 【描述】"数据库 安装说明书等,适合初学者直接使用"表明这个项目不仅包含了网站的前端和...

    视频分享系统 v2.1

    【视频分享系统 v2.1】是一个基于ASP技术构建的简单视频分享平台。该系统的主要功能是让用户能够上传、分享和观看视频,并且提供后台管理界面进行内容维护。在这个系统中,HTML静态文件是由后台自动生成的,这有助于...

    flv视频网站制作资料

    2. **PHP**: 作为服务器端脚本语言,PHP被广泛用于动态网页开发,其易用性和强大的数据库交互能力使其成为搭建视频分享网站的理想选择。 3. **MySQL**: 用于存储视频数据,包括视频文件名、缩略图、尺寸、标题和...

    P2P视频技术随书源码

    P2P(Peer-to-Peer)视频技术是一种网络通信模型,它允许网络中的各个节点(称为对等点或peer)直接交互,共同分享资源,而不仅仅是依赖于中心服务器。这种技术在流媒体服务中尤其常见,如在线视频观看,因为它能够...

    网吧电影服务器的组建

    1. **搭建站点**:采用MAXCMS等开源CMS程序搭建视频站点,可以实现良好的用户体验。酷播论坛提供了针对网吧特性的风行风格源码和模板,方便快速部署。 2. **Web服务配置**:配置好局域网访问的web服务地址,例如`...

    H264-RTSP-Server-iOS实时视频流输出

    标题中的“H264-RTSP-Server...综上所述,这个项目涉及到iOS设备的视频捕捉、H.264编码、RTSP服务器的搭建以及跨平台的实时视频流传输技术,对于希望在移动设备上实现直播功能的开发者来说,具有很高的学习和参考价值。

    PHP实例开发源码—苹果CMS视频分享程序 v8.zip

    "苹果CMS视频分享程序" 是一个具体的软件系统,它集成了视频管理、用户交互、播放功能等多种服务,用于搭建类似于YouTube这样的视频分享网站。"v8" 表示这是该程序的第八次重大更新,通常意味着更稳定、更多功能和...

    PHP视频网站,支持导入,PC端、移动端自适应

    包含的安装视频和文档是帮助用户快速搭建和配置这个视频网站的关键资源,它们会指导用户如何设置服务器环境(如Apache或Nginx,PHP运行环境,以及MySQL数据库)、部署源码、配置域名和SSL证书等步骤。 综上所述,这...

    淘宝抢购仙女环境搭建完整详细步骤最新视频教程教学

    在本教程中,我们将深入探讨如何进行“淘宝抢购仙女环境”的搭建,这是一个针对购物爱好者和电商从业者的重要技能。这个过程涉及到多个技术层面,包括软件安装、配置优化以及相关工具的使用,旨在帮助用户提高在淘宝...

    Zinx框架 游戏服务器开发项目视频课程下载整理.zip

    【Zinx框架 游戏服务器开发项目视频课程下载整理.zip】这个压缩包文件包含了关于使用Zinx框架进行游戏服务器开发的视频课程资源。Zinx框架是一个专为游戏服务器设计的高性能、轻量级的网络通信库,它通常用于构建...

    视频电影网站全站网站源码

    【视频电影网站全站源码】是一个用于搭建在线视频电影平台的软件开发资源,它包含了构建这样一个网站所需的所有代码和配置文件。这个源码是基于ASP(Active Server Pages)编程语言开发的,ASP是一种微软公司推出的...

    搭建流媒体服务器[参照].pdf

    通过Red5和FFMpeg的结合,可以实现一个功能完善的在线视频分享平台,包括视频上传、转换、存储和播放。 总之,搭建流媒体服务器涉及的技术层面广泛,从服务器端的编程到多媒体处理,都需要一定的专业知识。Red5和...

    视频教学网站源码下载.rar

    开发此类网站时,需要考虑的关键技术还包括HTML、CSS和JavaScript,用于构建前端用户界面;可能还会涉及到AJAX异步请求,提升用户体验;以及可能的服务器端技术,如IIS(Internet Information Services)作为ASP的...

    基于ASP的畅无忧FLV视频分享系统(ASP+access) v3.0.zip

    【描述】中提到的"基于ASP的畅无忧FLV视频分享系统(ASP+access) v3.0.zip",表明这是一款用于搭建视频分享网站的软件包,特别适合那些希望创建类似YouTube的在线平台但又不具备复杂编程背景的用户。此系统基于ASP,...

    影牛社区短视频APP源码 最火短视频类APP源码下载

    【标签】"php"、"Thinkphp"、"Android"进一步强调了源码的主要技术栈,涵盖了服务器端和客户端开发的关键技术。 综上所述,这份源码提供了一个完整的短视频应用开发实例,涵盖的内容广泛,包括但不限于PHP后端开发...

    国嵌视频 远程视频监控地址

    - **关键技术**:涉及视频流传输技术(如RTSP、RTMP等)、数据加密与安全措施、云存储方案等方面的技术细节。 - **应用场景**:除了技术层面的介绍之外,还可能涉及该系统在实际场景中的应用案例,比如家庭安防、...

Global site tag (gtag.js) - Google Analytics