Bash 输出跟踪

标签 bash ffmpeg

我在 Bash 脚本中创建了一个无限循环以重新开始流式传输。

#!/bin/bash
while true
  do
    ffmpeg -re -rtsp_transport tcp -i "rtsp://{address:port}/{key}" -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -c:a libmp3lame -ab 128k -ar 44100 -c:v copy -threads 2 -bufsize 512k -f flv "rtmps://{address:port}/live/{key}" &
    PID=$!
    sleep 12h
    kill $PID
    sleep 2
 done
但有时会出现错误……在控制台中以如下形式显示:
rtsp://{address:port}/{key}: Invalid date found when processing input
而这一次流不起作用。如何补充我的脚本,它会在控制台中运行命令输出后以及何时出现错误 时进行跟踪处理输入时发现无效日期将结束该过程并立即重新启动流?

最佳答案

如果 ffmpeg 没有在后台启动,这会容易得多:您只需要检查退出状态。
但是因为我们要处理多个进程,所以我们必须合并一些进程间通信。
使用信号:这是 未经测试 :

#!/bin/bash

# set up a signal handler for SIGUSR1
trap 'echo "ffmpeg died!"; exit 1' USR1

while true; do
    (   # start a subshell
        # if ffmpeg exits non-zero, signal the parent shell
        ffmpeg -options... || kill -s USR1 $$
    ) &
    # rest of loop is the same
done

关于Bash 输出跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68470315/

相关文章:

powershell - 如何从使用带有 ffmpeg 的时间戳命名的帧创建视频

c++ - ffmpeg 调用 avcodec_send_packet 失败

linux - 如何使用 df 命令查找可用和已用内存总量

linux - 编译 aarch64 二进制 bash 脚本

linux - 使用 gnu-coreutils、bash 获取二进制文件的一部分

image - ffmpeg 在不同时间点在视频中嵌入多个图像

filter - 如何使用 ffmpeg 过滤器音量在 10 秒后静音 2 秒?

具有负偏移量的ffmpeg裁剪

linux - 如何从 linux 控制台发送 facebook 消息(命令行)

bash - 在 stdout 上打印 n 行 "command' s --help"