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

牽著老婆滿街逛

嚴(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>
            欧美一区二区三区久久精品| 国产精品女同互慰在线看| 国产亚洲亚洲| 久久久欧美精品sm网站| 小辣椒精品导航| 精品电影一区| 亚洲国产精品传媒在线观看 | 日韩亚洲精品视频| 亚洲精品一区中文| 国产九九视频一区二区三区| 久久综合99re88久久爱| 欧美gay视频激情| 亚洲午夜精品视频| 亚洲在线观看| 在线看无码的免费网站| 亚洲欧洲一区二区在线观看| 国产精品久久久久久久久久久久久久 | 国产精品亚洲综合久久| 欧美一区二区三区啪啪| 亚洲精品久久嫩草网站秘色| 国产精品xnxxcom| 久久精品青青大伊人av| 久久综合色一综合色88| 亚洲人屁股眼子交8| 亚洲综合第一| 亚洲精品一二区| 午夜性色一区二区三区免费视频| 在线观看精品视频| 一区二区三区毛片| 亚洲福利电影| 亚洲欧美卡通另类91av | 国产精品国码视频| 欧美国产日本在线| 国产日本欧美视频| 日韩网站在线看片你懂的| 亚洲精品无人区| 亚洲毛片在线| 在线免费观看日本欧美| 午夜精品久久久久久久99热浪潮| 亚洲国产精品一区二区第四页av | 亚洲国产一区二区在线| 黑人巨大精品欧美黑白配亚洲 | 欧美黑人一区二区三区| 国产精品午夜在线观看| 亚洲免费观看视频| 91久久在线| 久久精品在线观看| 欧美一二三区精品| 欧美三级电影大全| 亚洲精品久久久一区二区三区| 好看不卡的中文字幕| 午夜精品久久久| 亚洲午夜激情免费视频| 欧美日韩成人在线播放| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美第一黄色网| 久久久久久久久蜜桃| 国产精品久久亚洲7777| 日韩视频精品| 亚洲午夜av| 欧美三区在线视频| 99在线精品视频| 亚洲午夜日本在线观看| 欧美日韩精品伦理作品在线免费观看| 久久精品国产精品| 国产欧美一区二区三区久久| 亚洲欧美第一页| 欧美一区二区免费| 国产日韩专区在线| 久久超碰97人人做人人爱| 久久久久国产精品一区| 狠狠干综合网| 美日韩丰满少妇在线观看| 欧美福利小视频| 亚洲乱码国产乱码精品精可以看 | 国产一区二区三区免费在线观看 | 欧美一区二区视频在线观看| 久久久久久久999| 亚洲国产精品第一区二区三区| 麻豆精品一区二区av白丝在线| 亚洲国产欧美一区二区三区同亚洲| 亚洲精品日日夜夜| 国产精品电影在线观看| 午夜精品久久久久99热蜜桃导演| 久久激情视频| 亚洲三级电影全部在线观看高清| 欧美精品videossex性护士| 一区二区三区福利| 久久久久高清| 在线视频欧美精品| 久久久精品tv| 久久综合国产精品台湾中文娱乐网| 在线免费观看视频一区| 欧美精品手机在线| 性欧美videos另类喷潮| 欧美成人午夜免费视在线看片| 一卡二卡3卡四卡高清精品视频 | 久久精品一本久久99精品| 欧美激情一区二区久久久| 一区二区三区欧美在线观看| 国产免费成人在线视频| 美日韩丰满少妇在线观看| 亚洲在线免费| 亚洲电影av在线| 欧美亚洲一区二区在线| 亚洲国产精品成人va在线观看| 欧美色视频在线| 久久综合亚州| 亚洲一区在线播放| 亚洲欧洲免费视频| 久久综合狠狠综合久久综青草 | 韩国女主播一区| 欧美日韩一区二区三区在线视频 | 麻豆国产va免费精品高清在线| 99精品视频免费| 欧美国产欧美综合| 久久综合久久久久88| 午夜亚洲福利| 夜夜嗨av一区二区三区四区| 亚洲第一精品电影| 国产日韩亚洲欧美| 国产精品高潮呻吟久久av黑人| 免费不卡在线观看av| 久久精品国产69国产精品亚洲| 在线中文字幕不卡| 亚洲精品免费一区二区三区| 免费在线观看成人av| 欧美有码在线观看视频| 亚洲综合色在线| 亚洲视频欧美在线| 日韩视频在线一区二区三区| 在线观看亚洲一区| 136国产福利精品导航网址| 国产日韩欧美高清免费| 国产精品视频大全| 国产精品福利网站| 国产精品区免费视频| 欧美午夜不卡视频| 欧美日韩在线一区二区三区| 欧美日产在线观看| 欧美日本精品一区二区三区| 欧美电影免费观看高清| 美女图片一区二区| 欧美精品一区二区在线播放| 欧美精品激情在线| 欧美日韩在线视频一区二区| 欧美日韩小视频| 欧美性大战久久久久久久蜜臀| 国产精品扒开腿做爽爽爽视频 | 亚洲毛片播放| 在线视频精品一| 亚洲一区高清| 久久精品国产91精品亚洲| 久久久久久久综合日本| 久久人人看视频| 欧美黄在线观看| 亚洲破处大片| 亚洲影院在线| 久久激情网站| 欧美不卡视频一区发布| 亚洲免费观看| 夜夜嗨一区二区| 亚洲欧美日韩区 | 亚洲乱码国产乱码精品精天堂| 日韩亚洲不卡在线| 性欧美大战久久久久久久免费观看 | 国产欧美日韩亚州综合| 国产欧美午夜| 亚洲欧洲日本一区二区三区| 99亚洲伊人久久精品影院红桃| 日韩西西人体444www| 午夜精品久久久久影视 | 亚洲欧美激情一区| 久久久噜噜噜久久久| 亚洲精品国产精品乱码不99按摩 | 欧美精品一区在线| 国产三级欧美三级日产三级99| 亚洲第一在线视频| 欧美一区二区精品| 亚洲激情一区二区| 欧美一区国产二区| 欧美日韩一区二区三区在线看| 国产综合色在线| 亚洲婷婷综合色高清在线| 久久伊人免费视频| 宅男噜噜噜66国产日韩在线观看| 欧美在线国产| 欧美视频在线观看一区| 精品1区2区3区4区| 午夜精品影院| 最新亚洲视频| 久久综合九九| 国产日产欧美精品| 亚洲一区在线直播| 欧美黑人在线播放| 久久久久国产一区二区| 国产精品有限公司| 亚洲一区在线免费观看| 91久久精品国产| 久热精品视频|