如何解码H264 SDP中的sprop-parameter-sets?

时间:2010-03-04 10:52:13

标签: base64 h.264 sdp

对于h264流,SDP中sprop-parameter-sets中Base64解码字节的含义是什么?如何从此示例中了解视频大小?

SDP示例:

sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==

第一部分从Base64解码到Base16:

67 42 00 29 E3 50 14 07 B6 02 DC 04 04 06 90 78 91 15

第二部分(以逗号分隔):

68 CE 3C 80

答案: Fetching the dimensions of a H264Video stream

4 个答案:

答案 0 :(得分:13)

您需要的规格可从国际电联网站免费下载: - H.264 (03/10)

选择可免费下载的PDF,您将找到第7.3.2.1.1节中详述的格式。

抱歉,我之前的回答并没有变得迟钝,只是不知道这些信息是在公共领域提供的。

答案 1 :(得分:6)

当然规范总是最好的,但SDP中的sprop-parameter-sets通常由你的序列参数和图片参数集组成,base-64编码并用逗号分隔。序列参数和图像参数集基本上告诉解码器如何正确解码输入的H264流;没有它你就无法正确解码。

为SPS / PPS编写解析器并不难,但要做到这一点,您绝对需要规范。您还需要有一个很好的位读者类以及指数golomb编码如何对有符号和无符号值起作用的知识。请参阅herehere

最后,在Doom9上的this thread中找到的代码对我来说非常宝贵 - 它基本上是一个基本的H264流的完整解析器。它包括一个位读取器类,解析NALU的例程,sps,pps,VUI参数,序列缩放矩阵等。对于任何视频工程师来说,它都是一个非常方便的代码。

答案 2 :(得分:1)

事实证明,我的问题的答案写在本文件中: ISO / IEC 14496-10:2005 ,在 7.3.2.1。部分下面得到它我需要付钱。所以... =)

答案 3 :(得分:1)

视频大小位于SDP的“帧大小”行中,不是吗?

00028 int av_strstart(const char *str, const char *pfx, const char **ptr)
00029 {
00030     while (*pfx && *pfx == *str) {
00031         pfx++;
00032         str++;
00033     }
00034     if (!*pfx && ptr)
00035         *ptr = str;
00036     return !*pfx;
00037 }
00038 

p是您的行SDP的指针

       if (av_strstart(p, "framesize:", &p)) {
00370         char buf1[50];
00371         char *dst = buf1;
00372 
00373         // remove the protocol identifier..
00374         while (*p && *p == ' ') p++; // strip spaces.
00375         while (*p && *p != ' ') p++; // eat protocol identifier
00376         while (*p && *p == ' ') p++; // strip trailing spaces.
00377         while (*p && *p != '-' && (dst - buf1) < sizeof(buf1) - 1) {
00378             *dst++ = *p++;
00379         }
00380         *dst = '\0';
00381 
00382         // a='framesize:96 320-240'
00383         // set our parameters..
00384         codec->width = atoi(buf1);
00385         codec->height = atoi(p + 1); // skip the -
00386         codec->pix_fmt = PIX_FMT_YUV420P;
           }

参考:http://cekirdek.pardus.org.tr/~ismail/ffmpeg-docs/rtpdec__h264_8c-source.html#l00360