video-streaming - H264解码中解码器如何确定Single NAL Unit的大小

标签 video-streaming h.264 rtp

正如 RFC 6184 https://www.rfc-editor.org/rfc/rfc6184#section-5.6 第 5.6 节所述,单个 NAL 单元数据包只能包含一个 NAL 单元。

我的问题是接收端的解码器如何识别该单个 NAL 单元的大小或知道单个 NAL 单元数据包中 NAL 单元的结尾。

然而,在其他打包模式(例如 STAP 等)中,NAL 单元的大小作为 RTP 有效负载的一部分出现。

最佳答案

My question is how does an decoder now at the receiving end identifies the size of this Single NAL unit or knows end of NAL unit in the Single NAL unit packet.

操作系统/套接字 API 会告诉您接收到的 UDP (RTP) 数据包的大小。在 TCP 流式传输的情况下,RTP 数据包的大小通常会添加到 RTP 数据包之前(均位于 RTSPRFC4571 中)。 处理完 RTP header 后,有效负载就是 single nal unit mode 中的 NAL 单元。

虽然典型的 RTP header 为 12 个字节,但您应该根据 RFC3550 解析它,因为大小取决于 CSRC 和 RTP header 扩展。

对于 STAP,您需要知道大小,因为单个 RTP 数据包中有多个 NALU。因此,您必须通过读取大小来解析每一个。

关于video-streaming - H264解码中解码器如何确定Single NAL Unit的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34129731/

相关文章:

ios - 使用AgoraLab在本地和远程视频之间设置不同的缩放比例

android - WebRTC 的本地实时通信替代方案

ios - ios 可以播放 h264-mpegts 格式吗?

h.264 - RTP 分片与 UDP 分片

webrtc - 使用 Wireshark 或类似工具分析来自浏览器 webRTC 流的 RTP 数据包

video - 将rtsp视频流转为http流

javascript - 尝试使用 MSE 播放 webm 时出错, block 未附加,视频停止

FFMPEG API : how to use lossless h264 encoding?

windows - 如何在 Windows 中使用 H264 视频编码器 MFT 对位图进行编码

rtp - 如何强制客户端将 RTP 传输从 UDP 切换到 TCP?