/* ** trak box的定义,包含: ** tkhd、mdia */ static mp4_atom_handler mp4_trak_atoms[] = { { "tkhd", &Mp4Meta::mp4_read_tkhd_atom }, { "mdia", &Mp4Meta::mp4_read_mdia_atom }, { NULL, NULL } };trak box的解析
// 读取trak boxintMp4Meta::mp4_read_trak_atom(int64_t atom_header_size, int64_t atom_data_size){ int rc; Mp4Trak *trak; if (trak_num >= MP4_MAX_TRAK_NUM - 1) return -1; trak = new Mp4Trak(); trak_vec[trak_num++] = trak; trak->trak_atom.buffer = TSIOBufferCreate(); trak->trak_atom.reader = TSIOBufferReaderAlloc(trak->trak_atom.buffer); TSIOBufferCopy(trak->trak_atom.buffer, meta_reader, atom_header_size, 0); mp4_meta_consume(atom_header_size); // 该函数内部实际会进行下面的处理: // 调用mp4_read_tkhd_atom读取tkhd box // 调用mp4_read_mdia_atom读取mdia box rc = mp4_read_atom(mp4_trak_atoms, atom_data_size); return rc;}
新闻热点
疑难解答