【问题标题】:ffmpeg mp4 to webm through icecast server livestreamffmpeg mp4 通过icecast 服务器直播到webm
【发布时间】:2017-11-27 10:58:55
【问题描述】:

我正在尝试在 icecast 服务器上流式传输大型 MP4 视频 (2.5Go)。在玩了很多 ffmpeg 选项以获得最佳质量/速度编码设置之后,我遇到了一个奇怪的问题。

如果我启动我的 ffmpeg 流并在浏览器中加载视频,我可以看到它,但如果我在 30 秒后尝试加入它,我只会在底部视频播放器栏出现黑屏。

有什么地方可以看到错误吗?在哪里?如果错误来自 ffmpeg / icecast / 我的网络浏览器,我真的不明白......

如果有人可以给我一个线索。

这是我在 ffmpeg 上的设置:

./ffmpeg -i stream/my_video.mp4 \
        -acodec libopus -b:a 64k \
        -vcodec libvpx -b:v 500K -crf 25 -vf scale=640:360 -content_type video/webm \
        -loop 365 \
        icecast://source:Password@server:8000/live.webm

【问题讨论】:

    标签: ffmpeg video-streaming streaming webm icecast


    【解决方案1】:

    2020 年更新链接已关闭。从互联网上查找archive。基本上 GOP 比率是用-g option 设置的。所以给它一个值-g 5,例如将值设置为5。

    看看你的设置,我猜你没有设置 GOP 比率,因此浏览器,或者说它使用的编解码器,没有任何关键帧开始。

    参见。 https://plus.google.com/+icecast/posts/iPsLfVaJ95C

    是的,这会降低效率,但这就是能够调到流中并立即看到图片的代价。 ;-)

    【讨论】:

    • 5 帧的 GOP 长度太疯狂了……至少将其设置为 2 秒。如果编码设置正确并保证在关键帧上启动集群,Icecast 是否会正确缓冲,保留一两个集群以快速启动?
    • 恐怕目前还没有。我很乐意为 2.5 打补丁来改进它。是的,这很疯狂,但如果你增加它更多的浏览器将开始无法同步。 :-(
    • 对不起,我没有适合你的 Icecast 补丁...我的服务器是用 Node.js 实现的。可以缓冲 WebM 服务器端并将该缓冲区刷新到浏览器以便快速启动而不会出现所有故障......结构只需要正确,集群需要从关键帧开始,这需要 FFmpeg 中的一些标志,或者你的编码器是什么。
    • 很有可能,更多的编码器调整会进一步改善这种情况。不过,我希望我们能够加强对下一个版本的 EBML (WebM) 支持。
    • 好的!这样可行 !我必须输入一个-g 10 -keyint_min 10 并实际等待 1~2 分钟,然后才能在我的浏览器中获取视频。非常感谢。
    【解决方案2】:

    ffmpeg 网站建议使用两倍帧率的 -g:

    encoding for streaming sites

    有关-g 的更多信息,请参阅 icecast/ffmpeg 文档:

    webm to icecast with ffmpeg

    我的-g 150 流媒体很好

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 2019-06-02
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多