1. SEI是什么
SEI(Supplemental Enhancement Information)是H264视频编码标准中的一种扩展信息,用于向视频码流中添加一些额外的辅助信息。这些信息可以在接收方处用来增强视频的观看体验或者对视频进行后续处理。SEI消息通常会被嵌入在视频帧的数据流中,但也可以单独发送。它们的格式由H.264标准定义,包括了消息类型标识符和消息有效负载。,H.265编码标准同样支持SEI。
SEI信息本身与视频的解码无关,视频播放过程中,忽略这些信息也不会影响视频帧的解码。
SEI类型属于编码协议中众多视频帧类型中的一种,其类型ID在H264/H265中各不相同。H265协议中对SEI进行扩展,包括了前置SEI和后置SEI。
|
帧类型 |
编码标准 |
H264_NAL_SEI |
6 |
H264 |
HEVC_NAL_SEI_PREFIX |
39 |
H265 |
HEVC_NAL_SEI_SUFFIX |
40 |
H265 |
2. 通过FFmpeg的filter_units获取SEI信息。
ffmpeg -i input_video.mp4 -c:v copy -bsf:v 'filter_units=pass_types=xxx' output
参数说明:
-i: 指定待处理的视频文件。
-c:v :指定输出文件的视频帧编码协议类型, copy表示保持源视频中的编码类型不变。
-bsf:v 指定要使用ffmpeg中的 Bitstream filter。 其中的filter_units过滤器主要用来处理视频帧类型。
filter_units=pass_types=xxx: 表示要提取xxx类型的视频帧。对于H264的源视频,取值为6;对于H265的源视频,取值39-40.
output:是输出文件,包含了源流中所有SEI内容的结果。其中每一帧SEI都是以start_code开头,后面接SEI的数据内容。
3. SEI的使用场景。
1. 直播互动: 用于播放特定提示语或展示特定内动。
2. 数据指标统计:编码时在视频中插入带有时间戳信息的SEI,在播放端解析出这些SEI,可统计视频延迟等数据。