当前位置: 首页 > news >正文

网站做百度推广需要哪些条件怎么建立公司网站费用

网站做百度推广需要哪些条件,怎么建立公司网站费用,wordpress 回复下载插件,广州网站建设大公司文章转载自#xff1a;http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者#xff0c;编辑#xff1a;小乙哥 MP4文件格式分为头部和数据两部分#xff0c;头部是由许多被称作Atom的结构单元嵌套或排列而成#xff0c;数据部分则完全为实际数据…文章转载自http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者编辑小乙哥 MP4文件格式分为头部和数据两部分头部是由许多被称作Atom的结构单元嵌套或排列而成数据部分则完全为实际数据不包含元信息因此具体解码时音视频帧的位置和大小都要在头部获取。详细内容见以下链接http://wqyuwss.52rd.net这里总结下音频解码信息获取的一些经验当然详细内容需要查看quick time file format的文档。MP4的音频解码信息保存在如下嵌套的Atom中{moov{mdia{minf{smhd{stbl{stsd}}}}}}stsd可能包括多个音频信息的描述结构如下 typedef struct stsdtable{    unsigned int size;//Atom大小    char format[4];//音频编码格式    int res1;    int ref;    short version;//版本    short pad1;    int pad2;    short channels;//声道    short bitspersample;    short compress_id;    short res2;    short samplerate1;//采样率    short samplerate2;    //{if(version1)        int sampleperpacket;        int bytesperpacket;        int bytesperframe;        int bytespersample;    //}} stsdtable; 其中format对应音频编码格式PCM_S32BE,  in32PCM_S32LE,  in32PCM_S24BE,  in24PCM_S24LE,  in24PCM_S16BE,  twos // 16 bits //PCM_S16LE,  sowt // PCM_S16LE,  lpcmPCM_F32BE,  fl32PCM_F64BE,  fl64PCM_S8,     sowtPCM_U8,     raw  // 8 bits unsignedPCM_U8,     NONE // uncompressedPCM_MULAW,  ulaw //PCM_ALAW,   alaw //ADPCM_IMA_QT, ima4 // IMA-4 ADPCM //MACE3,      MAC3 // Macintosh Audio Compression and Expansion 3:1 ///MACE6,      MAC6 // Macintosh Audio Compression and Expansion 6:1 //MP3,        .mp3 // MPEG layer 3 */uint8_t moov[] moov;uint8_t trak[] trak;uint8_t mdia[] mdia;uint8_t minf[] minf;uint8_t stbl[] stbl;uint8_t stsd[] stsd;uint8_t stsc[] stsc;uint8_t stsz[] stsz;uint8_t stco[] stco;uint8_t ftyp[] ftyp;uint8_t mdat[] mdat;typedef struct Atom{    unsigned int size;    uint8_t tag[4];    int ver_flag;    unsigned int num_of_entries;    unsigned int pos;    uint8_t *data;} Atom;uint8_t kmp3[] {0x6D,0x73,0x00,0x55};uint8_t fmp3[] .mp3;uint8_t raw[] raw ;uint8_t wave[] wave;uint8_t mp4a[] mp4a;uint8_t enca[] enca;//encrypted to ISO/IEC 14496-12 or 3GPP standardsuint8_t smar[] smar;//encoded to 3GPP GSM 6.10 AMR narrowband standardsuint8_t sawb[] sawb;//encoded to 3GPP GSM 6.10 AMR wideband standardsuint8_t m4ds[] m4ds;//encoded to ISO/IEC 14496-10 AVC standardsuint8_t esds[] esds;uint8_t fram[] fram;#define MKTAG(a,b,c,d) (a | (b 8) | (c 16) | (d 24))typedef struct AVCodecTag {    int id;    unsigned int tag;} AVCodecTag;typedef struct stsdtable{    unsigned int size;    char format[4];    int res1;    int ref;    short version;    short pad1;    int pad2;    short channels;    short bitspersample;    short compress_id;    short res2;    short samplerate1;    short samplerate2;    //{if(version1)        int sampleperpacket;        int bytesperpacket;        int bytesperframe;        int bytespersample;    //}} stsdtable;typedef struct sampletable{    unsigned int size;    unsigned int id_of_sd;} sampletable;//MP4Analyze.cpp#include MP4Analyze.h#include vector#include map#include iostream#include string#ifdef WIN32#include winsock2.h#pragma comment(lib, Ws2_32.lib)#pragma warning (disable:4786)#endif#ifdef __GNUG__#include netinet/in.h#endifusing namespace std;int check_format(uint8_t *data, int size){    if(strncmp((char*)moov,(char*)(data4),4)0 ||        strncmp((char*)ftyp,(char*)(data4),4)0 ||strncmp((char*)mdat,(char*)(data4),4)0 )        return 0;    return -1;}unsigned int get_size(const uint8_t *data,int size){    unsigned int tmp 0;    for(int i0; isize; i)    {        tmp 8;        tmp *data;    }    return tmp;}int seek_tag(uint8_t tag[],uint8_t *data, unsigned int size1,uint8_t **pos,unsigned int *size2){    if(data NULL || size1 0)        return -1;    unsigned int tag_size get_size(data,4);    if(tag_size size1 8)        return -1;    unsigned int tmp 0;    while(strncmp((char*)data4,(char*)tag,4) ! 0)    {    //    printf(%s/n,data4);        if(tag_size0)            return -1;        if(tag_size size1 8)        {            data tag_size;            tmp tag_size;        }        else            return -1;        tag_size get_size(data,4);    }    printf(find :%c%c%c%c/n,tag[0],tag[1],tag[2],tag[3]);    if(tmp tag_size size1 )     printf(warning: the atom may be not complete!/n);    *pos data8;    *size2 tag_size -8;    return tmp;} v文章转载自http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者编辑小乙哥vectorstsdtable get_audio_info(uint8_t *data, unsigned int size, vectorstsdtable stable)//stsd{    uint8_t * datapos data;    Atom *stsd_audio (Atom *)data;    int tmp_size 16;    printf(size : %u/n,ntohl(stsd_audio-size));    printf(num_entr: %u/n,ntohl(stsd_audio-num_of_entries));    for(int i0; i ntohl(stsd_audio-num_of_entries); i)    {        if(tmp_size size)//注意            return stable;        datapos tmp_size;        stsdtable * audio_entry (stsdtable *)(datapos);        stable.push_back(*audio_entry);//这里存入的是网络序的数据使用时需进行转换        tmp_size ntohl(audio_entry-size);            printf(--tablesize: %d/n,ntohl(audio_entry-size));        printf(--format : %s/n,audio_entry-format);        printf(--version : %d/n,ntohs(audio_entry-version));        printf(--channels: %d/n,ntohs(audio_entry-channels));        printf(--bitpersam: %d/n,ntohs(audio_entry-bitspersample));        printf(--IDcompress: %d/n,ntohs(audio_entry-compress_id));            printf(--samplerate: %d.%d/n,ntohs(audio_entry-samplerate1),ntohs(audio_entry-samplerate2));             tmp_size sizeof(stsdtable);        if(ntohs(audio_entry-version)0)        {            tmp_size - 16;        }        datapos tmp_size;        //if(ntohs(audio_entry-compress_id)-2)//此处尚需考证        if(ntohl(audio_entry-size) sizeof(stsdtable))        {            printf(----atom size:%d/n,get_size(datapos,4));            printf(----atom name:%c%c%c%c/n,datapos[4],datapos[5],datapos[6],datapos[7]);            if(strncmp((char*)datapos,(char*)esds,4)0)            {                //handle esds            }        }    }    return stable;}mapunsigned int,sampletable get_packet_offset(uint8_t *STBL[], mapunsigned int,sampletable table){    //table.insert(pairlong,sampletable(1,sample));    unsigned int num_sam_to_chunk get_size(STBL[0]-4,4);//stsc    unsigned int num_sample get_size(STBL[1]-4,4);//stsz    unsigned int num_chunk get_size(STBL[2]-4,4);//stco    unsigned int chunk_index 0;    unsigned int next_chunk_index 0;    uint8_t *cur_sam_to_chunk STBL[0];    uint8_t *cur_sam_size STBL[1];    uint8_t *cur_chunk_offset STBL[2];    sampletable sample;    printf(number of stsc entries:%d /nnumber of sample size:%d /nnumber of chunk offset:%d/n,num_sam_to_chunk,num_sample,num_chunk);    for(unsigned int i 0; i num_sam_to_chunk; i)//对所有的entries    {        chunk_index get_size(cur_sam_to_chunk,4);        next_chunk_index get_size(cur_sam_to_chunk12,4);        sample.id_of_sd get_size(cur_sam_to_chunk8,4);        if(i num_sam_to_chunk -1)//最后一个        {            next_chunk_index num_chunk1;        }        printf(chunk_index:(%d---%d)/n,chunk_index,next_chunk_index);        for(unsigned int kchunk_index; k next_chunk_index; k)//当前chunk序号到下一个chunk序号之间的chunk        {//处理所有重复的chunk            printf(chunk_index:%d sample num:%d/n,chunk_index,get_size(cur_sam_to_chunk4,4));            unsigned int offset get_size(cur_chunk_offset(chunk_index-1)*4,4);            for(unsigned int j0; j get_size(cur_sam_to_chunk4,4); j)//chunk内地sample数目            {//处理该chunk中的sample                sample.size get_size(cur_sam_size,4);                    printf(--sample offset:%d %x size:%d/n,offset,offset,sample.size);                table.insert(pairunsigned int,sampletable(offset,sample));                offset offset sample.size;                cur_sam_size 4;            }            system(pause);            chunk_index;        }        cur_sam_to_chunk 12;    }    return table;}文章转载自http://blog.csdn.net/flyingqr/archive/2010/02/02/5282600.aspx 版权归原作者编辑小乙哥int seek_audio_atom( uint8_t *data1, unsigned int size1){    uint8_t tag[] mdiaminfsmhd;    uint8_t *datapos;    unsigned int tag_size;    uint8_t *data;    unsigned int size;    int offset_of_atom 0;    if((offset_of_atom seek_tag(moov, data1, size1, data, size)) -1)        return -1;    if(offset_of_atom size size1)    { //some handles        printf(moov atom is not complete,need more data);    }    data1 data;    size1 size;    uint8_t *nexttrak data;    unsigned int traksize size;    int i0;    while(1)    {        printf(-----/n);        if(seek_tag(trak, nexttrak, traksize, datapos, tag_size) ! -1)        {            nexttrak datapos tag_size;            if(size1 (nexttrak - data1))                return -1;            traksize size1 - (nexttrak - data1);            data datapos;            size tag_size;        }        else        {            return -1;        }        i0;        while(i3)        {            if(seek_tag(tagi*4, data, size, datapos, tag_size) ! -1)            {                if(i2)                 break;                data datapos;                size tag_size;                i;            }            else            {                break;            }        }        if(strncmp(smhd,(char*)(datapos-4),4) 0)        {            if(seek_tag(stbl, data, size, datapos, tag_size)! -1)            {                printf(—find audio stbl—!/n);                data datapos;                size tag_size;                if(seek_tag(stsd, data, size, datapos, tag_size) ! -1)                {                    vectorstsdtable stable; //音频信息                    get_audio_info(datapos-8, tag_size,stable);                }                uint8_t *STBL[3] {NULL,NULL,NULL};//                uint8_t *datapos1;                unsigned int tag_size1;//                if(seek_tag(stsc, data, size, datapos1, tag_size1) ! -1)                {                    STBL[0] datapos1 8;                }                uint8_t *datapos2;                unsigned int tag_size2;                if(seek_tag(stsz, data, size, datapos2, tag_size2) ! -1)                {                    STBL[1] datapos2 12;                }                uint8_t *datapos3;                unsigned int tag_size3;                if(seek_tag(stco, data, size, datapos3, tag_size3) ! -1)                {                    STBL[2] datapos3 8;                }                if(STBL[0] STBL[1] STBL[2] )                {                    mapunsigned int,sampletable postable;//音频帧信息                    get_packet_offset(STBL,postable);                }            }            return 0;        }    }    return -1;}int main(char arg, char *argv[]){    FILE *mp4;    coutplease input the file name :endl;    string filename;    cinfilename;    mp4 fopen(filename.c_str(),rb);    uint8_t buffer[300000];    fread(buffer,1,300000,mp4);    seek_audio_atom((uint8_t*)buffer,300000);    fclose(mp4);    return 0;}
http://www.pierceye.com/news/509/

