2009-05-31 15:56:03
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
http://jeremiah.blog.51cto.com/539865/161876
还是前两天帮“猪小妹”考虑毕业设计的时候,想了想vlc能不能作为vod的服务器,替代上一篇博客里面的live555 media server,因为live555 media server做的确实不是太好。查了些资料,在vlc群里面乱问了一通,终于解决了。好东西啊,大家共享。
在这感谢vlc研究群“樱木”童鞋提供的帮助。
在这感谢vlc研究群“樱木”童鞋提供的帮助。
1. 所需软件
vlc-0.9.9或vlc-0.8.6i,主要测试的是比较新的0.9.9版本的。
putty:一款集telnet,ssh远端登陆的非常好的软件。下载地址:http://wrc.gro.clinux.org/putty/putty.exe
vlc-0.9.9或vlc-0.8.6i,主要测试的是比较新的0.9.9版本的。
putty:一款集telnet,ssh远端登陆的非常好的软件。下载地址:http://wrc.gro.clinux.org/putty/putty.exe
2. 命令行启动vlc,并打开后台信息显示,有助于观察后台信息
开启cmd,并cd到vlc的目录,执行
开启cmd,并cd到vlc的目录,执行
vlc -vv --extraintf=logger
3. 开启vlc的telnet服务
vlc-0.9.9在界面上选择工具->界面->telnet控制台
后台dos窗口会有反应,显示
vlc-0.9.9在界面上选择工具->界面->telnet控制台
后台dos窗口会有反应,显示
[00000403] main interface debug: looking for interface module: 1 candidate
[00000403] main interface debug: creating VLM
[00000405] main vlm daemon debug: thread 5112 (vlm thread) created at priority 0
(../../src/input/vlm.c:112)
[00000405] main vlm daemon debug: thread started
[00000403] telnet interface: using the VLM interface plugin...
[00000403] main interface debug: net: listening to 127.0.0.1 port 4212
[00000403] telnet interface: telnet interface started on interface 127.0.0.1 421
2
[00000403] main interface debug: using interface module "telnet"
[00000403] main interface debug: TIMER module_Need() : 19.000 ms - Total 19.000
ms / 1 intvls (Avg 19.000 ms)
[00000403] main interface debug: thread 5136 (interface) created at priority 0 (
../../src/interface/interface.c:168)
[00000403] main interface debug: thread started
[00000403] main interface debug: creating VLM
[00000405] main vlm daemon debug: thread 5112 (vlm thread) created at priority 0
(../../src/input/vlm.c:112)
[00000405] main vlm daemon debug: thread started
[00000403] telnet interface: using the VLM interface plugin...
[00000403] main interface debug: net: listening to 127.0.0.1 port 4212
[00000403] telnet interface: telnet interface started on interface 127.0.0.1 421
2
[00000403] main interface debug: using interface module "telnet"
[00000403] main interface debug: TIMER module_Need() : 19.000 ms - Total 19.000
ms / 1 intvls (Avg 19.000 ms)
[00000403] main interface debug: thread 5136 (interface) created at priority 0 (
../../src/interface/interface.c:168)
[00000403] main interface debug: thread started
注意观察main interface debug: net: listening to 127.0.0.1 port 4212这句话,说明vlc现在的telnet监听的是127.0.0.1这个地址和4212这个端口。如果没有显示ip的话,一般用127.0.0.1是没有问题的。127.0.0.1就表示的本机,与localhost是同一个意义。
4. 启动putty.exe
主机名称(或ip)输入:127.0.0.1
端口:4212
连接类型:选Telnet
点打开。
如果没有出现"Password:"字样,点打开就关闭了,那就说明没有telnet上。(这个时候可以在cmd里面输入telnet 127.0.0.1 4212,看结果应该是正在连接到127.0.0.1...不能打开到主机的连接, 在端口 4212: 连接失败,或者是与主机失去连接。不用cmd的telnet连接的主要原因是过会输入命令的时候看不到。)这个时候,请关闭防火墙,杀毒软件及一切相关软件,不过中毒了别找我哎。(*^__^*) 嘻嘻……继续继续。
如果没有出现以上问题,在Password:后面输入"admin",没有明文回显。登录成功后会显示:Welcome, Master。
主机名称(或ip)输入:127.0.0.1
端口:4212
连接类型:选Telnet
点打开。
如果没有出现"Password:"字样,点打开就关闭了,那就说明没有telnet上。(这个时候可以在cmd里面输入telnet 127.0.0.1 4212,看结果应该是正在连接到127.0.0.1...不能打开到主机的连接, 在端口 4212: 连接失败,或者是与主机失去连接。不用cmd的telnet连接的主要原因是过会输入命令的时候看不到。)这个时候,请关闭防火墙,杀毒软件及一切相关软件,不过中毒了别找我哎。(*^__^*) 嘻嘻……继续继续。
如果没有出现以上问题,在Password:后面输入"admin",没有明文回显。登录成功后会显示:Welcome, Master。
5. 架设点播服务vod
分别输入:
分别输入:
new vod1 vod enabled
setup vod1 input d:/01.avi
解释下:
setup vod1 input d:/01.avi
new了一个名字叫vod1的vod,设置vod1的input为d:/01.avi。
验证:开启另一个vlc,打开rtsp://127.0.0.1/vod1。应该就可以播放了。127.0.0.1可以换成自己的ip。
6. 架设组播服务器
继续输入:
继续输入:
new ch1 broadcast enabled
setup ch1 input d:/02.avi [loop]
setup ch1 output #duplicate{dst=rtp{dst=226.0.0.6,mux=ts,port=1234}}
control ch1 play
setup ch1 input d:/02.avi [loop]
setup ch1 output #duplicate{dst=rtp{dst=226.0.0.6,mux=ts,port=1234}}
control ch1 play
解释下:
new了一个名字叫ch1的broadcast。设置ch1的input为d:/02.avi,loop可选,表示循环播放。设置ch1的output为#duplicate{dst=rtp{dst=226.0.0.6,mux=ts,port=1234}},表示rtp协议的ts流发送到组播地址为226.0.0.6,端口1234。控制ch1播放。
扩充:
1) output后面可以跟sout参数。具体可以参考vlc->媒体->流->流输出界面的已生成的流输出字符串。
2) control ch1后面还可以加stop,pause,seek 百分比。表示停止,暂停和跳转到百分之几的位置。
new了一个名字叫ch1的broadcast。设置ch1的input为d:/02.avi,loop可选,表示循环播放。设置ch1的output为#duplicate{dst=rtp{dst=226.0.0.6,mux=ts,port=1234}},表示rtp协议的ts流发送到组播地址为226.0.0.6,端口1234。控制ch1播放。
扩充:
1) output后面可以跟sout参数。具体可以参考vlc->媒体->流->流输出界面的已生成的流输出字符串。
2) control ch1后面还可以加stop,pause,seek 百分比。表示停止,暂停和跳转到百分之几的位置。
验证:开启一个vlc,打开rtp://226.0.0.6:1234。应该就可以播放了。
7. 架设单播服务器
第6步里面的output换成单播的地址就行了。其他的都一样的。注意不要new重名了。
第6步里面的output换成单播的地址就行了。其他的都一样的。注意不要new重名了。
8. 保存刚才操作
继续输入
继续输入
save d:/01.cfg
将刚才操作保存到了d:/01.cfg里面,除了control。可以通过记事本等文本编辑器查看一下里面的内容。
如果重新开启了vlc,则可以输入
如果重新开启了vlc,则可以输入
load d:/01.cfg
将刚才保存的操作读入进来,继续操作或控制。
通过这样的配置,一个vlc的实例可以提供多个服务,包括单播,组播和点播。确实强大啊。
这样上一篇博客的流媒体服务器可以替换为vlc了。跟上一篇日志结合作个简单的流媒体服务的网站或者类似于pplive的客户端,就不是太有技术难度的事情了。
vlc -I dummy -vvv alsa://hw:0,0 --live-caching=600 --sout='#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:rtp{dst=239.255.0.6/stream,port=11091,mux=ts,ttl=1}'
vlc -I dummy -vvv alsa://hw:2,0 --live-caching=600 --sout='#transco
de{vcodec=none,acodec=s16l,ab=128,channels=2,samplerate=44100}:rtp{dst=239.255.0
.6,port=11091}'
de{vcodec=none,acodec=s16l,ab=128,channels=2,samplerate=44100}:rtp{dst=239.255.0
.6,port=11091}'