我使用VLC转播流和物联网这方面工作得非常好。 然而,几个小时后,我需要重新验证和重新请求流。 我有一个脚本,只需要运行,这将处理重新认证和启动VLC。 我遇到的问题是如何找出如果流不再工作。
当使用说:
pidof vlc
我得到的过程VLC的PID。 当检查顶部,我可以看到VLC运行,并消耗CPU。 然而,当我尝试播放流没有任何反应。 如果我再次运行我的脚本,流重新启动,然后我就可以再看一遍。 因此,即使在流已经停止,VLC继续运行,让我没有流本身是否确实在运行,或只是VLC指示。
到目前为止,我发现的唯一的事情是,当流不运行时CPU使用率似乎根据秒杀top
。
当流运行时,CPU使用率是1%大关左右,当它不运行它似乎秒杀近40%。 我观察这几次,但我只能假设,这将可能是一个方法,我可以保证流运行,但我不是在接近100%的信心。
有没有人对我怎么能确定,如果实际流运行,或者如果它仅仅是VLC过程中的任何知识呢?
应该给学分@mundu
这里是我的检查,如果VLC是流创建的脚本。
// vlc_verify1.sh
#!/bin/bash
VLC_CONF="$1"
VLC_COMMAND="$2"
VLC_PASS="videolan"
echo "" > nohup.out
nohup vlc --intf telnet --vlm-conf $VLC_CONF --telnet-password $VLC_PASS &
vlc_pid=$!
echo "vlc has a pid of $vlc_pid"
sleep 5
echo "nc start"
nc localhost 4212 < $VLC_COMMAND
kill $vlc_pid
exit 0
// vlm-conf, you have to replace $url with the actual url
new channel1 broadcast enabled
setup channel1 input $url
control channel1 play
show
// command.txt
videolan
show
在vlc_verify1.sh
将输出由@mundu提到当前播放状态。 我所做的是到grep输出,看看它的状态是“玩”。
请注意,我没有指定等的输出setup channel1 output #std{access=udp,mux=ts,dst=239.192.174.105:1234}
一个原因是有时VLC将使用100%的CPU时间。 我不知道为什么这样。 但如果我摆脱的是,我没有经历过类似的问题。 这一个缺点是,将有一个弹出式窗口中播放串流。 但我不认为这是一个大问题。
简单。 使用VLM接口。
VLC -i的telnet --vlm的conf vlm.conf
适应你的命令行来放置SOUT在vlm.conf像这样的例子:
new channel1 broadcast enabled
setup channel1 input http://host.mydomain/movie.mpeg
setup channel1 output #std{access=udp,mux=ts,dst=239.192.174.105:1234}
control channel1 play
然后,您可以登录到Telnet接口和类型展会上看到当前的广播和它的状态。
> show
show
media : ( 1 broadcast - 0 vod )
channel1
type : broadcast
enabled : yes
loop : yes
inputs
1 : http://host.mydomain/movie.mpeg
output : #std{access=udp,mux=ts,dst=239.192.174.105:1234}
options
instances
instance
name : default
state : playing
position : 0.058974
time : 6473336
length : 109766611
rate : 1.000000
title : 0
chapter : 0
can-seek : 1
playlistindex : 1
你可以在这里阅读更多https://wiki.videolan.org/Documentation:Streaming_HowTo/VLM/
PS:我会增加日志-v(VV)的或者使用系统日志进行保存和跟踪任何问题之后。