【问题标题】:Bash output trackingBash 输出跟踪
【发布时间】:2021-09-28 21:03:34
【问题描述】:

我在 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

这一次流不起作用。如何补充我的脚本,它会在控制台中运行命令输出后进行跟踪,并且当错误 Invalid date found when processing input 将结束进程并立即重新启动流?

【问题讨论】:

    标签: bash ffmpeg


    【解决方案1】:

    如果 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
    

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2022-01-27
      相关资源
      最近更新 更多