【发布时间】:2018-10-02 09:04:28
【问题描述】:
我正在处理一个项目,我想知道是否可以确定视频是否是回旋镖视频。 Boomerang 视频通常长约 4 秒或略短。
到目前为止,我想做的是过滤从用户相机胶卷收到的数组,只显示 4 秒的视频,但有更好的方法吗?
任何指针或建议将不胜感激。
【问题讨论】:
我正在处理一个项目,我想知道是否可以确定视频是否是回旋镖视频。 Boomerang 视频通常长约 4 秒或略短。
到目前为止,我想做的是过滤从用户相机胶卷收到的数组,只显示 4 秒的视频,但有更好的方法吗?
任何指针或建议将不胜感激。
【问题讨论】:
这不是一个确切的答案,而是如何解决这个问题的一种观点。
据我了解,Boomerang 的工作原理是拍摄超短、超快的连拍照片,并将它们拼接成一个可以向前和向后以及向前和向后播放的迷你视频。这意味着视频的第一帧有机会再次出现。所以我建议将视频的每一帧转换为 UIImages 数组。然后获取该数组的第一张图像,并找出该图像是否存在于数组的其余部分中。
要将视频制作成图像数组,您可以参考此答案的 Update for Swift 4.2 部分:- https://stackoverflow.com/a/45153948/4637057
从中您将获得 frames,它是一组 UIImages。现在通过使用frames.remove(at: 0) 从该数组中取出第一个图像来创建另一个数组。但在此之前创建 image1,即frames[0]。然后循环遍历这个新数组,将每个图像视为 image2 并应用此逻辑来确定第一帧是否重复:- https://stackoverflow.com/a/6488838/4637057
【讨论】:
如果您使用的是 Photos.framework,我可以在这里给您的唯一帮助是引用 playbackStyle 的 PHAsset 对象。更多信息请参见 PhotoKit 文档here
【讨论】:
loopingVideo 可能是您正在寻找的值。您可以使用谓词过滤PHAssets。我在文档中找不到bounceVideo。
PHAsset.PlaybackStyle.videoLooping - An enumeration indicating that the asset should be displayed as a looping video.。因此,循环视频的答案是肯定的。但问题是,Boomerang 并不是一个循环播放的视频。这是“弹跳”视频。我不确定,如果你能准确地检测到回旋镖。但是我会从loopingVideo的角度开始挖掘