相关文章:

  • 博罗网站建设费用创造一个网页
  • 漳州网站设计制作公众号编辑器排行榜
  • 建设标准信息网站采购销售管理软件
  • 哈尔滨网站建设信息贵州建设厅网站厅长
  • 南京做网站的公司排名做房地产信息网怎么做
  • 医院网站建设合同范本公众号开发者中心
  • 有名的淘宝客网站手机设计图纸软件
  • 网站开发公司郑州电信备案网站打不开
  • 西安响应式网站wordpress中英文标题
  • 鹰潭手机网站建设wordpress仿qq空间
  • 网站的icp备案信息是什么百度竞价推广代运营公司
  • 网站美工培训课程免费看行情的软件大全下载
  • 建设银行住房公积金预约网站wordpress 视频主题
  • 做淘宝门头的网站班级介绍网站首页如何做
  • 网站设计网站建设专业我国经济总量
  • 常州外贸网站设计怎么查自己是不是团员
  • 吉林做网站公司长沙网站设计的公司
  • 自学网站搭建wordpress 什么值得买 主题
  • 订阅号可以做微网站吗深圳东莞网站建设
  • 沙河做网站自己做网站麻烦吗
  • 天猫网站建设可行性分析网上做公司网站怎么做
  • 网站后台管理系统域名网站关键词之间
  • 网站制作公司下商业网站有什么作用
  • 电商公司名称怎么起名简述什么是seo及seo的作用
  • 挑号网站后台怎么更新织梦能不能做门户网站
  • 公司网站建设中心重庆seo霸屏
  • 电子产品网站建设模板汕头seo不错
  • 网站响应式与电脑版有什么区别杭州杭州网站建设公司
  • 网站开发与应用 大作业作业长沙专业个人做网站哪家好
  • 可以免费制作网页的网站谷歌浏览器下载手机版安卓官网