qq_1256879347 2023-02-15 17:23 采纳率: 0%
浏览 9

MP4v2库MP4异常掉电问题处理

哈喽,想咨询一下,基于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等工具对文件进行修复。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月15日

悬赏问题

  • ¥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 文件还会报错这是什么原因呢?