在 RTP 数据包中搜索 i 帧

发布于 2024-10-20 18:59:00 字数 136 浏览 6 评论 0原文

我正在使用 Axis IP 摄像机在 C# 中实现 RTSP。一切工作正常,但当我尝试显示视频时,我得到的前几帧有很多绿色补丁。我怀疑问题是我没有先将 i-frame 发送给客户端。

因此,我想知道检测 RTP 数据包中的 i 帧所需的算法。

I am implementing RTSP in C# using an Axis IP Camera. Everything is working fine but when i try to display the video, I am getting first few frames with lots of Green Patches. I suspect the issue that I am not sending the i-frame first to the client.

Hence, I want to know the algorithm required to detect an i-frame in RTP Packet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无人问我粥可暖 2024-10-27 18:59:00

当启动 RTSP 会话时,服务器通常会使用配置数据启动 RTP 流,后跟第一个 I 帧。

可以想象,您的 Axis 摄像机设置为“始终多播” - 在这种情况下,RTSP 通信会生成 SDP 描述,该描述告诉客户端接收多播流所需的所有网络和流详细信息。

由于多播流始终存在,因此您很可能首先收到一些 P 或 B 帧(取决于 GOP 大小)。

您可以在 RTP 客户端中检测这些 P/B 帧,就像 Ralf 建议的检测 I 帧一样,通过 NAL 单元类型识别它们。只需跳过 RTP 客户端中的所有帧,直到收到第一个 I 帧。
现在您可以将所有后续帧转发到解码器。

或者你给改变你的相机设置!

詹斯。

ps:不要忘记 RTP 流中有碎片 - 这意味着除了 RTP 标头之外还有一些碎片信息。在识别框架之前,您必须重新组装它。

when initiating a RTSP-Session the server normaly starts the RTP-stream with config-data followed by the first I-Frame.

It is thinkable, that your Axis-camera is set to "always multicast" - in this case the RTSP-communication leads to a SDP description which tells the client all necessary network and streaming details for receiving the multicast stream.

Since the multicast stream is always present, you most probably receive some P- or B- frames first (depending on GOP-size).

You can detect these P/B-frames in your RTP client the same way you were detecting the I-frames as suggested by Ralf by identyfieng them via the NAL-unit type. Simply skip all frames in the RTP client until you receive the first I-frame.
Now you can forward all following frames to the decoder.

or you gave to change you camera settings!

jens.

ps: don't forget that you have fragmentation in your RTP stream - that means that beside of the RTP header there are some fragmentation information. Before identifying a frame you have to reassemble it.

情定在深秋 2024-10-27 18:59:00

这取决于视频媒体类型。如果以 H.264 为例,您将查看 NAL 单元标头来检查最终单元类型。

绿色补丁确实可能是由于没有先收到 iframe 造成的。

It depends on the video media type. If you take H.264 for instance, you would look at the NAL unit header to check the nal unit type.

The green patches can indeed be caused by not having received an iframe first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文