当前位置: 首页 > 知识库问答 >
问题:

Moviepy在连接后的前几帧后冻结

宗政元青
2023-03-14

我一直在尝试构建一个项目,其中Flask应用程序可以自动将选定数量的视频连接到“核心视频”。

用户可以上传视频,并将其发送到amazon s3进行存储。所有视频都由Moviepy预处理为mp4文件,以24 fps无音频运行,分辨率为720p。经过此预处理后,视频上传到amazon s3。

在s3中的所有新上载中,创建了一个队列,管理员可以批准或删除该队列。所有经批准的视频最终都会出现在一个列表中,该列表与当前的“核心视频”连接在一起。这是通过使用Pythons Moviepy库完成的。

from moviepy.editor import VideoFileClip, concatenate_videoclips, AudioFileClip

videos_to_concat(VideoFileClip(core_video.s3_link))

for video in approved_videos:
    videos_to_concat.append(VideoFileClip(video.s3_link))
result = concatenate_videoclips(videos_to_concat, method=compose)

之后,在视频的整个持续时间内添加一些音频。

result_with_audio = result.set_audio(some_audio.mp3)

然而,问题是,在没有抛出任何错误的情况下,一些视频在连接成功后的前几帧被冻结。帧在原始剪辑期间保持静止。但音频仍在播放。加载下一个剪辑时,该剪辑要么正常播放,要么在几帧后具有相同的冻结行为。似乎没有明显的家长。

起初,我认为错误可能是ffmpeg没有正确地从正常的s3链接下载视频,但这并不能解释为什么一开始最大的视频和其他一些视频得到了正确的渲染,而其他一些视频没有得到正确的渲染。

这可能是由于编解码器的潜在差异造成的吗?(libx264与mpeg4)?或者,这种通过URL访问文件,然后直接将其提供给moviepy的方式是否可能导致问题?(视频文件剪辑(https://amazon.s3.link.to.file.here.mp4)我是否应该尝试下载所有文件,然后在本地连接它们,或者我是否正确地假设当前的方法应该有效。

检查文件时,没有明显的文件名、文件类型、分辨率似乎是问题,预处理似乎做了它应该做的。

很想听听关于如何解释并希望解决由此产生的串联视频的腐败的任何想法。

共有1个答案

闽康安
2023-03-14

好吧,我最终确实解决了这个问题。通过使用amazon s3为Python提供的boto3客户端下载所有视频,问题得到了解决。一旦将所有视频下载到网络服务器的本地存储,连接就可以正常工作,没有任何问题。

我猜这可能与s3没有通过链接即时提供整个视频文件有关。最后,在使用moviepy执行任何编辑之前,只使用提供的s3客户端下载存储视频似乎是非常合理的。

 类似资料:
  • 几分钟后,出现此错误。当我执行另一个查询时,它工作正常。 这是错误: 这是我的配置文件:

  • 是否可以配置WebLogic的JDBC连接池,以便在经过一定时间后重置已建立的连接,即使该连接处于活动状态?

  • 我有一个用Angular编写的UI应用程序,它有一个在NodeJS中运行的后端。我还有另外两个将从NodeJS后端调用的服务。这些应用程序运行在docker容器中,并部署到AWS中的Kubernetes集群中。 流程是这样的: 我尝试创建一个AWS API网关,它指向Angular UI的ELB IP,但它不能提供页面。 做这件事的正确方法是什么?任何帮助都是非常感谢的。

  • 在预连接和获取访问部分中执行的所有攻击,都是还没有连接到网络。在本节中,我们将讨论连接后攻击,这意味着我们可以在连接到网络后进行攻击。现在,无论网络是无线网络还是有线网络并不重要,目标使用WEP或WPA密钥并不重要,我们将要讨论连接后攻击。 在之前的所有攻击中,我们将无线网卡保持在监控模式,以便可以捕获任何无线信息。在本节中,我们将在托管模式下使用无线网卡,因为我们可以访问网络,实际上不需要捕获所

  • 警告1--[nio-8080-exec-2]O.H.Engine.jdbc.spi.sqlExceptionHelper:SQL错误:0,SQLState:08S01 错误1--[nio-8080-exec-2]O.H.Engine.jdbc.spi.sqlExceptionHelper:I/O错误:连接重置 错误1--[nio-8080-exec-2]O.A.C.C.C.C.[.[.[/].[d

  • 我有一个简单的聊天客户端,我正试图使用作为界面。我的问题是,使用进行聊天输入/输出后,窗口将冻结并阻塞,直到收到另一条消息。 这段代码被缩短了,但是显示了相关的部分。小部件将在很长一段时间内变得无响应,而被调用之后,直到收到消息才会响应。 当小部件再次响应时,条目字段包含输入的所有数据,但在“冻结”时间内我看不到更改。小部件也是如此。 如果有人能解释一下为什么会这样,或者指出我是否错过了这里使用的