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

肇庆东莞网站建设wordpress自定义数据

肇庆东莞网站建设,wordpress自定义数据,深圳有哪些做网站公司,做销售的 都有什么网站一.mp4文件的组织 1. mp4文件的box(ffmpeg中叫atom) mp4是由一系列的box组成的#xff0c;每个box的header是8个字节(4字节的长度,4字节的type) 第一个box比较特殊#xff0c;其type类型为ftyp,还包含一个sub-type 0000000: 0000 0020 6674 7970 6973 6f6d 0000 0200 ... f…  一.mp4文件的组织 1. mp4文件的box(ffmpeg中叫atom) mp4是由一系列的box组成的每个box的header是8个字节(4字节的长度,4字节的type) 第一个box比较特殊其type类型为ftyp,还包含一个sub-type 0000000: 0000 0020 6674 7970 6973 6f6d 0000 0200 ... ftypisom.... 0000010: 6973 6f6d 6973 6f32 6176 6331 6d70 3431 isomiso2avc1mp41 0000020: 0000 0008 6672 6565 0609 6f8e 6d64 6174 ....free..o.mdat 0000030: 0000 028c 0605 ffff 88dc 45e9 bde6 d948 ..........E....H 0000040: b796 2cd8 20d9 23ee ef78 3236 3420 2d20 ..,. .#..x264 -  0000050: 636f 7265 2031 3030 202d 2048 2e32 3634 core 100 - H.264  0000060: 2f4d 5045 472d 3420 4156 4320 636f 6465 /MPEG-4 AVC code 0000 0020 6674 7970  -- 第1个box的长度为0x20, typeftyp 6973 6f6d  --其sub-typeisom 0000 0008 6672 6565  -- 第2个box的长度为0x08, typefree 0609 6f8e 6d64 6174   -- 第3个box的长度为0x06096F8E, typemdat 由此可以看出第4个box: 0x06096F8E0x080x200x06096FB6处是第4个box 000c ca81 6d6f 6f76    -- 第4个box的长度是0x0cca81, typemoov 1.2 计算文件的大小 所以整个文件的大小为 0x200x080x0x06096F8E0x0cca810x6163A37102119991 congmsi:/work/ffmpeg/ffmpeg-3.0.1$ ls -l ../san.mp4 -rw-rw-r-- 1 cong cong 102119991 Sep 10  2015 ../san.mp4 1.3 关于box-type: box-type可以是如下一个: ftyp, mdat, moov, pnot, udta, uuid, moof, free, skip, jP2 , wide, load, ctab, imap, matt, kmat, clip, crgn, sync, chap, tmcd, scpt, ssrc, PICT. sub-type可以取如下一个: sub-type which must be one of values: avc1, iso2, isom, mmp4, mp41, mp42, mp71, msnv, ndas, ndsc, ndsh, ndsm, ndsp, ndss, ndxc,ndxh, ndxm, ndxp, ndxs. 1.4总结 一个mov文件就是由ftyp free mdat moov这四个部分组成 ftyp -- 格式 free -- 不关心 mdat -- 音视频数据 moov -- 包含一系列次级box:一个mvhd及多个trak 1.5 如下图所示: 清楚了 二. BOX的具体解析 2.1FileTypeBox-- ftype解析 0000000: 0000 0020 6674 7970 6973 6f6d 0000 0200 ... ftypisom.... 0000010: 6973 6f6d 6973 6f32 6176 6331 6d70 3431 isomiso2avc1mp41 0000 0020 6674 7970  -- 第1个box的长度为0x20, typeftyp 6973 6f6d                     -- major_brand: isom 0000 0200                    -- minor_verion: isom的版本号 6973 6f6d 6973 6f32 6176 6331 6d70 3431-- 兼容isom iso2 avc1 mp41这四个协议 ISO14496-12 的 4.3.2 Syntax  aligned(8) class FileTypeBox extends Box(‘ftyp’) { unsigned int(32) major_brand; unsigned int(32) minor_version; unsigned int(32) compatible_brands[]; // to end of the box  } 没有ftyp后面就不知道用什么去解析这个媒体文件 2.2 Free Space Box --free解析 没啥作用 ISO14496-12 的8.24.2 Syntax  aligned(8) class FreeSpaceBox extends Box(free_type) { unsigned int(8) data[];  } 2.3 Media Data Box --mdat解析 这个box里面全部都是数据 ISO14496-12 的8.2.2 Syntax  aligned(8) class MediaDataBox extends Box(‘mdat’) { bit(8) data[];  } 2.4 Movie Box  --moov解析 (很复杂) 6096fb0: 9002 1900 2380 000c ca81 6d6f 6f76 0000 ....#.....moov.. 6096fc0: 006c 6d76 6864 0000 0000 7c25 b080 7c25 .lmvhd....|%..|% 6096fd0: b080 0000 03e8 0014 6995 0001 0000 0100 ........i....... 6096fe0: 0000 0000 0000 0000 0000 0001 0000 0000 ................ 6096ff0: 0000 0000 0000 0000 0000 0001 0000 0000 ................ 6097000: 0000 0000 0000 0000 0000 4000 0000 0000 ............... 6097010: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 6097020: 0000 0000 0000 0000 0003 0005 bf9d 7472 ..............tr 6097030: 616b 0000 005c 746b 6864 0000 000f 7c25 ak...\tkhd....|% 6097040: b080 7c25 b080 0000 0001 0000 0000 0014 ..|%............ 6097050: 6595 0000 0000 0000 0000 0000 0000 0000 e............... 6097060: 0000 0001 0000 0000 0000 0000 0000 0000  ................ 6097070: 0000 0001 0000 0000 0000 0000 0000 0000  ................ 6097080: 0000 4000 0000 01d6 0000 0160 0000 0000  .............. 6097090: 0024 6564 7473 0000 001c 656c 7374 0000  .$edts....elst.. 60970a0: 0000 0000 0001 0014 6595 0000 03e9 0001  ........e....... 60970b0: 0000 0005 bf15 6d64 6961 0000 0020 6d64  ......mdia... md 000c ca81 6d6f 6f76    -- moov的长度是0x0cca81, typemoov 0000 006c 6d76 6864  -- mvhd的长度是0x6c    ,typemvhd 0000 0000                    -- version0x0 7c25 b080 7c25 b080  -- create_timemodify_time0x7c25b080 0000 03e8                    -- timescale0x3e81000   0014 6995                    -- duration0x146995(单位是time_units) 0001 0000                    -- rate0x00010000 0100                             -- volume0x0100 0005 bf9d 7472 616b   -- track的长度是0x5bf9d,typetrak 0000 005c 746b 6864  -- tkhd的长度是0x5c, typetkhd 0000                             --version 000F                             -- flag 7c25 b080 7c25 b080  --create_timemodify_time0x7c25b080 0000 0001                    -- trackID1 0000 0000                    -- reserve 0014 6595                    -- duration0x146595 0000 0000                    -- reserved 0000 0000                    -- reserved 0000 0000                    -- layergroup 0000 0000                    -- volumresever 0001 0000 0000 0000 0000 0000   matrix 0000 0000 0001 0000 0000 0000  0000 0000 0000  0000 4000 0000  01d6 0000 0160 0000   --  width0x1d6 height0x160(这儿都需要向右移16位) 0000 0024 6564 7473   --edts的长度是0x24,typeedts 注意:  a.媒体文件在播放过程中用的时间单位是由timescale计算出来的 一个time units1s/timescale1ms这儿1 time_unts1ms b.通过duration可计算媒体的播放时间 0x146995*1ms1337749ms1337.749s对上了 附1.mvhd ISO14496-12 的8.3.2 Syntax  aligned(8) class MovieHeaderBox extends FullBox(‘mvhd’, version, 0) {  if (version1) { unsigned int(64) creation_time; unsigned int(64) modification_time; unsigned int(32) timescale; unsigned int(64) duration;  } else { // version0 unsigned int(32) creation_time; unsigned int(32) modification_time; unsigned int(32) timescale; unsigned int(32) duration;  }  template int(32) rate  0x00010000; // typically 1.0  template int(16) volume  0x0100; // typically, full volume  const bit(16) reserved  0;  const unsigned int(32)[2] reserved  0;  template int(32)[9] matrix  { 0x00010000,0,0,0,0x00010000,0,0,0,0x40000000 };  // Unity matrix  bit(32)[6] pre_defined  0;  unsigned int(32) next_track_ID;  } 附2.trak 8.5.2 Syntax aligned(8) class TrackHeaderBox  extends FullBox(‘tkhd’, version, flags){ if (version1) { unsigned int(64) creation_time; unsigned int(64) modification_time; unsigned int(32) track_ID; const unsigned int(32) reserved  0; unsigned int(64) duration; } else { // version0 unsigned int(32) creation_time; unsigned int(32) modification_time; unsigned int(32) track_ID; const unsigned int(32) reserved  0; unsigned int(32) duration; } const unsigned int(32)[2] reserved  0; template int(16) layer  0; template int(16) alternate_group  0; template int(16) volume  {if track_is_audio 0x0100 else 0}; const unsigned int(16) reserved  0; template int(32)[9] matrix { 0x00010000,0,0,0,0x00010000,0,0,0,0x40000000 }; // unity matrix unsigned int(32) width; unsigned int(32) height;  }三.ffmpeg中对mp4的处理 3.1 对mp4文件的probe -- 在libavformat/mov.c中 有两个宏需要关注一下: #define MKTAG(a,b,c,d) ((a) | ((b)  8) | ((c)  16) | ((unsigned)(d)  24))# define AV_RL32(x) \(((uint32_t)((const uint8_t*)(x))[3]  24) | \(((const uint8_t*)(x))[2]  16) | \(((const uint8_t*)(x))[1]  8) | \((const uint8_t*)(x))[0]) 这两个宏都是把4个char组成一个int 3.2 mov_probe static int mov_probe(AVProbeData *p) {int64_t offset;uint32_t tag;int score  0;int moov_offset  -1;dbmsg();/* check file header */offset  0;for (;;) {tag  AV_RL32(p-buf  offset  4);    //将p-buf4即‘f’ ‘t’ y p组成一个intswitch(tag) {                          //判断这个int是不是ftypcase MKTAG(f,t,y,p):score  AVPROBE_SCORE_MAX;     //如果是的话score100,说明就是mov格式的文件break;}}return score; } 精简一下mov_probe其实就是判断第一个box是不是ftyp,若是则就是mov格式的了。 3.3.1 对ftype的读取 static int mov_read_ftyp(MOVContext *c, AVIOContext *pb, MOVAtom atom) {//读4个字节的major_brand,并存到dict中ffio_read_size(pb, type, 4);av_dict_set(c-fc-metadata, major_brand, type, 0);//读4个字节的minor_ver,并存到dict中minor_ver  avio_rb32(pb);av_dict_set_int(c-fc-metadata, minor_version, minor_ver, 0);//读剩余的字节即comp_brands_str,并存到dict中comp_brand_size  atom.size - 8;    //atom.size己经是去除8字节头余下的sizeffio_read_size(pb, comp_brands_str, comp_brand_size);comp_brands_str[comp_brand_size]  0;av_dict_set(c-fc-metadata, compatible_brands, comp_brands_str, 0);return 0; } 3.3.2 对free的读取 static int mov_read_free(MOVContext *c, AVIOContext *pb, MOVAtom atom) {//没什么作用只是读取出来把文件指针指向下一下box而己avio_read(pb, content, FFMIN(sizeof(content), atom.size));return 0; } 3.3.3对mdat的读取 static int mov_read_mdat(MOVContext *c, AVIOContext *pb, MOVAtom atom) {//mdat更简单只把标志设置了一下c-found_mdat1;return 0; /* now go for moov */ } 3.3.4对moov的读取   三.附录: ISO/IEC 14496 MPEG的协议标准 转自: http://blog.csdn.net/yu_yuan_1314/article/details/9406587 ISO/IEC 14496是MPEG专家组制定的MPEG-4标准于1998年10月公布第1版1999年1月成为国际标准1999年12月公布了第2版2000年初成为国际标准。全文分为27个部分1ISO/IEC 14496-1系统部分描述视频和音频数据流的控制、同步以及混合方式即混流 Multiplexing简写为MUX。2ISO/IEC 14496-2视频部分定义了一个对各种视觉信息包括自然视频、静止纹理、计算机合成图形等等的编解码器。例如XviD编码就属于MPEG-4 Part 2。3ISO/IEC 14496-3音频部分定义了一个对各种音频信号进行编码的编解码器的集合。包括高级音频编码Advanced Audio Coding缩写为AAC的若干变形和其他一些音频/语音编码工具。4ISO/IEC 14496-4一致性部分定义了比特流和设备的一致性条件用来测试MPEG-4的实现。5ISO/IEC 14496-5参考软件提供了用于演示功能和说明本标准其他部分功能的软件。6ISO/IEC 14496-6多媒体传送整体框架DMIF这是MPEG-4应用层与传输网络的接口定义了通信协议使MPEG-4系统的数据流能进入各种传输网络。还包含一个存储格式MP4用于存储编码的场景。7) ISO/IEC 14496-7优化的参考软件提供了对实现进行优化的例子(这里的实现指的是第五部分)。8ISO/IEC 14496-8在IP网络上传输定义了在IP网络上传输MPEG-4内容的方式。9ISO/IEC 14496-9参考硬件描述提供了用于演示怎样在硬件上实现本标准其他部分功能的硬件设计方案10ISO/IEC 14496-10高级视频编码AVC定义了一个视频编解码器codec。AVC和XviD都属于MPEG-4编码但由于AVC属于MPEG-4 Part 10在技术特性上比属于MPEG-4 Part2的XviD要先进。另外它和ITU-T H.264标准是一致的故又称为H.264。11ISO/IEC 14496-11场景描述和应用引擎。12ISO/IEC 14496-12ISO媒体文件格式定义了一个存储媒体内容的文件格式。13ISO/IEC 14496-13知识产权管理和保护IPMPIntellectual Property Management and Protection扩展。14ISO/IEC 14496-14MP4文件格式定义了基于第十二部分的用于存储MPEG-4内容的容器文件格式。15ISO/IEC 14496-15AVC文件格式定义了基于第十二部分的用于存储第十部分的视频内容的文件格式。16ISO/IEC 14496-16动画框架扩展AFXAnimation Framework eXtension。17ISO/IEC 14496-17同步文本字幕格式。18ISO/IEC 14496-18字体压缩和流式传输(针对公开字体格式)。19ISO/IEC 14496-19合成材质流Synthesized Texture Stream。20ISO/IEC 14496-20简单场景表示LASeR for Lightweight Scene Representation。21ISO/IEC 14496-21用于描绘(Rendering)的MPEG-J拓展。22ISO/IEC 14496-22开放字体格式Open Font Format。23ISO/IEC 14496-2符号化音乐表示Symbolic Music Representation。24ISO/IEC 14496-24音频与系统交互作用Audio and systems interaction。25ISO/IEC 14496-253D图形压缩模型3D Graphics Compression Model。26ISO/IEC 14496-26音频一致性检查定义了测试音频数据与ISO/IEC 14496-3是否一致的方法Audio conformance。27ISO/IEC 14496-273D图形一致性检查定义了测试3D图形数据与ISO/IEC 14496-11:2005, ISO/IEC 14496-16:2006, ISO/IEC 14496-21:2006, 和 ISO/IEC 14496-25:2009是否一致的方法3D Graphics conformance。
http://www.sadfv.cn/news/25049/

