青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn)

轉(zhuǎn)載自:http://wmnmtm.blog.163.com/blog/static/38245714201192211245389/

下載的一個源碼里,實現(xiàn)了把264文件通過RTP發(fā)送,但是如果發(fā)送實時編碼的怎么辦,序列參數(shù)集和圖像參數(shù)集得自己發(fā)送,因為264文件本身在文件開頭已經(jīng)存儲了這些了。

x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
(圖一)這是一個正確編碼得到的xxx.264文件,用UltraEDit打開的文件開始部分
 

在x264.dsw工程中,找了一下,找到點相關(guān)的東西。
另外,x264.exe在編碼文件時,只有一個地方進(jìn)行文件的寫入,就是
int write_nalu_bsf( hnd_t handle, uint8_t *p_nalu, int i_size )
{
   if (fwrite(p_nalu, i_size, 1, (FILE *)handle) > 0)
{
         return i_size;
}
    return -1;
}
如果把函數(shù)里的代碼注釋掉,會發(fā)現(xiàn),雖然在不停的編碼,但最終文件大小始終為0,從這一點可以證明只有此處進(jìn)行文件的寫入操作。

那么,序列參數(shù)集是哪里來的呢,又找到一部分東西,在encoder.c文件的函數(shù):
int     x264_encoder_encode( x264_t *h,/* 指定編碼器 */
                             x264_nal_t **pp_nal, /* x264_nal_t * */
 int *pi_nal, /* int */
                             x264_picture_t *pic_in,
                             x264_picture_t *pic_out )
中,有如下代碼:

    /* Write SPS and PPS 寫序列參數(shù)集、圖像參數(shù)集以及SEI版本信息,并不是寫入文件,而是寫入輸出緩沖區(qū) 最后通過p_write_nalu中的fwrite寫入到文件*/
    if( i_nal_type == NAL_SLICE_IDR && h->param.b_repeat_headers )
    {
printf("encoder.c : Write SPS and PPS");
system("pause");//暫停,任意鍵繼續(xù)

        if( h->fenc->i_frame == 0 )
        {
            /* identify ourself */
            x264_nal_start( h, NAL_SEI, NAL_PRIORITY_DISPOSABLE );
            x264_sei_version_write( h, &h->out.bs );
            x264_nal_end( h );
        }

        /* generate sequence parameters */
        x264_nal_start( h, NAL_SPS, NAL_PRIORITY_HIGHEST );
        x264_sps_write( &h->out.bs, h->sps );
        x264_nal_end( h );

        /* generate picture parameters */
        x264_nal_start( h, NAL_PPS, NAL_PRIORITY_HIGHEST );
        x264_pps_write( &h->out.bs, h->pps );
        x264_nal_end( h );
    }

    /* Write frame 寫入幀,并不是寫入文件,而是寫入輸出緩沖區(qū)*/
    i_frame_size = x264_slices_write( h );

在圖一中,看到有一個網(wǎng)址http://www.videolan.org,在源碼中搜索這個網(wǎng)址,找到唯一的一處,也就是如下的函數(shù):
void x264_sei_version_write( x264_t *h, bs_t *s )
{
    int i;
    // random ID number generated according to ISO-11578
    const uint8_t uuid[16] = {
        0xdc, 0x45, 0xe9, 0xbd, 0xe6, 0xd9, 0x48, 0xb7,
        0x96, 0x2c, 0xd8, 0x20, 0xd9, 0x23, 0xee, 0xef
    };
    char version[1200];
    int length;
    char *opts = x264_param2string( &h->param, 0 );

    sprintf( version, "x264 - core %d%s - H.264/MPEG-4 AVC codec - "
             "Copyleft 2005 - http://www.videolan.org/x264.html - options: %s",
             X264_BUILD, X264_VERSION, opts );
    x264_free( opts );
    length = strlen(version)+1+16;

    bs_write( s, 8, 0x5 ); // payload_type = user_data_unregistered
    // payload_size
    for( i = 0; i <= length-255; i += 255 )
        bs_write( s, 8, 255 );
    bs_write( s, 8, length-i );

    for( i = 0; i < 16; i++ )
        bs_write( s, 8, uuid[i] );
    for( i = 0; i < length-16; i++ )
        bs_write( s, 8, version[i] );

    bs_rbsp_trailing( s );
}

x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 (圖二)注釋掉x264_sps_write( &h->out.bs, h->sps );的情況


x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
(圖三)注釋掉x264_pps_write( &h->out.bs, h->pps );的情況


x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲

(圖四)x264_sei_version_write( h, &h->out.bs );注釋掉,但是播放是一樣的

既然注釋掉仍能播,說明它不是必須的,僅是個版權(quán)聲明
 
 
猜想:
如果是實時的話,可以模仿下面的這兩句代碼發(fā)送序列參數(shù)集和圖像參數(shù)集:
x264_sps_write( &h->out.bs, h->sps );
x264_pps_write( &h->out.bs, h->pps );

