在与黄类实习期间,我通过开发一个有趣的项目。我几乎不知道这个项目最终会感觉像黑客马拉松。在这篇文章中,我将分享开发该项目时经历的旅程。从最初的架构及其背后的思维过程,到我面临的挑战以及如何克服它们,我将详细介绍我的经验。因此,在我带您完成这个令人兴奋的项目的旅程时,扣紧并加入我。
它是如何开始的?
这是一个星期五晚上7点左右,当时我们的团队经理提出了一个有趣的想法,这是为在我们的应用程序主页上为卷轴创建Instagram风格的自动播放部分的可能性。卷轴不会显示静态图像,而是展示内容的简短片段,诱使用户单击并观看完整的卷轴。这引发了应用团队和产品经理之间的对话,因为他们集思广益并辩论了实施这项新功能的最佳方法。我坐在和做吉拉(Jira)分配给我,并聆听整个对话(那天不是很专注于工作)。
每个人都讨论了在我们应用程序主页上为卷轴创建自动播放部分的可能性时,团队开始集思广益,以展示各种内容来显示简短的内容段。有人建议使用GIF,因为这不需要应用程序更改,但是有一个捕获。他们以前曾尝试使用GIF,但发现转换为它们的大小太大满足了我们的需求。我还开始探索Python中的不同库,看看我是否可以找到一种方法来创建较小的压缩GIF。经过一番实验,我发现了一个库,它允许我调整某些参数并达到所需的结果,它是 hoverpy 。我的初始代码是一个简单的片段,它将在视频的前5秒内遵循视频路径并创建GIF。我与我的经理和工程总监分享了这一点,令我们高兴的是,该片段能够为我们的许多视频生成1MB以下的GIF。尽管我们仍然需要进行一些调整才能在500KB限制下获得,但我们终于有了一个可行的解决方案。最重要的是,由于它是一个脚本,我们可以简单地将其链接到我们所有卷轴的链接,并将所得的GIF上传到我们的AWS S3存储桶中而无需参与内容团队,这可以节省他们的一周工作。 P>
黑客马拉松开始...
决定将使用GIF作为我们的解决方案的决定,是时候为该项目创建路线图了。已经是晚上8点了,大多数办公室已经清空了一天。我们知道我们需要迅速采取行动以取得进步。该项目分为两个不同的步骤。第一步是用新生成的GIF替换卷轴的现有静态图像。第二步是为任何已上传到应用的新视频生成和存储GIF的过程自动化。这将是一项更复杂的事业。
随着项目的第一步,我们的经理和工程总监开始编写一个查询,以适当的CSV格式获取卷轴及其上载路径。他们还致力于更改后端以适应新的GIF格式。同时,我的任务是编写一个Python脚本,该脚本将读取CSV并为每个视频生成GIF,然后将其上传到我们的S3存储桶中。为了确保将GIF压缩到所需的尺寸,我们添加了一个额外的步骤,如果特定的GIF大于500kb,则将重试该过程3-4次。我们还提供了一项功能,以降低帧速率,直到文件在所需的尺寸范围内。此外,我们知道我们需要进行脚本多线程,以便在合理的时间内为大约900个卷轴生成GIF。这是一项复杂的任务,但我们决心直到最后看到它。
经过一小时的努力,我们的脚本,CSV和后端终于准备好接受测试。深吸一口气和兴奋感,我们运行了剧本,看着计时器滴定到终点线。估计完成任务的时间是两个小时,我们热切地观看了生成的GIF的数量在我们面前的大屏幕上越来越高。当我们等待剧本结束时,我们休息一下,订购并享用了急需的晚餐,我们的眼睛一直都粘在屏幕上。期待几乎无法承受。但是最后,剧本结束了,我们可以看到我们面前展示的辛勤工作的结果。
有了渴望的期待,我打开了该应用程序并导航到主页,渴望看到我们辛勤工作的结果。但是令我惊讶的是,没有一个视频显示GIF。我的心沉没了,我感到失望。但是后来,我的经理打开了他的手机,令我解脱的,每个视频都在显示GIF。我很快意识到我们正在进行A/B测试中,并且我们的辛勤工作确实得到了回报。我们对所有内容进行了彻底的测试,发现一切正常。最后,随着时钟接近午夜,我们包裹了黑客马拉松。现在,我们可以在周末监视卷轴的点击率,并根据收集的数据做出明智的决定。
这篇文章已经比我预期的要长。在本文的第2部分中,我将共享代码片段以及工作过程。