h264到FLV的转换,模棱两可的帧类型定义:关键帧与帧间帧有何区别?

问题描述 投票:0回答:2

我正在尝试通过Android应用中的RTMP在FLV容器中写出附件B格式的h264比特流。在阅读了this SO answer和更多内容之后,我了解到必须先将我的Annex B比特流转换为AVCC,然后再包装到FLV容器中。

就是说,FLV容器规范在其视频标签的包装中有点不清楚。它需要一个FrameType,它可以是:

  1. 关键帧(对于AVC是可搜索的帧)
  2. 帧间(对于AVC,不可搜索的帧)
  3. 一次性帧间(仅适用于h263)
  4. 生成的关键帧(仅服务器端)
  5. 视频信息/命令帧(消息字符串包含一个字节,0或1表示客户端寻找视频帧序列的开始,或客户端寻找帧序列的结束)
  6. [写入IDR或非IDR AVC帧(即VCL NAL单元时,很明显,应该分别使用选项1和2。但是,我的h264比特流也包含非VCL NAL单元,特别是SEI有效载荷类型47(显示方向)。目前尚不清楚是否按照规范从AVC到FLV是否适合。我是否只是将SEI视为不可搜索的框架?从FLV的角度来看,什么是“框架”?

我正在尝试通过Android应用中的RTMP在FLV容器中写出附件B格式的h264比特流。在阅读了此SO答案及其他内容之后,我了解到我的Annex B比特流首先具有...

android video-streaming h.264 rtmp flv
2个回答
0
投票

flv称为帧,h264称为访问单元。就像您发布的链接所说,一个访问单元可以包含多个NAL。 SEI本身不是访问单元,因此它不是帧,因此它永远不应单独位于flv标签中,因此该问题没有意义。


-1
投票

根据Mathias Wien撰写的“高效视频编码:编码工具和规范”,所有SEI(补充增强信息)消息均被定义为视频解码和重建不需要的信息。通常,并非所有视频格式都可以表示此类信息。具体来说,显示方向消息不代表任何特定的视频帧,因为它是一个标志,一直持续到更改为止。

© www.soinside.com 2019 - 2024. All rights reserved.