如何在捕获视频的同时以每秒视频帧的形式存储时间或纬度等数据,并从iOS中保存的视频中检索此数据?
答案 0 :(得分:2)
大多数视频格式都包含视频元数据,用于描述资产级别的整个视频。使用AVAssetWriter时,可以在写入之前添加MetaData项目以将其与输出文件相关联。 https://developer.apple.com/reference/avfoundation/avassetwriter#//apple_ref/occ/instp/AVAssetWriter/metadata
如果您愿意,可以使用常用键(https://developer.apple.com/reference/avfoundation/1668870-av_foundation_metadata_key_const/1669056-common_metadata_keys)来存储信息。
请注意,这只是在文件级别,而不是每帧。
如果您希望以“每秒帧数”类型时间参考存储信息,那么您可以构建自定义解决方案,与AVFoundation Recording locations in time domain with AVFoundation“已售出”的缓冲区进行交互。然后可以编写自己的自定义存储对于与视频文件同步的信息,您需要将其读回并自行处理。
我不相信有一种方法可以在实际视频文件中封装“每帧位置信息”(你可以做一个黑客并重新调整字幕AVAssetTrack并写入信息,然后将其拉出但不显示它 - 当在其他设备上播放视频时,这将是不可预测的。)
附加信息
在我写这篇文章一年后的评论之后,我做了一些调查。虽然您可以像建议的那样使用和滥用字幕轨道,但更好的解决方案是使用专门用于此的AVAsset元数据类型。 https://developer.apple.com/documentation/avfoundation/avmediatype/1390709-subtitle
有许多不同的AVAssetTrack类型,可让您将数据计时到视频中的某个点,包括