我在PES解复用器中检测新的PES包,搜索packet_start_code_prefix(0x000001).当它发生时,我可以读取PES_packet_length,因此我可以从字节流中提取当前的PES包.但如果它是H.264视频流,那么PES_packet_length = 0.
在这种情况下如何提取PES包?0x000001也可能出现在H.264 nal单位字节流中,因此我不能使用此前缀来查找下一个PES数据包.
我注意到在每个H.264 PES包中,PES包中的最后一个单元是填充数据(nal_unit_type = 12).我是否需要使用此事实来检测当前PES数据包的结束?
我试图通过使用十六进制编辑器查看视频文件的比特流来了解一些有关 h264 的知识。我在这里找到了视频对象平面 (0x000001b6) 和 i 帧 (0x000001b600) 的起始代码。
但我在视频文件中找不到很多这样的字节。大多数情况下,这些起始代码出现在文件的开头,中间只有几位。我预计它们会非常有规律地出现,在整个文件中距离相等!?
用这种方式用十六进制编辑器查看文件是否可以?还存在哪些其他起始代码以及 h264 文件是如何组织的?
我需要拆分mpeg4视频流(实际上来自Android视频摄像头)通过RTP发送它.规格有点大,无法快速参考.
我想知道是否有任何mpeg4打包的示例/开源代码?
谢谢你的帮助 !
我检查了一些MPEG-4视频标题,并在开头看到了一些如下所示的字节数组:
00 00 01 B0 01 00 00 01 B5 89 13
Run Code Online (Sandbox Code Playgroud)
我知道00 00 01零件但究竟是什么B0 B1和B5 89 13零件意味着什么?实际上,如果我把这个字节数组放在MPEG-4流的前面,它可以正常工作.
但我不知道这些值是否适用于不同的mpeg-4流源?
我想知道如果 MPEG-4 尝试压缩具有完全随机像素的图像会发生什么。所以我用 Python 中的 Pillow 制作了一个带有随机像素的图像。
这不是动画,因为动画太大了。每个像素的颜色是完全随机的。因为 MPEG-4 应该只混合相似的颜色。因此,由于颜色偶然相似,因此应该有一些混合颜色。那不是发生的事情。
压缩中有一个CLEAR模式。它看起来像一个清晰的、未压缩的补丁和压缩混合补丁的矩阵。这是怎么回事?效果在 .mp4 文件中更加清晰,请单击此处查看。在我的设备上存储的原始文件中,它更加清晰。这不是 Python 通过random模块生成的伪随机数应该发生的事情。
所有帧中的所有像素都是通过以下方式创建的:
[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)]
Run Code Online (Sandbox Code Playgroud)