背景
我有一个花园 IP 摄像头,喜欢将直播传输到 youtube,所以我决定使用 ffmpeg 来实现这一点。
问题
每当我的网络摄像机重新启动或失去连接时;ffmpeg 将卡在同一帧上,并且一旦 IP 摄像头恢复在线就不会恢复。
我的解决方案
我将 ffmpeg 输出记录到文件中,然后让脚本每隔几秒获取日志的最后一行并比较帧数。如果帧号匹配,它会终止 ffmpeg 进程并启动另一个 ffmpeg 进程。
我的问题
有没有更好更高效的方法呢?
日志检查器.sh
#/bin/bash
while true
do
frameA=$(tail /home/daniel/output.txt -n 1 | sed -nr 's/.*frame=(.*)fps.*/\1/p')
echo "$frameA"
sleep 3
frameB=$(tail /home/daniel/output.txt -n 1 | sed -nr 's/.*frame=(.*)fps.*/\1/p')
echo "$frameB"
if [ "$frameA" = "$frameB" ]
then
echo "Camera has hung"
pkill ffmpeg
echo "killed ffmpeg..."
echo "Waiting 30 secs"
sleep 30
bash /home/daniel/ffmpeg.sh &
echo "started ffpmeg.."
echo "Waiting 30 …Run Code Online (Sandbox Code Playgroud)