用vlc搭建流媒体服务器

时间:2022-09-02 18:16:35

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)传统模式

服务器端操作

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

用vlc搭建流媒体服务器用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

客户端操作

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

实验*选择了三种数据源: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”。

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

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

用vlc搭建流媒体服务器

用vlc搭建流媒体服务器

命令行操作方式

服务端(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

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