用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

作者:axu82119


来源:优快云知识库


VLC是一种开源的播放器,同时也可以用作流媒体服务器。今天试验了几种搭建流媒体服务器的方法,这里做一个归纳总结。

本文使用的VLC版本为:2.1.5。

服务器平台操作系统:Windows 7 32位 旗舰版(Service Pack 1);

服务器IP地址:10.1.11.21;

客户端平台操作系统:Windows XP32位 Home Edition 2002(Service Pack 3);

客户端IP地址:10.1.11.99。

流媒体服务器大多是基于UDP的,这里只试验了其中几种。

1.     UDP(Latency)传统模式

服务器端操作

打开“媒体——流”选项,如图所示。


点击“添加”按钮选择流媒体文件,然后点击“串流”按钮。



检查来源,没问题了选择“Next”。



在“目标设置”界面选择“UDP (legacy)”,如果要在本地同步显示视频,可勾选“在本地显示”,然后点击添加按钮。



在流目标输出“地址”栏输入客户端IP地址,本次实验客户端为10.1.11.99,默认端口1234,再单击“Next”。



在“转码选项”中,由于本次实验视频源为已经用H.264编码过,所以可以不勾选“激活转码”,如果视频源为原始视频,则可以通过勾选此复选框来选择编码方式(使用.h264视频源,并勾选“激活编码”,配置文件选择“H.264 + MP3”,经过试验也可以正常工作)。



下一步,直接选择“Stream”,服务器就开始发送视频流了。



客户端操作

点击“媒体——打开网络串流”,在弹出的框中输入“udp://@:1234”,点击“播放”按钮即可。




通过EtherPeek抓包工具,可看到服务器在不停发送UDP数据包。



下图为UDP数据包的视频数据。



实验中共选择了三种数据源:h264文件,TS文件和USB摄像头,都可以播放。其中,h264文件由于分辨率不高,播放流畅;TS文件经h.264编码后,在客户端会有卡顿现象,明显网络传输带宽已经不够用了;USB摄像头视频经h.264编码后也可以正常解码播放,但是延迟比较大。


通过界面操作比较简单,但如果经常进行此类工作的话,脚本是比较靠谱的。这里并没有对脚本进行测试,只把脚本作为备份内容列在这里。

命令行操作方式

服务端(10.1.11.21):

vlc -vvv sample1.avi --sout udp: 10.1.11.21:1234--ttl 10

客户端(10.1.11.99):

vlc udp://@:1234

2.     RTP方式

抓包发现,VLC的RTP是基于UDP的。

服务器端操作

前几步和“UDP(legacy)传统模式”类似,这里不再赘述。主要是在目标里面选择“RTP / MPEG Transport Stream”这个选项;目标IP为客户端IP(10.1.11.99),端口为默认值(5004)。

客户端操作

输入网路URL:rtp://@:5004,点击播放即可。

命令行操作方式

服务端(10.1.11.21):

vlc -vvvsample1.avi --sout 
"#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=10.1.11.21,port=5004,mux=ts,ttl=10}" 

客户端(10.1.11.99):

</pre><pre name="code" class="cpp">vlc rtp://@:5004

3.     RTSP方式

RTSP方式是通过RTP进行流媒体数据的传输的,VLC的实现也是基于UDP的。这种方式的图形界面操作与HTTP方式类似,就不赘述了。下面是命令行方式的操作。

命令行操作方式

服务端(10.1.11.21):

vlc -vvv sample1.avi 
--sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/test}"

客户端(10.1.11.99):

vlc rtsp:// 10.1.11.21:8554/test

用VLC搭建基于TCP的流媒体服务器

 

VLC的http方式搭建的流媒体服务器是用TCP方式进行数据传输的。

HTTP方式

界面操作与UDP相似,只是在服务器端,端口默认为8080,路径可设置为“/test”。



在客户端,URL为http://10.1.11.21:8080/test



命令行操作方式

服务端(10.1.11.21):

vlc -vvv sample1.avi --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/test}"

客户端(10.1.11.99):
vlc http:// 10.1.11.21:8080/test

以上就是全部的实验内容,命令行操作方式并没有在实验中验证,列在这里作为参考吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值