實際就是要發(fā)送h->sps和h->pps

因為我編碼的文件是可以播放的,所以實際已經(jīng)產(chǎn)生了sps和pps,直接發(fā)送就行了。

因為h是已知的,h = x264_encoder_open( &param );它的返回值就是x264_t,這樣就可以通過h->sps和h->pps,下面是我將它們單獨寫入文件的截圖:
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 sps_1
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 sps_2
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
sps_3
 
上面是一個sps(sps1,sps_2,sps_3),看著內(nèi)容好少啊。寫入代碼是:file1.Write(h->sps,sizeof(x264_sps_t));

x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲 
pps


PPS的內(nèi)容也好少,可能是因為大多數(shù)均未指定,采用的是默認(rèn)參數(shù)的原因吧,但是圖像寬度和高度在哪兒了。

h->x264_param_t    param;
這個也很關(guān)鍵,因為我指定的都是在這個里,
param.i_width=320;
param.i_height=240;
把這個也保一份看看。

x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
h->PARAM
param.i_width=320;
param.i_height=240;
這兩個數(shù)字對應(yīng)的在哪呢,應(yīng)該有才對啊,找找。(其實已經(jīng)有了,只是現(xiàn)在沒找到,看后面)

后來換了個參數(shù)值,又試了一下
param.i_width=320;
param.i_height=240;
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
這是i_width 為320和100的比較,一直折騰半天,發(fā)現(xiàn)0x64能對應(yīng)上十進(jìn)制100,但是320怎么也對不上。
后來又從結(jié)構(gòu)體的存儲上找了半天(我直觀的認(rèn)為結(jié)構(gòu)體中的變量字段是按順序存在一塊連續(xù)空間的,對不對不知道了)

 x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 
我分析,在unsigned int 和int共占8字節(jié),那么第9、10、11、12個字節(jié)應(yīng)該就是i_width,但還是對不上。直到ing提到小頭和大頭,也就是主機(jī)字節(jié)序和網(wǎng)絡(luò)字節(jié)序時,才驚醒過來。

原來,前面一直是對的,只是自己看成是錯的了,呵呵。

0x 64 00  ,實際應(yīng)該看成 0x 00 64  ,換算成二進(jìn)制表示: 0000 0000  0110 0100
0x 40 01  ,實際應(yīng)該看成 0x 01 40  ,換算成二進(jìn)制表示: 0000 0001  0100 0000

x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 
x264編碼得到的文件,在文件頭部的一些東西,有了新發(fā)現(xiàn) - 加菲 - 視頻會議 - 加菲
 


這下就對了。



小結(jié)一下:
1、結(jié)構(gòu)體的各字段存儲在一段連續(xù)的內(nèi)存中。
2、主機(jī)字節(jié)序,用二進(jìn)制查看器查看到 0x 64 00 ,換算二進(jìn)制時,要按 0x 00 64這樣反過來。(說法不標(biāo)準(zhǔn),呵呵)
3、x264.exe編碼得到的文件,前面有一段版權(quán)聲明,是沒用的。
4、file1.Write(&(h->param),sizeof(x264_param_t));這樣把h->param寫入二進(jìn)制文件是正確的。
5、只發(fā)送sps和pps可以嗎

