13

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

2番目の部分(カンマ区切り):

68 CE 3C 80

回答: H264Videoストリームのサイズを取得する

4

4 に答える 4

13

必要な仕様は、次のITU Webサイトから無料でダウンロードできます。- H.264(03/10)

無料でダウンロードできるPDFを選択すると、セクション7.3.2.1.1で詳しく説明されている形式が見つかります。

申し訳ありませんが、私の以前の回答に鈍感ではなく、情報がパブリックドメインで利用可能であることを知りませんでした。

于 2010-03-12T08:49:21.480 に答える
6

もちろん、仕様は常に最適ですが、SDPのsprop-parameter-setsは通常、シーケンスパラメーターと画像パラメーターセットで構成され、base-64でエンコードされ、コンマで区切られます。シーケンスパラメータと画像パラメータセットは、基本的に、着信H264ストリームを適切にデコードする方法をデコーダに指示します。これがないと、正しくデコードできません。

SPS / PPSのパーサーを作成するのはそれほど難しくありませんが、これを行うには、仕様が絶対に必要になります。また、優れたビットリーダークラスと、符号付き値と符号なし値の両方で指数ゴロンブエンコーディングがどのように機能するかについての知識も必要です。ここここを参照してください。

最後に、Doom9のこのスレッドで見つかったコードは、私にとって非常に貴重でした。これは、基本的に、基本的なH264ストリームの完全なパーサーです。これには、ビットリーダークラス、NALU、sps、pps、VUIパラメーター、シーケンススケーリングマトリックスなどを解析するためのルーチンが含まれています。これは、ビデオエンジニアにとって非常に便利なコードです。

于 2010-06-16T02:27:38.670 に答える
1

結局のところ、私の質問に対する答えは、このドキュメントに書かれています:ISO / IEC 14496-10:2005、セクション7.3.2.1。そしてそれを手に入れるために私は支払う必要があります。だから...=)

于 2010-03-11T11:28:06.493 に答える
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

于 2010-08-18T10:56:50.060 に答える