我正在尝试通过Android应用中的RTMP在FLV容器中写出附件B格式的h264比特流。在阅读了this SO answer和更多内容之后,我了解到必须先将我的Annex B比特流转换为AVCC,然后再包装到FLV容器中。
就是说,FLV容器规范在其视频标签的包装中有点不清楚。它需要一个FrameType,它可以是:
[写入IDR或非IDR AVC帧(即VCL NAL单元时,很明显,应该分别使用选项1和2。但是,我的h264比特流也包含非VCL NAL单元,特别是SEI有效载荷类型47(显示方向)。目前尚不清楚是否按照规范从AVC到FLV是否适合。我是否只是将SEI视为不可搜索的框架?从FLV的角度来看,什么是“框架”?
我正在尝试通过Android应用中的RTMP在FLV容器中写出附件B格式的h264比特流。在阅读了此SO答案及其他内容之后,我了解到我的Annex B比特流首先具有...
flv称为帧,h264称为访问单元。就像您发布的链接所说,一个访问单元可以包含多个NAL。 SEI本身不是访问单元,因此它不是帧,因此它永远不应单独位于flv标签中,因此该问题没有意义。
根据Mathias Wien撰写的“高效视频编码:编码工具和规范”,所有SEI(补充增强信息)消息均被定义为视频解码和重建不需要的信息。通常,并非所有视频格式都可以表示此类信息。具体来说,显示方向消息不代表任何特定的视频帧,因为它是一个标志,一直持续到更改为止。