HEVC NAL SEI时间码终止与字节对齐解析问题(基于FFmpeg)
H.265 SEI时间码报文的RBSP对齐问题
我当前写入文件的NAL SEI时间码报文为00 00 01 4E 01 88 06 XX XX XX XX XX 10 80(终止部分为10 80,payloadSize设为0x06,XX字节为帧/秒/分/时的编码值)。我的目标是通过ffmpeg -i video.h265 -c:v copy -bsf:v trace_headers -f null -和ffprobe -show_frames video.mov无错误读取时间码。
最后一个0x10字节的最左侧3个0位是time_offset_length(值为0)数据的结尾,我原本打算在此之后设置rbsp_stop_one_bit,再加上4个rbsp_alignment_zero_bits以实现字节对齐。
不同配置下的报错情况
- 采用无尾部0x80字节且payloadSize设为0x05的终止配置(如
00 00 01 4E 01 88 05 XX XX XX XX XX 10)时,FFmpeg报错:Invalid value at time_offset_length[i]: bitstream ended - 添加尾部0x80字节并将payloadSize改为0x06匹配时,FFmpeg未抛出警告,但trace_headers输出显示存在额外未使用的比特。
- 若去掉
bit_equal_to_one,FFmpeg在正确读取time_offset_length后会给出通用错误:Failed to read unit 0 (type 39)
疑问
- 在此场景下
bit_equal_to_one和bit_equal_to_zero的含义是什么? - 这是否为SEI终止的预期方式?
- 为何这些比特未被解析为对齐位?
内容的提问来源于stack exchange,提问作者rodeomacon
相关产品推荐
相关产品推荐

