- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将剪辑缩放到某个尺寸,然后停止进一步缩放。换句话说,剪辑在达到一定尺寸后停止进一步增加其尺寸,如果剪辑从其原始尺寸的小得多开始缩放到更大的版本则更好。我正在使用电影模块。使用以下代码,我可以逐步缩放剪辑,但很难弄清楚如何将剪辑从小变大,从而创建动画效果。非常感谢您提供的任何反馈。
import os
from moviepy.editor import *
screensize = (640,360)
clip = (ImageClip(img)
.resize(height=screensize[1]*4)
.resize(lambda t : 1+0.02*t)
.set_position(('center', 'center'))
.set_duration(10)
)
我很难弄清楚如何编写函数以使用 moviepy 的 txtclip 创建打字效果,这意味着剪辑中的字母将一个接一个地显示,从而创建流畅的打字机动画文本. Moviepy 有一些有用的类,例如 findObjects——它可以检测剪辑中的单个字母:
txtClip = TextClip('Cool effect',color='white', font="Amiri-Bold",
kerning = 5, fontsize=100)
cvc = CompositeVideoClip( [txtClip.set_pos('center')],
size=screensize, transparent=True)
letters = findObjects(cvc) # a list of ImageClips
here is the link: http://zulko.github.io/moviepy/examples/moving_letters.html
找到字母(字母夹)后,我想以这样一种方式加入它们,使它们一个接一个地出现,看起来像打字。
文档中已经有一些移动字母的示例,但是它们可能很有用。谢谢
最佳答案
这是一种实现您想要的方式。关键是在命名函数中定义调整大小的逻辑,而不是使用 lambda
。
import os
from moviepy.editor import *
def resize_func(t):
if t < 4:
return 1 + 0.2*t # Zoom-in.
elif 4 <= t <= 6:
return 1 + 0.2*4 # Stay.
else: # 6 < t
return 1 + 0.2*(duration-t) # Zoom-out.
duration = 10
screensize = (640,360)
clip_img = (
ImageClip('test.png')
.resize(screensize)
.resize(resize_func)
.set_position(('center', 'center'))
.set_duration(duration)
.set_fps(25)
)
clip = CompositeVideoClip([clip_img], size=screensize)
clip.write_videofile('test.mp4')
编辑
下面的代码回答了你问题的第二部分(我不知道提出两个单独的问题是否更好)。
from __future__ import division
from moviepy.editor import *
from moviepy.video.tools.segmenting import findObjects
def clip_typewriter(text, duration_clip, duration_effect):
# `duration_effect` is effectively the time where the last letter appears.
clip_text = TextClip(
text,
color='white',
font='Consolas',
fontsize=80,
kerning=3,
)
letters = findObjects(clip_text, preview=False)
# Select the start time in seconds for each letter found:
n = len(letters)
times_start = [duration_effect*i/(n-1) for i in range(n)]
clips_letters = []
for i, letter in enumerate(letters):
clips_letters.append(letter
.set_position(letter.screenpos)
.set_start(times_start[i])
.set_end(duration_clip)
# Here you can add key sounds using `set_audio`.
)
return CompositeVideoClip(clips_letters, size=clip_text.size)
if __name__ == '__main__':
screensize = (320, 180)
fps = 12
clip_1 = clip_typewriter('hello', 2, 1).set_start(1).set_position('center')
clip_2 = clip_typewriter('world', 2, 1).set_start(4).set_position('center')
clip_final = CompositeVideoClip([clip_1, clip_2], size=screensize)
clip_final.write_gif('test_typewriter.gif', fps=fps)
结果:
关于python - Moviepy 缩放效果需要调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580910/
**摘要:**python 中的视频处理模块,有一个叫做 moviepy,今天我们就来唠唠它。 本文分享自华为云社区《python moviepy 的用法,看这篇就能入门》,作者: 梦想橡皮擦。 py
我正在使用此代码 (moviepy) 调整 mp4 视频的大小: video_clip = VideoFileClip(url) resized = video_clip.resize(width=7
我想在视频中写入文本并让它在播放中更改,这是我尝试过的,但它会将每个文本叠加在彼此上并且只显示文本 5 秒? def generateVideo(initial_text, secondary_tex
我一直在尝试构建一个项目,其中 Flask 应用程序可以自动将选定数量的视频连接到“核心视频”。 用户可以上传视频,发送到亚马逊 s3 进行存储。 所有视频都由 Moviepy 预处理为 mp4 文件
我想将剪辑缩放到某个尺寸,然后停止进一步缩放。换句话说,剪辑在达到一定尺寸后停止进一步增加其尺寸,如果剪辑从其原始尺寸的小得多开始缩放到更大的版本则更好。我正在使用电影模块。使用以下代码,我可以逐步缩
我正在尝试在视频片段之间使用滑入和滑出过渡,但不幸的是我只能使用这样的交叉淡入淡出来使其工作: from moviepy.editor import VideoFileClip, concatena
有没有一种方法可以成功地将任何剪辑拼接在一起,从而防止出现奇怪的故障?我从较小的 .mp4 文件中整理了一个 .mp4,我得到了一个带有奇怪故障的最终视频。我通过 Sublime Text 3 在 W
我正在尝试编写一个调整视频文件大小的应用程序,最简单的方法是 moviepy。但是,我无法使用 moviepy 的调整大小功能。看来没有解决引用。我的部分代码在这里: 我尝试使用 ffmpeg 和子进
我使用 MoviePy 从图像创建视频,并在图像底部添加一些注释。问题是我要添加的文本是越南语(不是英语),因此 MoviePy 无法正确显示它。 具体来说,下面是我的代码 # -*- coding:
我有一个 720x1280 的 mp4 视频,我想要不同尺寸的视频,例如:0.66%、0.5% 和 0.33%。 对于我使用的每种尺寸: clip = mp.VideoFileClip(file) c
我有一个脚本,它将背景和句子组合成一张图像,然后从该图像创建一个 10 秒的剪辑。但是,即使正确创建了图像,大约 20% 的已创建剪辑已损坏。这是我使用的代码: file = open(f"quote
我将视频对象列表连接在一起,然后用 write_videofile 编写它们,奇怪的是,我第一次编写文件时,它在前半场播放良好,然后在卡住之前播放文件中每个剪辑的前几帧。但这是奇怪的部分,如果我在第一
我正在玩moviepy,目的是创建嵌入网页的视频。但是,我无法让我创建的视频在 chrome 和 firefox 中实际播放(它确实在 safari 中播放:/)。 Firefox 声称“文件已损坏”
我正在使用 moviepy 导入一些视频,但本应为纵向模式的视频却以横向模式导入。我需要检查旋转是否已更改,如果已更改,则将其旋转回来。 此功能是否内置于 moviepy 中?如果没有,我还能如何检查
我正在用moviepy制作视频。在本地创建的最终视频文件具有音频。当我在heroku上运行相同的代码时,最终视频没有音频。 首先,我认为不使用heroku上的/ tmp目录可能是问题所在。我还遵循建议
我正在尝试在基础视频上叠加图像。这是我目前的代码: clip = VideoFileClip("base_video.mp4") cat = (ImageClip("title.png")
我正在使用 pygame 制作游戏,我想为其添加过场动画。然而 pygame 电影模块不再工作,所以我不得不求助于使用 moviepy。从我所看到的来看,Moviepy 的记录并不充分,所以我在弄清楚
我正在尝试在基础视频上叠加图像。这是我目前的代码: clip = VideoFileClip("base_video.mp4") cat = (ImageClip("title.png")
在 MoviePy 中,有一个 API 可以从文本创建剪辑以及连接剪辑列表。 我正在尝试在循环中创建剪辑列表,然后尝试将它们连接起来。 问题是每次它都会创建一个 25 秒的视频文件,并且循环中仅包含最
我刚刚第一次尝试使用moviepy库。从 numpy 数组生成电影非常简单、直观并且开箱即用。这是我尝试过的: from moviepy.editor import VideoClip import
我是一名优秀的程序员,十分优秀!