转换" gif"使用swift进行视频

时间:2018-01-30 10:29:06

标签: ios swift image ffmpeg avassetwriter

我环顾四周,在这里和那里找到了一些东西,主要是我应该使用AVAssetWriter来做到这一点,但我有0经验和视频编辑/创作,所以它不能帮助我很多,因为我似乎找不到任何可以轻易修改的东西(或者至少不是我的知识水平),所以它可以按照我的意图运作。

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

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

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

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

  • 他有n个框架来循环
  • 他有一个浮点值,表示每个帧应该持续多长时间dft
  • 他有一个gpu或者至少比一个dynos heroku提供的更好的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解决方案。

1 个答案:

答案 0 :(得分:0)

在玩了一些小玩意儿后,我设法修改this solution以处理我的图像数组及其相关信息而不冻结我的应用