哈喽,想咨询一下,基于Linux平台,MP4v2库,目前正在做的一个关于MP4的moof这种格式的录制生成相对应的MP4文件,现有是生成标准的MP4那种格式,ftyp、moov、mdat这三个格式的,但是想做成moof那种分段格式存储的,想请教一下?具体的实现方案,网上找不到什么资料,或者有什么办法能直接解决MP4这个录制过程中掉电,没有执行MP4Close,以至于MP4文件中没有moov格式得问题
2条回答 默认 最新
- zmy1127 2023-02-15 18:22关注
基于Linux平台,使用MP4v2库实现MP4文件的录制和生成的过程中,要实现moof格式的分段存储,可以按照以下步骤进行:
在录制过程中,每隔一段时间或者每次记录固定大小的数据后,使用MP4WriteSample函数将数据写入MP4文件中,这些数据将被存储在mdat box中。
在每个moof box前,需要先写入一个mfhd box,这个box包含了一个sequence_number,用于标识当前这个moof box是第几个。
接着,需要写入一个traf box,这个box包含了Track Fragment Header Box(tfhd)、Track Fragment Decode Time Box(tfdt)、Track Run Box(trun)等子box。
在tfhd box中,需要设置该box的flags为0x2000000,表示track_id的值是一个随机数,并且使用了默认的base-data-offset、sample-description-index、default-sample-duration、default-sample-size等参数。
在tfdt box中,需要设置该box的baseMediaDecodeTime为当前时间戳。
在trun box中,需要设置该box的flags为0x200,表示使用数据偏移量、首个样本偏移量、样本大小和样本时间戳表格的方式来记录数据。
最后,写入一个moof box,这个box包含了前面写入的mfhd和traf box。
重复执行1-7步骤,直到所有的数据都写入MP4文件中。
在录制过程中掉电的情况下,可以在下一次开机后,继续使用MP4v2库打开这个文件,并且按照上面的步骤继续写入数据,直到完成整个MP4文件的生成。如果在掉电的时候没有执行MP4Close函数,可能会导致文件格式不完整,可以尝试使用MP4Box等工具对文件进行修复。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 改进Yolov8时添加的注意力模块在task.py里检测不到
- ¥50 高维数据处理方法求指导
- ¥100 数字取证课程 关于FAT文件系统的操作
- ¥15 如何使用js实现打印时每页设置统一的标题
- ¥15 安装TIA PortalV15.1报错
- ¥15 能把水桶搬到饮水机的机械设计
- ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
- ¥15 使用小程序wx.createWebAudioContext()开发节拍器
- ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
- ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?