代码之家  ›  专栏  ›  技术社区  ›  Aakash Gupta

FFMPEG流式传输更新图像到FB实时视频

  •  0
  • Aakash Gupta  · 技术社区  · 8 年前

    我正在尝试使用以下命令将图像流式传输到fb实时视频:

    ffmpeg -loop 1 -re -i "input.jpg" -pix_fmt yuv420p -profile:v baseline -s 720x480 -bufsize 6000k -vb 400k -maxrate 1500k -deinterlace -t 60 -vcodec libx264 -preset veryfast -g 30 -r 30 -f flv "rtmp_link"

    这个命令对于一个输入文件非常有效。但问题是,我希望ffmpeg流式传输“input.jpg”文件的最新和更新版本,因为我的应用程序每2-3秒更新一次“input.jpg”,但流式传输的图像是旧版本,而不是更新版本。

    如果我尝试重新启动此循环,则流媒体停止约4-5秒,这足以让FB直播视频认为流媒体已停止,然后结束直播视频。

    那么,是否可以使用输入文件的最新可用版本在该循环中进行流式传输?我不太了解FFMPEG,我试图搜索这个问题,但都是徒劳的。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Aakash Gupta    8 年前

    我终于找到了解决这个问题的办法。当我直接重写输入时。jpg文件使用我的rails应用程序,这个过程需要几毫秒,但在此期间,ffmpeg正在流式传输这个文件,该文件在几毫秒内不完整。

    因此,这个问题的解决方案是首先将更新后的图像写入一个临时文件,如input.tmp。img,然后使用脚本或类似终端将此文件移动到原始文件 mv input.tmp.img input.jpg 由于移动过程几乎不需要任何时间,这为我解决了问题。