mk.*_*k.. 7 java-native-interface android ethernet video-streaming h.264
捕获通过以太网端口传输的1722个avb视频数据包,并在android中将其作为实时视频播放.视频包是NAL H.264流.
从以太网端口读取数据并捕获数据包的代码已准备就绪.简而言之,我有我的有效载荷数据.
我猜上面的过程称为去碎片.一旦去碎片化,我将把这个视频帧发送到android视频视图并在屏幕上显示它们.
任何有用的资源将非常感激.
小智 6
首先,我假设您的分析将在 NAL 单元上进行。下表显示了 NAL 单元类型的部分列表。在主要的 H264 编码器实现中,您可能只会发现 NAL 单元类型 1、5、6、7 和 8。您可能很少会发现其他 NAL 单元。
访问单元分隔符:
如果流具有 NAL 单元号 9,即访问单元分隔符,则您的问题更容易解决。2 个访问单元分隔符 NAL 单元之间的所有 NAL 单元都属于单个视频帧。由于此 NAL 单元类型是可选的,因此大多数编码器通常会跳过嵌入此 NAL 单元。所以。你很有可能在你的流中找不到这个 NAL 单元
NAL 单元 - 6 和 7:
这 3 个 NAL 单元不直接参与碎片化,但它们是解码操作所必需的。在大多数情况下,这两种类型在一个序列中仅出现一次,即在视频序列的开头。
NAL 单元 - 1 和 5:
这些是对去碎片化至关重要的 NAL 单元。对于给定的视频帧,所有 NAL 单元应携带相同的 NAL 单元,即 1 或 5。这些 NAL 携带帧的切片。我假设切片是按顺序排列的,因为 ASO(任意切片顺序)支持是在编码器中极为罕见的功能。帧的第一个切片带有一个标志,表明它是视频帧的开始。
上图由 H264 标准中的 2 个部分表(仅在此处相关)组合而成。
解码 NAL 标头(1 字节信息)后,您将确定它是 NAL 类型 1 还是 5(切片 NAL 单元)。一旦发现 NAL 作为切片单元,解析“first_mb_in_slice”符号的流(此信息紧跟在 NAL 标头信息的 1 个字节之后)。如果设置了此标志,则这是视频帧的第一个切片。以下 NAL 单元将此标志设为零,直到当前视频帧的最后一个切片。如果发现切片 NAL 单元的“first_mb_in_slice”标志被设置,则意味着这个新切片属于下一个视频帧并且是下一个视频帧的开始。
我希望这些细节将有助于解决您的问题
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |