Vlc 检查流状态
Vlc Check Stream Status
我正在使用 VLC 重播流,这方面的工作非常好。然而,几个小时后,我需要重新验证并重新请求流。
我有一个只需要 运行 的脚本,它将处理重新验证和启动 vlc。
我遇到的问题是如何确定流是否不再工作。
使用时说:
pidof vlc
我得到进程 VLC 的 pid。检查顶部时,我可以看到 VLC 运行ning 和消耗 cpu。但是,当我尝试播放流时没有任何反应。如果我再次 运行 我的脚本,流将重新启动,然后我可以再次观看。
因此,即使流已停止,VLC 仍会继续 运行,但没有任何迹象表明流本身实际上是 运行ning 还是只是 VLC。
到目前为止我发现的唯一一件事是,根据 top
.
,当流未 运行ning 时,CPU 使用率似乎会飙升
当流 运行ning 时,cpu 使用率在 1% 左右,当它不是 运行ning 时,它似乎飙升超过 40%。我已经观察了几次,但我只能假设这可能是我可以确保流 运行ning 的一种方式,但我对这种方法不是 100% 有信心。
有谁知道我如何确认实际流是 运行ning 还是只是 VLC 进程?
简单。使用 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
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),也许使用系统日志来保存它并在之后跟踪任何问题。
应该感谢@mundu
这是我创建的一个脚本,用于检查 vlc 是否正在流式传输。
// vlc_verify1.sh
#!/bin/bash
VLC_CONF=""
VLC_COMMAND=""
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 输出并查看它的状态是否为 'playing'.
注意,我没有像 setup channel1 output #std{access=udp,mux=ts,dst=239.192.174.105:1234}
那样指定输出。
原因是有时 vlc 会使用 100% cpu 时间。我不知道为什么会这样。但如果我摆脱它,我就不会遇到类似的问题。这样做的缺点是会有一个弹出窗口 window 播放流媒体。但我认为这没什么大不了的。
我正在使用 VLC 重播流,这方面的工作非常好。然而,几个小时后,我需要重新验证并重新请求流。 我有一个只需要 运行 的脚本,它将处理重新验证和启动 vlc。 我遇到的问题是如何确定流是否不再工作。
使用时说:
pidof vlc
我得到进程 VLC 的 pid。检查顶部时,我可以看到 VLC 运行ning 和消耗 cpu。但是,当我尝试播放流时没有任何反应。如果我再次 运行 我的脚本,流将重新启动,然后我可以再次观看。 因此,即使流已停止,VLC 仍会继续 运行,但没有任何迹象表明流本身实际上是 运行ning 还是只是 VLC。
到目前为止我发现的唯一一件事是,根据 top
.
当流 运行ning 时,cpu 使用率在 1% 左右,当它不是 运行ning 时,它似乎飙升超过 40%。我已经观察了几次,但我只能假设这可能是我可以确保流 运行ning 的一种方式,但我对这种方法不是 100% 有信心。
有谁知道我如何确认实际流是 运行ning 还是只是 VLC 进程?
简单。使用 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
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),也许使用系统日志来保存它并在之后跟踪任何问题。
应该感谢@mundu
这是我创建的一个脚本,用于检查 vlc 是否正在流式传输。
// vlc_verify1.sh
#!/bin/bash
VLC_CONF=""
VLC_COMMAND=""
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 输出并查看它的状态是否为 'playing'.
注意,我没有像 setup channel1 output #std{access=udp,mux=ts,dst=239.192.174.105:1234}
那样指定输出。
原因是有时 vlc 会使用 100% cpu 时间。我不知道为什么会这样。但如果我摆脱它,我就不会遇到类似的问题。这样做的缺点是会有一个弹出窗口 window 播放流媒体。但我认为这没什么大不了的。