Video 能否在mp4头中为第一帧设置任意字节偏移量?

Video 能否在mp4头中为第一帧设置任意字节偏移量?,video,mp4,Video,Mp4,TLDR:您可以在mp4头中为第一帧设置任意字节偏移量吗 我有一个实用程序的想法,用于处理在goPro上记录的mp4文件,以帮助以后对同时记录的文件进行时间对齐 这一想法的核心是获取一个大文件(数千兆字节),并从一开始就逐帧传输,直到找到一个嵌入二维码的帧,这可能是通过将相机指向智能手机或平板电脑拍摄的,而智能手机或平板电脑正在快速浏览指示某种时间码的二维码。项目的这一部分将相对简单,只是计算帧的问题 然后我希望能够备份mp4文件的头,并重写头,告诉它文件的前x帧实际上是未知数据,因此视频内容从

TLDR:您可以在mp4头中为第一帧设置任意字节偏移量吗

我有一个实用程序的想法,用于处理在goPro上记录的mp4文件,以帮助以后对同时记录的文件进行时间对齐

这一想法的核心是获取一个大文件(数千兆字节),并从一开始就逐帧传输,直到找到一个嵌入二维码的帧,这可能是通过将相机指向智能手机或平板电脑拍摄的,而智能手机或平板电脑正在快速浏览指示某种时间码的二维码。项目的这一部分将相对简单,只是计算帧的问题

然后我希望能够备份mp4文件的头,并重写头,告诉它文件的前x帧实际上是未知数据,因此视频内容从x帧开始。(通过这种方式,我可以非常快速地对多个文件进行时间对齐,因此当它们加载到编辑器中时,它们都是同时编码的

我不想做的是对整个文件进行转码,理想情况下,我希望能够对存储卡上的文件进行转码


我的问题:给定一个帧或字节偏移量,我想称之为“第一帧”,我是否可以通过某种方式调整标题,以无损地设置该文件的播放点?

MP4文件有其内部结构,字节偏移量根本不是您感兴趣的内容,因为您通常无法指示播放器从特定的字节偏移量播放。相反,它是从特定的时间位置播放

在你的情况下,我会考虑识别帧的第一步(从文件开始的时间位置)。其中包含感兴趣的代码。请注意,此位置不一定可以从以下位置播放:H.264编码(MP4文件的典型编码)是时间压缩,播放可能会后退几帧以开始解码/播放。这会带来一种威胁,即您的QR码位于相邻关键帧之间,但仍然不在任何关键帧上,并且您甚至不知道可以选择将二维码作为第一个可播放的帧,而无需重新编码内容(至少部分)


知道QR码的位置,最简单的方法是将其保存在外部某处,以便稍后查找并从中开始播放(或提取缩略图)。另一种方法是重新多路传输数据,而无需重新编码内容,以便在感兴趣的位置之前修剪所有内容(上文段落中的关键帧适用于此处).使用适当的工具重新复用基本上可以以文件复制的速度进行,并且不会导致质量损失(如果要使用现有的预构建工具(如FFmpeg),这可能是超级用户问题,而不是堆栈溢出).

我计划使用库对每一帧进行解压,边数边记录读取的字节数。当我看到qr码时(可能不是实际的qr码,但针对时间编码进行了优化),记下识别代码所需的帧数和字节偏移量。然后,我会一直读取帧,直到下一个关键帧,这将是我的参考点。我会对尽可能多的文件执行此操作,并选择最接近的匹配来对齐文件。这不是绝对完美的,但它将在1个关键帧内您可以在编辑软件中执行rest。我看到有可能将块标记为“跳过”块。我想的是在我想要开始播放的关键帧处将第一个视频块分成两块,并将第一个块称为跳过块。然后视频将从关键帧处开始。我必须深入研究规范,找出最好的方法。我想,如果有人这样做了,在这里提问将是一个好的开始类似的东西,或者看到它做了什么,可以为我指明正确的方向。如果我必须的话,我可以重新发明轮子,只是不愿意。