V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ReZer0
V2EX  ›  问与答

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

  •  
  •   ReZer0 · 2018-04-30 18:13:11 +08:00 · 3435 次点击
    这是一个创建于 2399 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大大好,最近在尝试 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 文件内是否缺少循环语句?或是循环并不支持合并类的操作?还是我没有找到其它办法?

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

    5 条回复    2020-10-10 09:21:30 +08:00
    danRen
        1
    danRen  
       2019-11-25 15:37:31 +08:00
    用 shell 写个循环就 OK
    lsdir
        2
    lsdir  
       2020-10-09 09:45:10 +08:00
    问题解决了吗?
    遇到同样问题
    ReZer0
        3
    ReZer0  
    OP
       2020-10-09 11:14:23 +08:00
    @lsdir 之前 FFMPEG 不支持没得解决,现在不清楚了。之前解决思路是有 2 种,一种是复制大法把 list 列表内部进行手动循环。第二种是写个进程监测脚本,监测到 FFMPEG 退出后执行启动脚本重新播放,较第一种简单方便,缺点是重启间隙会无信号几秒。(当然你可以设置监测脚本每 1 秒监测)
    lsdir
        4
    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
        5
    ReZer0  
    OP
       2020-10-10 09:21:30 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:39 · PVG 22:39 · LAX 06:39 · JFK 09:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.