MP4学习(八)ts-mp4源码阅读(6)tkhd box的解析
来源:互联网 发布:java界面设计 编辑:程序博客网 时间:2024/04/28 02:58
tkhd box的解析
常见的MP4结构图
tkhd box的定义
// tkhd box typedef struct { u_char size[4]; u_char name[4]; u_char version[1]; /* flags标志位 按位或操作结果值,预定义如下: 0x000001 track_enabled,否则该track不被播放; 0x000002 track_in_movie,表示该track在播放中被引用; 0x000004 track_in_preview,表示该track在预览时被引用。 一般该值为7,如果一个媒体所有track均未设置track_in_movie和track_in_preview, 将被理解为所有track均设置了这两项;对于hint track,该值为0 */ u_char flags[3]; u_char creation_time[4]; u_char modification_time[4]; u_char track_id[4]; // id号,不能重复且不能为0 u_char reserved1[4]; u_char duration[4]; // track的时间长度 u_char reserved2[8]; u_char layer[2]; // 视频层,默认为0,值小的在上层 u_char group[2]; // track分组信息,默认为0表示该track未与其他track有群组关系 u_char volume[2]; // 音量 u_char reverved3[2]; u_char matrix[36]; // 视频变换矩阵 u_char width[4]; // 宽 u_char heigth[4]; // 高 } mp4_tkhd_atom;
tkhd box的解析
intMp4Meta::mp4_read_tkhd_atom(int64_t atom_header_size, int64_t atom_data_size){ int64_t atom_size; Mp4Trak *trak; atom_size = atom_header_size + atom_data_size; trak = trak_vec[trak_num-1]; trak->tkhd_size = atom_size; trak->tkhd_atom.buffer = TSIOBufferCreate(); trak->tkhd_atom.reader = TSIOBufferReaderAlloc(trak->tkhd_atom.buffer); TSIOBufferCopy(trak->tkhd_atom.buffer, meta_reader, atom_size, 0); mp4_meta_consume(atom_size);// 读取tkhd box,其中offsetof可以取出结构体中某个成员相对于起始地址的偏移量 mp4_reader_set_32value(trak->tkhd_atom.reader, offsetof(mp4_tkhd_atom, size), atom_size); return 1;}
0 0
- MP4学习(八)ts-mp4源码阅读(6)tkhd box的解析
- MP4学习(五)ts-mp4源码阅读(3)ftyp box的解析
- MP4学习(六)ts-mp4源码阅读(4)moov box的解析
- MP4学习(七)ts-mp4源码阅读(5)mvhd box的解析
- MP4学习(七)ts-mp4源码阅读(5)trak box的解析
- MP4学习(九)ts-mp4源码阅读(7)mdia box的解析
- MP4学习(十)ts-mp4源码阅读(8)其他box的解析
- MP4学习(四)ts-mp4源码阅读(2)MP4的解析流程
- MP4学习(三)ts-mp4源码阅读(1)介绍
- MP4文件格式详解——元数据moov(二)tkhd box
- 多媒体 MP4文件格式详解——元数据moov(二)tkhd box
- MP4文件格式详解——元数据moov(二)tkhd box
- MP4文件格式详解——元数据moov(二)tkhd box(转)
- MP4文件格式详解——元数据moov(二)tkhd box
- MP4学习(二)MP4文件格式的解析,以及MP4文件的分割算法
- MP4 esds box解析
- MP4 esds box解析
- MP4 box解析
- Android网络数据Json格式解析
- ListView侧滑删除的实现,SlideDeleteListView,针对ScrollView嵌套ListView视图和手势冲突优化
- Error:Execution failed for task ':app:clean'.
- Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
- 国际象棋规则
- MP4学习(八)ts-mp4源码阅读(6)tkhd box的解析
- 智慧交通指挥决策平台,让“城市大脑”尽收眼底
- FineReport中JS如何自定义按钮导出
- linux ---- rmdir
- Python爬虫入门(三)BeautifulSoup库
- 时间工具类
- C语言写通讯录 链表版本
- 题目观察记录(无代码 or 题解 but 持续更新)
- 通过spring-data-jpa进行复杂对象查询