posted on 2013-01-23 23:23 楊粼波 閱讀(2014) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产日韩a欧美在线观看| 国产精品无码永久免费888| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲永久在线观看| 国产精品99久久久久久久vr| 亚洲人成亚洲人成在线观看 | 欧美日本中文字幕| 欧美日韩精品| 国产精品外国| 在线不卡欧美| 亚洲六月丁香色婷婷综合久久| 亚洲看片免费| 亚洲免费小视频| 欧美中文在线免费| 麻豆国产精品777777在线| 亚洲国产另类 国产精品国产免费| 噜噜噜91成人网| 亚洲精品国偷自产在线99热| 一本久久a久久免费精品不卡| 亚洲伊人第一页| 蜜桃伊人久久| 国产精品国产三级国产aⅴ无密码| 国产人成精品一区二区三| 亚洲电影一级黄| 亚洲中字在线| 久久字幕精品一区| 亚洲免费黄色| 久久婷婷综合激情| 国产精品久久久久9999吃药| 激情国产一区二区| 亚洲视频在线观看三级| 可以看av的网站久久看| 亚洲视频电影在线| 牛牛影视久久网| 国产亚洲福利社区一区| 亚洲视频视频在线| 91久久精品国产91久久性色| 久久99在线观看| 国产精品人成在线观看免费 | 亚洲一区二区高清| 亚洲伊人色欲综合网| 欧美特黄一级| 亚洲国产精品久久久久久女王| 亚洲视频免费看| 欧美黄色视屏| 销魂美女一区二区三区视频在线| 欧美成人高清视频| 国产精品自在线| 一本到12不卡视频在线dvd| 久久aⅴ国产紧身牛仔裤| 亚洲三级影片| 欧美+日本+国产+在线a∨观看| 国产欧美日韩专区发布| 宅男在线国产精品| 毛片精品免费在线观看| 亚洲一级在线观看| 国产精品久久久久久av福利软件| 99精品国产99久久久久久福利| 欧美国产另类| 免费在线日韩av| 在线观看亚洲视频啊啊啊啊| 久久五月婷婷丁香社区| 欧美一区91| 国产一区二区三区观看 | 亚洲综合首页| 一区二区三区精品国产| 欧美精品在线播放| 99在线热播精品免费| 最近看过的日韩成人| 欧美理论在线| 亚洲在线视频一区| 中日韩男男gay无套| 国产精品日韩欧美一区二区| 性久久久久久| 久久国产精品99国产精| 在线精品一区| 亚洲激情亚洲| 国产精品卡一卡二卡三| 久久精品视频va| 久久都是精品| 亚洲三级网站| 亚洲性夜色噜噜噜7777| 国产亚洲欧美一区| 美女露胸一区二区三区| 欧美激情在线| 欧美一级大片在线观看| 久久偷看各类wc女厕嘘嘘偷窃| 日韩午夜精品视频| 亚洲欧美日韩国产一区二区三区| 国产一区二区三区在线观看免费视频| 久久久久久午夜| 美女视频一区免费观看| 亚洲午夜羞羞片| 久久久蜜桃一区二区人| 亚洲香蕉在线观看| 久热这里只精品99re8久| 夜夜爽99久久国产综合精品女不卡| 亚洲一区二区三区精品视频| 在线免费观看日韩欧美| 一本大道久久a久久综合婷婷| 亚洲自拍电影| 免费亚洲一区二区| 午夜国产精品影院在线观看| 久久久久久久久久久久久9999| 日韩一区二区精品视频| 午夜欧美理论片| 99国产精品99久久久久久粉嫩| 午夜精品久久久久| 亚洲精品视频在线看| 欧美一区二区| 亚洲在线视频免费观看| 欧美成人久久| 麻豆精品视频在线观看| 国产精品入口福利| 亚洲三级影院| 在线观看不卡| 欧美淫片网站| 午夜精品影院在线观看| 欧美精品啪啪| 欧美福利视频| 亚洲电影免费观看高清| 亚洲欧美在线一区二区| 亚洲影视综合| 欧美欧美午夜aⅴ在线观看| 欧美成人一区在线| 在线观看91久久久久久| 欧美在线播放视频| 欧美在线播放高清精品| 国产精品麻豆成人av电影艾秋| 亚洲精品一区二区在线观看| 亚洲精选视频在线| 欧美暴力喷水在线| 亚洲第一精品福利| 亚洲激情视频网站| 免费在线播放第一区高清av| 欧美国产日韩二区| 亚洲国产裸拍裸体视频在线观看乱了 | 午夜精品福利在线| 午夜视频精品| 国产私拍一区| 欧美一级网站| 久久国产婷婷国产香蕉| 国产日产欧美a一级在线| 亚洲男人第一网站| 久久精品国产99精品国产亚洲性色| 国产精品h在线观看| 亚洲天堂成人在线视频| 欧美一级久久久| 国内精品视频在线观看| 久久久水蜜桃| 最新中文字幕一区二区三区| 一本色道久久加勒比精品| 欧美日韩亚洲天堂| 亚洲一区日韩| 美女精品一区| 亚洲少妇诱惑| 国产欧美日韩精品专区| 久久久精品网| 亚洲精品视频在线| 欧美在线日韩| 最近中文字幕mv在线一区二区三区四区| 蜜臀99久久精品久久久久久软件 | 亚洲精品一区二区三| 亚洲一区二区三区777| 一本综合精品| 亚洲综合日韩在线| 免费不卡中文字幕视频| 亚洲免费激情| 国产精品亚洲精品| 久久综合狠狠综合久久综合88 | 91久久精品国产91性色tv| 亚洲手机在线| 一区二区自拍| 国产精品久久久久久久久免费桃花 | 一本色道婷婷久久欧美| 久久九九精品99国产精品| 亚洲黄色影院| 国产精品一区二区久久国产| 久久免费精品视频| 亚洲天堂av综合网| 亚洲国产激情| 久久免费视频在线观看| 亚洲午夜一区二区| 亚洲高清在线视频| 国产麻豆91精品| 欧美喷潮久久久xxxxx| 久久成人av少妇免费| 日韩亚洲不卡在线| 免费看精品久久片| 午夜视频一区| 99视频精品在线| 亚洲成人资源网| 国产精品五月天| 欧美日韩亚洲一区三区 | 亚洲国产精品小视频| 久久国产精品99精品国产| 99热在这里有精品免费| 在线精品亚洲| 激情综合五月天| 国产视频亚洲|