希望播放非编码视频上传,然后通过 FFMPEG 从选择点导出 gif

Posted

技术标签:

【中文标题】希望播放非编码视频上传,然后通过 FFMPEG 从选择点导出 gif【英文标题】:Looking to play back non-encoded video upload then export gif from selection point via FFMPEG 【发布时间】:2020-02-13 20:19:00 【问题描述】:

我们整个星期都在尝试破解此密码,并与所有人联系,看看您是否有任何解决方案?

    我们希望用户上传视频,在下一步中,他将选择视频的一小段 5 秒循环,将其制作为 gif。 老开发者能够通过在 10 秒而不是 5 秒处拼接视频来做到这一点,但没有重新编码,这意味着它有时会超过 12 秒,在某些情况下会小于 7 秒。 我们更改了代码以强制重新编码关键帧,以便它在 5 秒处拼接视频以显示循环。 这些片段使用 html5 视频播放器显示给用户。 选择循环后,切片视频将转换为 gif。

一切都按副顺序进行。问题是当用户上传一个大尺寸和长度的视频时,这种切片和重新编码需要很长时间,这会导致用户觉得网站无法正常工作。

我们想要的很简单:

    循环播放视频的 5 秒部分。 如果用户想要选择另一个循环,他/她单击下一个按钮并进入下一个 5 秒循环,该循环将是视频的 25% 或其他一些 在选择该部分时,它会将其转换为 gif。

【问题讨论】:

对于大视频,您总是会遇到这个问题。最简单的建议可能是创建一个较低分辨率的代理(同样,这需要时间,但不像完整的重新编码/leyframe那样长),他们可以查看并选择5s剪辑,然后应用完整的保真度重新编码/关键帧/异步导出进程 啊,我相信有人告诉我们可能会这样做:“您可以从命令行尝试 -preset 帮助并选择诸如超快之类的东西。这仅用于预览,因此您无论如何都不需要太多质量. 你可以用更多的比特率来补偿。我会让我们的开发人员查看您的评论并做出相应的回应,谢谢! 【参考方案1】:

不要对整个视频进行编码,只需寻找最近的关键帧,开始解码,丢弃帧直到您想要的帧,然后从该帧开始编码。 ffmpeg 可以通过在输入之前和之后指定搜索参数来做到这一点。

【讨论】:

谢谢!我会将此转发给我们的开发人员!我们可能会粘贴代码以获得帮助? ffmpeg 文档足以回答这个问题。也有人向您(或您团队中的某个人)提供了一些建议。如果这还不够,请让您的问题更具体。【参考方案2】:

我们聘请了一位开发人员来解决问题。谢谢您的帮助!

【讨论】:

以上是关于希望播放非编码视频上传,然后通过 FFMPEG 从选择点导出 gif的主要内容,如果未能解决你的问题,请参考以下文章

通过 ffmpeg 获取视频第一帧(指定时间)图片

通过ffmpeg反向播放视频

如何把一个视屏剪成左边一半和右边一半,

ffmpeg转码flv到avi《转》

Qt与FFmpeg联合开发指南——编码:代码流程演示

FFmpeg:检查 aac 比特流是不是格式错误