Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中捕获视频时,将数据存储在视频帧中_Ios_Objective C_Avfoundation - Fatal编程技术网

在iOS中捕获视频时,将数据存储在视频帧中

在iOS中捕获视频时,将数据存储在视频帧中,ios,objective-c,avfoundation,Ios,Objective C,Avfoundation,如何在捕获视频时以每秒视频帧的形式存储时间或纬度等数据,并从iOS中保存的视频中检索这些数据?大多数视频格式都包含视频元数据,在资产级别描述整个视频。使用AVAssetWriter时,可以在写入之前添加元数据项,以将其与输出文件关联 如果您愿意,可以使用公共密钥()来存储信息 注意,这仅在文件级别,而不是每帧 如果您希望以“每秒帧数”类型的时间引用来存储信息,那么您可以构建一个自定义解决方案,与“vended”缓冲区交互通过AVFoundation,您可以为同步到视频文件的信息编写自己的自定义存

如何在捕获视频时以每秒视频帧的形式存储时间或纬度等数据,并从iOS中保存的视频中检索这些数据?

大多数视频格式都包含视频元数据,在资产级别描述整个视频。使用AVAssetWriter时,可以在写入之前添加元数据项,以将其与输出文件关联

如果您愿意,可以使用公共密钥()来存储信息

注意,这仅在文件级别,而不是每帧

如果您希望以“每秒帧数”类型的时间引用来存储信息,那么您可以构建一个自定义解决方案,与“vended”缓冲区交互通过AVFoundation,您可以为同步到视频文件的信息编写自己的自定义存储,您需要将其读回并自行处理

我不相信有办法将“每帧位置信息”封装在实际的视频文件本身中(你也许可以进行黑客攻击,重新利用字幕AVAssetTrack并写入信息,然后将其拔出,但不显示它-但是,当视频在其他设备上播放时,这将是不可预测的)

其他信息

在我写这篇文章一年后的评论之后,我做了更多的调查。虽然您可能会像建议的那样使用和滥用字幕曲目,但更好的解决方案是使用AVAsset元数据类型,这是专门针对这一点的

有许多不同的AVAssetTrack类型,允许您将数据计时到视频上的某个点,包括

  • 音频
  • 闭式卡普顿
  • 深度数据(编辑时的测试版)

  • 元数据谢谢你的想法与字幕!你认为在将“自定义元数据”作为副标题(比如,.vtt)中的注释时有什么缺陷吗?这是我头脑中的一个“疯狂想法”。我现在快速浏览了一下,有一个更好的方法可以做到这一点,包括一个特定的定时元数据类型-您最好使用它。你可以使用字幕来做这件事,但缺点是播放真正显示字幕的视频会看到垃圾。我将编辑我的答案。