如何让 ffmpeg 在直播推流时循环播放列表文件?

2018-04-30 18:13:11 +08:00
 ReZer0

各位大大好,最近在尝试 ffmpeg 打算用其试验下推流直播。但遇到个问题,不知如何让其循环推送列表文件。 大致语句是这样的:ffmpeg -f concat -re -stream_loop -1 -i "list.txt" ....

类似上述这样的命令,结果发现貌似 stream_loop 不适合合并播放? 每次列表执行完提示: illegal seek Failed to update header with correct duration. Failed to update header with correct filesize.

不知道是不是 list 文件内是否缺少循环语句?或是循环并不支持合并类的操作?还是我没有找到其它办法?

当然播放单一文件是可以循环的,列表也可以执行,只是结合起来就出现了问题。 想请教下大大们,这种是本身不支持,还是我的操作遗漏了什么,谢谢。

3459 次点击
所在节点    问与答
5 条回复
danRen
2019-11-25 15:37:31 +08:00
用 shell 写个循环就 OK
lsdir
2020-10-09 09:45:10 +08:00
问题解决了吗?
遇到同样问题
ReZer0
2020-10-09 11:14:23 +08:00
@lsdir 之前 FFMPEG 不支持没得解决,现在不清楚了。之前解决思路是有 2 种,一种是复制大法把 list 列表内部进行手动循环。第二种是写个进程监测脚本,监测到 FFMPEG 退出后执行启动脚本重新播放,较第一种简单方便,缺点是重启间隙会无信号几秒。(当然你可以设置监测脚本每 1 秒监测)
lsdir
2020-10-09 17:28:46 +08:00
@ReZer0 #!/bin/bash
while true
do
ffmpeg -f concat -safe 0 -re -i "/root/www/1.txt" -vcodec copy -acodec aac -b:v 3500k -b:a 320k -r 60 -f flv "rtmp://******11/hls/home"
done

网上找到的这个脚本,但是好像这个有个问题,具体好像是播放完一部以后就会生成大量的 TS 文件然后就不能播放了。
ReZer0
2020-10-10 09:21:30 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/451079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX