gpt4 book ai didi

ffmpeg - 从 RTMP 流中实时提取帧作为图像

转载 作者:行者123 更新时间:2023-12-04 23:05:33 25 4
gpt4 key购买 nike

我正在将 H264 编码的短视频(4 或 5 秒)以 15 fps 的 VGA 质量从不同的客户端流式传输到使用生成 FLV 文件的 RTMP 的服务器。我需要尽快将视频中的帧作为图像进行分析,因此我需要在收到帧时将它们写入为 PNG 图像。

目前我使用 Wowza 来接收流,并尝试使用转码器 API 来访问各个帧并将它们写入 PNG。这部分有效,但在转码器开始处理之前大约有第二个延迟,当流结束时,Wowza 刷新其缓冲区,导致最后一秒没有被转码,这意味着我可能会丢失最后 25% 的视频帧。我试图找到一种解决方法,但是 Wowza say that it is not possible to prevent the buffer getting flushed .这也不是理想的解决方案,因为在我开始获取帧之前有 1 秒的延迟,并且在使用转码器时我必须重新编码视频,这在计算上是昂贵的,而且对我的需求来说是不必要的。

我还尝试过将视频实时传送到 FFmpeg 并让它生成 PNG 图像,但不幸的是,它要等到接收到整个视频后再生成 PNG 帧。

如何尽可能接近实时地从流中提取所有帧?我不介意使用什么语言或技术,只要它可以在 Linux 服务器上运行即可。如果我能找到一种方法让它在接收视频时写入图像,我会很乐意使用 FFmpeg,如果我能找到一种不丢失帧且不重新编码的方法,甚至是 Wowza。

感谢您的任何帮助或建议。

最佳答案

由于您从 red5 用户列表中链接了此问题,因此我将加两分钱。您当然可以在服务器端抓取视频帧,但您会遇到的问题是从 h.264 转码为 PNG。最简单的方法是在获取 VideoData 对象后使用 ffmpeg/avconv。这是一篇文章,提供了有关获取 VideoData 的一些详细信息:http://red5.5842.n7.nabble.com/Snapshot-Image-from-VideoData-td44603.html
另一种选择是在播放器端使用 Dan Rossi 的 FlowPlayer 插件之一:http://flowplayer.electroteque.org/snapshot

关于ffmpeg - 从 RTMP 流中实时提取帧作为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com