全部博文(133)
分类: LINUX
2011-03-23 13:29:56
http://hi.baidu.com/kkndyyralf/blog/item/de54e3172ef4bc5921a4e9ff.html
最近在做一个网络媒体服务器。这是一篇参考文章
概述:
流媒体技术是一种支持多媒体数据流通过网络从服务器向客户端传送,接受方边接收边播放的技术。
对网络服务的要求:
必须实时传输数据,仅容许少量的延迟(数百毫秒); 传送数据相对可靠性,容忍一定数量的数据丢失; 保证一定的带宽,以保证传输的数据量能够实时播放。 架设基于vlc的UDP服务器UDP(用户数据报协议),是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。是一个简单的面向数据报的传输层协议,与面向连接的TCP协议相对应。
正是由于UDP协议没有TCP的拥塞控制和发送速率控制,也没有提供数据传输的可靠性保证,但是却保证了传输的实时性,所以被流媒体应用系统所广泛 采用。主要用来支持那些需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
利用vlc(VLC media player 1.0.1)实现UDP服务器:首先在服务器端打开VLC播放器,如下:
接下来选择媒体菜单—->选择高级打开文件,界面如下:
单击添加按钮,可以将磁盘上的媒体文件添加进来,然后在右下角的下拉菜单中选择流,进入下一步,如下:
在上面的的界面中,单击目标按钮,进行UDP设置,添加你想要的发送到的客户端,可以设置多个。另外,如需要转码则把激活转码选项打钩,其他可以选 择默认的设置,不需要更改也可,当然也可以根据你的要求进行输出配置,进入下一步,视频就开始在服务器端进行播放,并向目标端发送流信息。
接下来,在客户端打开VLC播放器,单击媒体菜单,选择打开网络串流,出现如下界面:
选择UDP协议,端口默认即可,单击播放按钮就可以实现在客户端的播放了。
以上是利用图形界面进行操作,当然也可以使用命令来操作。
VLC 服务器RTSP功能实现
RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据 。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。HTTP 与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以 发出请求,即RTSP可以是双向的。
首先进入到VLC的安装目录下,执行类似如下的命令:
vlc –ttl 12 -vvv –color -I telnet –telnet-password videolan –rtsp-host 219.219.218.239:5554
对上述参数的解释:–ttl:是对hop的限制;-vvv选项用来输出错误信息,可以省略;219.219.218.239是RSTP点播服务器的 主机地址; videolan 是telnet登录RTSP点播服务器时输入的口令,这两个部分用户可以根据自己的情况进行修改。
登录RTSP点播服务器在这里我是运用SecureCRT软件进行telnet登录。界面如下所示:
当点击连接后,要求输入密码:videolan,回车后如果显示:Welcome, Master,则表明登录成功。
在主机名栏输入:219.219.218.239,该内容必须与前面建立的RTSP点播服务器的主机地址一致;在端口栏输入:4212,该端口号在使用VLC默认设置时不能改为其他的数值。
接下来就可以设置点播文件了
在登录成功的界面上,输入以下的命令:
new Test vod enabled
setup Test input myVideo.mpg
最后,就可以在客户端观看视频,命令如下:
vlc rtsp://219.219.218.239:5554/Test
还可以通过VLC播放器的VLM进行可视化配制,并生成.vlm配置文件,然后利用SecureCRT工具登录到RTSP点播服务器,利用load命令将配置文件导入,使用show命令可以查看导入的文件信息。
测试结果:CDXA/MPEG-PS 未经过编码转换即可播放,但是仅可以用VLC播放器进行播放。原因是其他播放器无法解析rtsp://219.219.218.147:5554/Test 中的Test文件名。
利用RTP协议实现流输出实时传送协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒 体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP 协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在用户数据报协 议上的。
服务器端:
vlc -vvv input_stream –sout ‘#rtp{dst=192.168.0.12,port=1234,sdp=rtsp://server.example.org:8080/test.sdp}’
客户端:
vlc rtsp://server.example.org:8080/test.sdp
rtp: streams over RTP. This can only be used to stream MPEG-TS over plain RTP.VLC实现mmsh/mms点播功能MMS协议(Microsoft Media Server Protocol)是用来访问并且流式接收Windows Media服务器中.asf文件的一种协议。MMS协议用于访问Windows Media发布点上的单播内容。
示例视频.mpg格式。
vlc –vvv input_stream:sout=#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a, ab=128,channels=2,samplerate=44100}:std{access=mmsh,mux=asfh,dst=:8080}
在VLC客户端中用以下命令播放:mmsh://server_ip_address:8080在暴风影音,Windows Media Player中可以正常播放,在KMPlayer中视频格式正常,但没有声音,在real中无法播放,错误原因:音频无法解析。另外,我测试了几个高清视频(mov,mkv,wmv),发现的情况是,可以播放,但是太卡。VLC实现http 点播功能将需要的媒体文件放在服务器的某个路径下面,服务器可以是Apache,tomcat等均可。然后在客户端可以利用多种播放器进行播放,如VLC,Windows Media Player,RealPlayer,在暴风影音,KMPlayer下不能播放命令如下:文件太大的话无法正常播放,如我测试的dance.wmv 文件大小:351M ,但是在realPlayer下可以播放,缓冲时间比较长,在Windows Media Player缓冲较小时间就可以播放。
注:
ts: the MPEG2/TS muxer. This the standard muxer used to stream MPEG2. This muxer can be used with any access method. Supported codecs are MPEG 1/2/4, MJPEG, H263, H264, I263, WMV 1/2 and theora for video, MPEG audio, AAC and a52 for theaudio stream.
ps: the MPEG2/PS muxer. This the standard muxer for MPEG 2 files(.mpg). It can be used with the file and http output methods. Supported codecs are MPEG 1/2 and MJPEG for video, MPEG audio and a52 for audio streams.