gpt4 book ai didi

bash - 如果连接中断,ffmpeg 从实时流中录制视频将关闭

转载 作者:行者123 更新时间:2023-12-04 18:32:01 25 4
gpt4 key购买 nike

我正面临 FFMPEG 流的问题。我正在尝试将我的实时运行流录制到 File_Name.ts 文件中。使用以下代码可以正常工作

ffmpeg -i "http://clientportal.link:8080/live/tmalik/Tanveer/9026.m3u8"-c 复制 abc.ts -y

但实际问题是我的输入流不太稳定,平均 1 小时后停止 4-6 秒。

如果我从 Link 取回我的流(在上面的代码中作为输入给出),现在有什么方法可以自动重新连接。

重要的是我在 UBUNTU 机器上工作。因此,如果有任何 bash 文件会很麻烦。

最佳答案

制作一个类似的bash脚本

#!/bin/bash
# this script will run until someone kills it
echo PID="$PID"
while true ; do
startDateTime=$(/bin/date +%Y-%m-%d.%H%M)
echo "starting ffmpeg at ${startDateTime}"
ffmpeg -i "http://clientportal.link:8080/live/tmalik/Tanveer/9026.m3u8" -c copy abc."${startDateTime}".ts -y
# sleep 0.5
done

将其保存到文件中(不要使用 Windows 编辑器来保存它,只需使用纯文本编辑器即可)。

现在将文件标记为可执行文件(因此它将作为脚本运行),使用
chmod +x ffmpegRestarter.sh

从终端命令行运行它
nohup /path/to/ffmpegRestarter.sh > /tmp/ffmpegRestarter.log.${startDateTime}.$$ 2>&1 &

(当然,将 /path/to 更改为脚本的正确路径。)

您现在可以在终端 session 中做其他事情,或者您可以启动另一个终端 session ,仅用于监控,您可以查看/tmp/${logName}.log 文件的末尾以了解情况如何使用
tail -f /tmp/ffmpegRestarter.log."${startDateTime}".* 

您使用 Ctrl-C停止观看文件。

您可以完全退出终端并稍后返回查看该文件。

您还需要监控正在创建的文件,因此请使用这两个命令
/bin/ls -l /path/to/abc.* | tail -5
/bin/ls -l /tmp/ffmpegRestarter.log.* | tail -5

您可以更改 -5到任何你想要的号码,它会告诉你最后的 N每种类型的文件。

如果您认为有问题并想杀死脚本,请使用
pid=$(grep '[P]ID=' /tmp/ffmpegRestarter.log.YYYY-MM-DD.HHMM.$$)
pid=${pid#PID=}
ps -ef | grep "$pid" # this line to confirm that the job is still running
# will return something like
# userX 1088 1029 0 16:31 ? 00:00:00 /path/to/ffmpegRestarter.sh
kill $pid

#worst case, use
kill -9 $pid
# dont get in a habit of using `-9` on kill, bad things can happen! ;-)

我在这方面留下了一些小错误,因此您必须考虑发生了什么以及缺少什么;-) ...

根据您的查询“30 秒后运行另一个程序”,您只需要
nohup /path/to/ffmpegRestarter.sh > /tmp/ffmpegRestarter.log.${startDateTime}.$$ 2>&1 &
sleep 30
anotherProgram

IHTH。

关于bash - 如果连接中断,ffmpeg 从实时流中录制视频将关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com