相关文章:

  • 网站是怎么制作的做设计的去哪些大厂
  • wordpress建站安全性网站建设选择本地
  • 网站手机站怎么做雄安网站建设多少钱
  • 潜江公司做网站中国十大最强装饰公司
  • 学校微网站模板下载建设银行网站注册不了
  • 专业做淘宝网站推广网站开发属于软件开发类吗
  • 做网站建设公司起名wordpress字体调整
  • 哈尔滨市做网站wordpress 类似 免费
  • 购物网站开发的意义和目的html5手机网站建设
  • 建立网站如何赚钱浅谈学校网站建设
  • 番禺网站建设找哪家建设产品网站课程设计
  • 手机网站Com什么是网络设计编辑
  • 在线购物网站建设的需求分析电商税收新政策2021
  • 湛江网站制作公司网站自适应怎么做
  • 企业网站有什么建设部领导干部官方网站
  • 可以自学网站开发深圳住房和建设局网站在哪个网
  • 重庆公司建设网站域名在哪个网站卖好
  • 如何网站建设公司石家庄网站如何制作
  • 环保部网站官网建设项目审批随州网络推广
  • seo工具网站做细分行业信息网站
  • 高端网站设计制作无锡营销型网站制作
  • 淘宝网站开发技术名称小公司做网站的实力
  • 网站建设毕业设计任务书网络营销有哪些就业岗位
  • c语言做项目网站东营最新新闻
  • 江苏企业网站建设价格网站开发计划时间
  • 化妆品网站设计厦门外发加工网
  • 南通模板自助建站嘉兴网站搜索排名
  • 做的比较好的意大利网站游戏开发培训机构
  • 什么专业会制作网站做网站的软件初中生
  • 广州有专做网站汽车交易网站系统建设