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

时间:2018-02-05 10:48:49

标签: video video-streaming video-capture rtsp sdp

不确定是否可行,但如何在不连接流(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

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

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

由于

1 个答案:

答案 0 :(得分:0)

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

你猜可能已经有了一些解决方案,它会连接,得到一个帧,然后断开连接。如果您不知道也可以通过ffmpeg使用以下命令执行此操作,虽然我不确定带宽开销是什么或者它如何打开和关闭封面下的连接 - 您需要试验它以查看:

  

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

值得注意的是,使用的编解码器会影响您需要的帧数 - 简单的编解码器或编解码器配置文件将分别编码每个帧,但其他帧将每个都有参考帧,例如,第10帧和中间的帧将被编码为参考帧的增量。因此,除了目标帧之外,您还需要实际获取前一个参考帧,有时甚至是下一个参考帧,以实际提取图像。

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