H264 NAL 单元前缀

2023-11-23

我需要对 H264 NAL 单位分隔符前缀进行一些澄清(00 00 00 01 and 00 00 01),我正在使用 Intel Media SDK 生成 H264 并将其打包到 RTP 中。问题是到目前为止我只是在寻找00 00 00 01作为单位分隔符,基本上只能在比特流中找到 AUD、SPS、PPS 和 SEI 单位。查看内存,我发现 SEI 之后有一个字节序列00 00 01 25这可能是 IDR 单元的开始,但由于缺少零字节,我的搜索算法没有检测到它。任何人都可以澄清之间的区别00 00 00 01 and 00 00 01前缀?看着铬代码似乎第一个单位以及 AUD、SPS、PPS 和 SEI 都有一个额外的零:

if (first_nal_in_this_access_unit ||
    IsAccessUnitBoundaryNal(nal_unit_type)) {
    output_size += 1;  // Extra zero_byte for these nal units
    first_nal_in_this_access_unit = false;
}

...

static bool IsAccessUnitBoundaryNal(int nal_unit_type) {
    // Check if this packet marks access unit boundary by checking the
    // packet type.
    if (nal_unit_type == 6 ||  // Supplemental enhancement information
        nal_unit_type == 7 ||  // Picture parameter set
        nal_unit_type == 8 ||  // Sequence parameter set
        nal_unit_type == 9 ||  // Access unit delimiter
        (nal_unit_type >= 14 && nal_unit_type <= 18)) {  // Reserved types
            return true;
        }
    return false;
}

1)我假设我应该查找两个前缀,但后来我明白我需要检查下一个 NAL 单元的类型,以便了解当前单元的长度(了解前缀是 3 还是 4 个字节)并且不消耗可能是前一个 NAL 单元末尾的零字节作为前缀)。

2) PPS、SPS 和 SEI 大小是固定的吗?如果是这样,我在寻找下一个前缀时可以跳到单元的末尾。

我希望有更多这方面经验的人可以评论以上问题。


From H.264 规范、B.1.2 字节流NAL单元语义:

enter image description here

Zero_byte 是等于 0x00 的单个字节。

当满足以下任一条件时,将出现zero_byte 语法元素。

  • nal_unit()中的nal_unit_type等于7(序列参数集)或8(图片参数集)
  • 字节流 NAL 单元语法结构包含按解码顺序排列的访问单元的第一个 NAL 单元,如子条款 7.4.1.2.3 所指定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

