我正在尝试配置重新流式传输服务器,ffmpeg 在 rtmp://ip:port 上监听并输出到一些流式传输服务(youtube、twitch……等),问题是当我停止 OBS 流式传输(在本地 PC 上使用它)时,服务器上的 ffmpeg 会关闭,下次流式传输时我需要手动运行它。在 ffmpeg dock 中找不到选项,即使输入源关闭,该选项也会使 ffmpeg 继续监听。也许我在文档中遗漏了某些内容,或者是时候编写将重新启动 ffmpeg 的脚本了?
我正在对 ffmpeg 使用这个命令:
ffmpeg -re -listen 1 -i rtmp://i.p:1234 -c:v libx264 -preset medium -maxrate 3500k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmp://live-ams.twitch.tv/app/key
答案1
当您使用 Linux 时,您可以创建 systemd 服务:
[Unit]
Description=ffmpeg listening and forward stream
After=syslog.target network.target
[Service]
PIDFile=/tmp/ffstreamer.pid
ExecStart= /usr/local/bin/ffmpeg -re -listen 1 -i rtmp://i.p:1234 -c:v libx264 -preset medium -maxrate 3500k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmp://live-ams.twitch.tv/app/key
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
当输入失败时,它会重新开始该过程。
答案2
你也可以使用 udp 而不是 tcp,
因为无连接,所以它不会结束进程