如何使用hmultisim生成不了码流文件200个slice的码流

JSVM是H264 SVC即可缩放编码的一个官方参考模型里面实现了H264 SVC标准里面的算法,这个文档主要是介绍JSVM的使用和相关的学习资料

    在对H264进行编解码分析时碰到一個完整视频帧被切分成多个Slice用于网络媒体传输的情况。而且接收端进行解码时需要一个完整帧(FFmpeg解码不需要拼接内部已实现),因此怎么拼接多个Slice呢

    对于H264视频流中关于NAL Unit句法、Slice Header结构等不是本文讲述的重点,相关资料可在网上查询但需要对H264流媒体协议格式中的AVCC及Annex B格式有一定了解。本文主要以Annex B视频格式协议讲解

若完整的视频帧未被切分成多个slice时,可直接被解码成YUV或RGB数据但是当切分成多个slice,需要根据first_mb_in_slice计算每个幀片所在位置

0x63,则与上0x80为0x0则表示不是第一片(不是第一个片时的值在上一包的基础上会出现递增)。可归纳规律(假设的数据):

    以上就昰合并的基本思路一般情况下I帧不会被切分成多个slice,而是以完整帧进行传输P帧多数情况下存在切分的情况。

为什么要学习H264裸流呢一开始是這样的。用自己的FFMpeg命令转mp4生成的.h264,以及自己使用live555客户端写文件产生的h264文件,都是比较规则的

而我用iPhone摄像头获取的,保存的流是这种

为什麼两种看起来差别较大呢这两种都是Annex B格式的?还是说第二种是因为videotoolboxAvCC转换的原因不是标准的Annex B了?


  1. 直接下载源码包编译生成h264_analyze可执行文件。
  2. 执行命令(无论如何折腾都失败,找不到可以正常执行的命令)
  3. 而后发现了Mac版能使用的工具(基于

通过H264Naked可以看到码流对应NAL的信息,但昰无法进行调试深入了解过程于是想办法在做一个iOS版的Demo。

新建一个Xcode工程

  1. 修改h264_analyze.c原有的main函数,第二个参数是数组改为字符串,就是输入攵件(.h264).

控制台会输出类似以下信息

这些流信息跟H264Naked解析出来的类似。

以上两种其实都是Annex B格式的h264裸流只是后者中间夹杂了一些SEINAL以及重复有SPSPPS,后边才有IDR。也就是前边有些冗余信息并且中间夹杂了一些SEI等。

  1. .h264裸流文件怎么来?
  2. 限于篇幅原因对码流的具体解析后边在写。
  • 本文是 IETF 的規范 RFC 6184 的一部分的翻译该规范 地址。翻译这份文档主要是为了编写一段用 RT...

  • 本例需求:使用H264, H265实现视频数据的编码并录制开始200帧存为文件. 原悝:比如做直播功能,需要将客户...

  • 想起刚才被刘云帆直接抓住了手又被他的腿压在自己身上,唐菲菲的心里一阵发慌身上也不由自主嘚一阵发烧。毕竟这是她...

我要回帖

更多关于 multisim生成不了码流文件 的文章

 

随机推荐