H264 NAL 单元前缀 的相关文章

  • 如何在同一个 HTML5 播放器中放大视频并切换视频流?

    我的视频将分为 4 个视频 首先 播放器将传输较低分辨率的原始视频 然后用户可以放大视频以查看更多细节 我需要播放器根据用户放大的位置传输 4 个视频之一 分辨率较高 我如何使用 VideoJS 或任何其他视频播放器来实现这一点 经过一番查
  • Firefox 在收到指定内容范围的 206 后不会请求进一步的数据

    为了提供一些背景信息 我有一个
  • Android 上的 UDP 视频流

    我有一个 Android 项目 需要构建一个客户端应用程序来接收 UDP 或 RTP 单播视频流并播放它们 不幸的是 我似乎无法使其正常工作 并且已经广泛搜索了解决方案 我已经在 Xoom Android 3 2 和 Nexus S And
  • ffmpeg:记录/捕获流并同时进行场景检测

    是否可以同时捕获 录制 RTSP 流and使用单个 ffmpeg 命令捕获场景变化事件 我几乎可以做我想做的事 ffmpeg i rtsp mystream map 0 v map 0 a c v copy c a copy f segme
  • 使用 GStreamer 将视频转换为 WebM

    文档用于GStreamer令人困惑 这仍然不是诉诸的借口StackOverflow com 但仍然 是什么GStreamer命令行将任何视频文件 任何格式 转换为 WebM WebM 音频 这是我能找到的唯一带有示例的文档 http gst
  • 在线视频流

    我想制作一个视频网站 我们可以在其中上传任何格式的视频并像 youtube 一样显示 我怎样才能做到这一点 我的整个网站都是用 PHP 编写的 我是视频流 SP 的新手 请描述一下您的答案 Thanks 首先你需要一个用Flash Acti
  • 非 IDR 图片 NAL 单元 - 0x21 和 0x61 含义

    有谁知道是什么0x21 and 0x61是指在 h 264 编码的视频流中吗 我知道0x01意味着它是一个b frame and 0x41意味着它是一个p frame 我的编码视频给了我两个0x21帧后跟一帧b frame I 21 21
  • FFmpeg RTP 流媒体错误 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想通过 FFmpeg 播放视频文件 但出现此错误 RTP 复用器仅支持一种流 当我写这个时 我得到了这个错误 ffmpeg exe i SomeVi
  • 如何使用 FFMPEG 获得最佳的 FLV 整体质量?

    我希望以最小的文件大小实现最佳质量的 FLV 毕竟 这不是每个人的目标吗 如果这有什么影响的话 这些视频将会被直播 目前 我的视频宽度不超过 320 像素 有些是宽屏 因此它们的高度略小于 240 像素 就目前情况而言 转换后的 FLV 的
  • 有没有办法在转码之前使用 ffmpeg 确定文件的编码?

    我计划使用 ffmpeg 确保上传到我网站的所有视频文件都编码为 mp4 h264 我不想自动处理每个文件 而是希望通过仅处理那些还不是 mp4 h264 的文件来最小化处理开销 有没有一种简单的方法可以使用 ffmpeg 或其他命令行实用
  • NetStream.appendBytes

    我有一个连接到 Flash Media Server 的 netConnection 我正在尝试使用 Flash Player 10 1 中的新appendBytes 函数将本地FLV 文件流式传输到FMS 但是我遇到了问题 我在网上获取的
  • 将视频流式传输到 gstreamer rtsp 服务器

    我正在尝试构建一个基于gstreamer的rtsp视频服务器 就我而言 我需要客户端连接到服务器并开始将视频流传输到服务器 我读过一些关于这个主题的教程 尤其是这个 http www ip sense com linuxsense how
  • 无法打开 HTTP 流:打开文件时出错 (../cap_ffmpeg_impl.hpp:529)

    这是我的 HTTP 流的链接格式 用户 密码和地址已更改为虚拟 http username email protected cdn cgi l email protection 8093 axis cgi mjpg video cgi 该流
  • Gstreamer、rtspsrc 和负载类型

    我在从特定摄像头检索 rtsp 流时遇到困难 因为摄像头提供的 rtp 有效负载类型是 35 未分配 并且该摄像头接受的有效负载类型rtph264德佩插件的范围是 96 127 结果是 gstreamer 显示如下错误
  • WebRTC 暂停和恢复流

    我正在尝试使用 WebRTC 构建一个 Web 应用程序 当某些事件触发时需要暂停 恢复视频 音频流 我已经尝试过getTracks 0 stop 但我不知道如何恢复流 对此有什么建议吗 谢谢 getTracks 0 stop 是永久的 U
  • Websocket 连接失败并显示星号 11

    我正在尝试将 websocket 配置为与 asterisk 11 一起使用 但是存在一些问题 我遵循的步骤是 在 http conf 中启用以下内容 enabled yes bindaddr 0 0 0 0 bindport 8088 我
  • 将 H264 视频转换为原始 YUV 格式

    是否可以使用 ffmpeg 从 H264 编码视频创建原始 YUV 视频 我想用 matlab 打开视频并逐帧访问 Luma Cb 和 Cr 分量 是的 您可以 您只需指定像素格式即可 要获取格式的完整列表 ffmpeg pix fmts
  • 适用于 iPhone 和 HTTP 直播的实时视频聊天

    所以一般来说 我想为 iPhone 制作一个具有视频聊天功能的应用程序 但经过多次搜索 我仍然找不到任何成功的结果 是否有任何公共或私有 API 可用于在 iPhone 上执行此操作 如果您的答案是 是 请帮助我 基本上 我想要的是读取连接
  • 来自相机的 MediaCodec 视频流方向和颜色错误

    我正在尝试流式传输视频捕获直接从相机适用于 Android 设备 到目前为止 我已经能够从 Android 相机捕获每一帧预览帧 byte data Camera camera 函数 对数据进行编码 然后成功解码数据并显示到表面 我用的是安
  • 可以使用带有 HTML5 播放器的 Amazon S3/CloudFront 流式传输视频吗?

    我想使用 HTML5 视频播放器并流式传输视频 S3 CloudFront 可以实现这一点吗 我了解 Amazon 使用 RTMP 流媒体协议和 HTML5video标签不支持 RTMP 有没有办法用 HTML5 播放器播放视频 Wayne

随机推荐