如何在不连接流的情况下从视频流中抓取单个图像(带宽问题)



不确定是否可能,但是如何在不连接流(rtsp)本身的情况下从视频流中获取单个图像(我有带宽问题)?

(优先于Python,但任何代码框架/语言都会很好)。

这是流的示例 SDP 文件:

v=0
o=Teleste 11501847 688 IN IP4 1.1.1.1
s=unnamed (mpeg4/tx-1)
i=Teleste MP-X AUDIO/VIDEO Encoder
c=IN IP4 221.1.1.1/64
t=0 0
m=video 4002 RTP/AVP 96
b=AS:6400
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=1;config=000001B005000001B509000001000000012000C4F84048800F516843C1463F

我有一个解决方案,可以在与流建立连接后提取单个图像,但我正在寻找一种由于带宽问题而不需要完全连接到流的解决方案。

我是视频流世界的新手,任何想法或建议都会很好。

谢谢

除非您的服务器支持某些功能来提供此功能,否则我认为如果不连接到流,您将无法从流中获取某些内容。

我猜,您可能已经有一些解决方案可以连接,获得一个框架,然后断开连接。如果您不知道,您也可以使用以下命令通过 ffmpeg 执行此操作,尽管我不确定带宽开销是多少或它如何在幕后打开和关闭连接 - 您需要试验它才能看到:

ffmpeg -y -i rtsp://your_rtsp_strea -frames:v 1 输出.jpg

值得注意的是,正在使用的编解码器将影响您需要的帧数 - 简单的编解码器或编解码器配置文件将分别对每个帧进行编码,但其他编解码器将每隔 10 帧具有参考帧,中间的帧将被编码为参考帧的增量。因此,除了目标帧之外,您还需要实际获取上一个参考帧,有时甚至是下一个参考帧才能实际提取图像。

如果您的流在 DASH 或 HLS 中可用,那么您也可以选择只下载单个片段 - 这些协议已经将视频流分成多个片段,通常长度在 2 到 10 秒之间。但是,您确实需要确保从所需的比特率下载段 - 这些协议将具有多个比特率流,以允许不同的分辨率和网络条件。

最新更新