ios - 使用 swift 将 "gif"转换为视频

标签 ios swift image ffmpeg avassetwriter

我环顾四周,在这里和那里发现了一些东西,主要是我应该使用 AVAssetWriter 来做到这一点,但我对此和视频编辑/创作的经验为 0,所以它对我没有太大帮助,因为我可以' 似乎找到了任何我可以轻松修改(或至少不是我的知识水平)的东西,以便它按照我的预期工作。

我有一个应用程序,每 cft(我从后端服务器获得的捕获帧时间)秒拍摄 n 张照片(由于显而易见的原因,它是双倍的)然后我使用 UIImageView 显示这些帧,帧每 dft 更改一次(显示帧时间,我也从后端服务器获得,可能与 cft 不同)。到目前为止,没有什么复杂的。

现在的工作流程是,将这些帧连同我想要的任何相关信息一起发送回服务器,然后服务器将使用 imagemagick 创建一个真实的 gif 文件,并使用 ffmpeg 使用所述 gif 创建一个 15 秒的视频。

问题是这使得我的 heroku 服务器账单没有我想要的那么低,因为 dynos 上的内存有限,我相信生成这些视频所需的时间大约是 5-10 秒(不确定,但比我想要的要长)

所以我的想法是让该应用创建视频,因为他已经拥有为此所需的所有信息,然后只需将其与其余帧和相关数据一起上传即可。现在使用带宽比在服务器上购买额外的处理能力要便宜得多。

  • 他有 n 个帧要循环
  • 他有一个浮点值,代表每一帧应该持续多长时间dft
  • 他有一个 gpu 或至少比 heroku 提供的 dynos 好得多的 cpu

我也四处看看是否有人制作了一个关于如何在 swift 中使用 ffmpeg 的广泛教程,但我仍然没有找到我水平的任何东西,我什至没有找到教程本身,只有一些 GitHub部分完成和/或没有链接原始教程以了解思维过程的项目。

如果有关于该主题的任何提示/代码示例/教程,我将不胜感激。

我添加的 ffmpeg 命令行等同于我希望能够做的事情(如果我可以直接在 iOS 上使用 ffmpeg,这也很好)

ffmpeg -framerate 100/13 -loop 1 -i frame%02d.png -c:v libx264 -r 100/13 -pix_fmt yuv420p -t 0:15 instagram.mp4

基本上我对输入帧速率执行了 100/(dft * 100) 并且仅以相同的 fps 输出 15 秒。顺便说一句,如果有任何方法可以优化此命令以使其运行得更快而不会降低质量,我可能能够保持当前使用 heroku 的方式,尽管我仍然更喜欢一些 iOS 解决方案。

最佳答案

在尝试了一些要点之后,我设法修改了 this solution在不卡住我的应用程序的情况下处理我的图像数组及其相关信息

关于ios - 使用 swift 将 "gif"转换为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48519187/

相关文章:

ios - 是否可以忽略 iOS 中的一种推送通知

ios - 如何使用 JASON pod 解析枚举?

security - 保护网页上的图像不被复制/保存?

android - WebView、类型文件、相机和图像的输入

python - 在 OpenCV 和 Python 中与多个源图像进行模板匹配

ios - 计算航向 iOS mapkit

ios - 解析incrementKey导致iOS应用程序崩溃

iphone - ".../libtool: can' t 找到 : -lxml2"的文件

swift - 如何扩展 UIViewController 以在 Swift 中隐藏和显示 StatusBar

ios - tableview 滚动得到错误的最后一个单元格