起始码与长度前缀
Annex B 使用 0x000001 或 0x00000001 起始码分隔 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 文件。