StreamParser
打开工具
Annex B

Annex B 裸码流和 MP4/MKV 有什么区别?

Annex B 是视频编码码流的一种字节流格式,MP4/MKV 是容器格式。容器可以封装视频、音频、字幕、时间戳和元数据,而本工具解析的是已经提取出来的 H.264/H.265 裸码流。

起始码与长度前缀

Annex B 使用 0x0000010x00000001 起始码分隔 NAL 单元。MP4 内部通常不是这样保存 NAL,而是使用长度前缀,并把 SPS/PPS/VPS 等参数放在容器元数据或样本描述中。因此把 MP4 直接当 Annex B 扫描,通常找不到正确的 NAL 边界。

如何用 FFmpeg 提取 H.264

如果 MP4 中的视频轨是 H.264,可以使用 bitstream filter 转成 Annex B:

ffmpeg -i input.mp4 -c:v copy -bsf:v h264_mp4toannexb -an output.h264

如何用 FFmpeg 提取 H.265

如果 MP4 中的视频轨是 H.265/HEVC,可以使用:

ffmpeg -i input.mp4 -c:v copy -bsf:v hevc_mp4toannexb -an output.h265

什么时候不需要转换

摄像头、编码器 SDK、传输流或调试工具有时直接输出 Annex B 裸流。这类文件通常扩展名是 .h264.h265.264.265.bin,可以直接上传到本工具。

如果页面提示检测到 MP4/MKV 容器,说明输入文件还没有提取成裸码流。先用 FFmpeg 转换,再上传输出的 .h264.h265 文件。