【问题标题】:converting a "gif" to video using swift使用 swift 将“gif”转换为视频
【发布时间】:2018-07-09 04:57:42
【问题描述】:

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

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

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

问题在于,由于 dynos 上的内存有限,而且生成这些视频所需的时间大约为 5-10 秒,我相信我的 heroku 服务器账单不会像我希望的那样低(不确定,但比我想要的要长)

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

  • 他有 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 解决方案。

【问题讨论】:

  • 我不知道为什么这被否决了。作者显然已经采取了自己的步骤来解决这个问题,并进行了广泛的研究。他详细介绍了他的具体情况,并列出了他的思考过程。这是一个全面的问题 IMO。
  • @AhmadF 我已经看到了这个问题,但我只有手动动画形式的 gif(还不是真正的 gif),如果我可以避免任何额外的运行时间,我会更喜欢在将其转换为视频之前必须生成一个 gif。

标签: ios swift image ffmpeg avassetwriter


【解决方案1】:

在玩弄了一些要点后,我设法修改了this solution 来处理我的图像数组和它的相关信息,而不会冻结我的应用程序

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 2017-04-20
    • 2014-12-16
    • 2017-04-05
    • 1970-01-01
    • 2014-04-19
    • 2022-11-02
    • 2021-06-30
    相关资源
    最近更新 更多