标签: moviepy

为什么 VideoClip 写入视频文件时帧会发生变化?

我写了以下代码:

from moviepy.editor import *
from PIL import Image
clip= VideoFileClip("video.mp4")
video= CompositeVideoClip([clip])
video.write_videofile("video_new.mp4",fps=clip.fps)
Run Code Online (Sandbox Code Playgroud)

然后为了检查帧是否已更改以及如果更改,哪个函数更改了它们,我检索了“clip”、“video”和“video_new.mp4”的第一帧并比较了它们:

clip1= VideoFileClip("video_new.mp4")
img1= clip.get_frame(0)
img2= video.get_frame(0)
img3= clip1.get_frame(0)
a=img1[0,0,0]
b=img2[0,0,0]
c=img3[0,0,0]
Run Code Online (Sandbox Code Playgroud)

我发现 a=24,b=24,但 c=26....事实上,在运行数组比较循环时,我发现“img1”和“img2”相同,但“img3”不同。我怀疑函数 video.write_videofile 负责数组的更改。但我不知道为什么......任何人都可以向我解释这一点,并建议一种在不改变帧的情况下编写剪辑的方法吗?

'VideoFileClip'PS:我阅读了,的文档'FFMPEG_VideoWriter''FFMPEG_VideoReader'但找不到任何有用的东西...我需要在编写我正在处理的代码之前阅读确切的框架。请给我建议一个方法。

python video clip moviepy

5
推荐指数
1
解决办法
2406
查看次数

moviepy调整大小在某些尺寸下不起作用

我有一个720x1280的mp4视频,我希望它具有不同的尺寸,例如:0.66%,0.5%和0.33%。

对于每种尺寸,我使用:

clip = mp.VideoFileClip(file)
clip_resized1 = clip.resize(height=int(clip.h * float(0.66666))) 
clip_resized1.write_videofile(name + '-2x' + ext)
Run Code Online (Sandbox Code Playgroud)

我为每种尺寸进行此操作,但是其中一些有效,有些则无效。0.66无效,就像0.33一样。0.5%的效果很好。

它会为每种大小创建文件,但是它们已损坏,并且无法打开它们(如我所说的0.5除外,可以正常工作)。

有什么线索吗?有任何更好的Python尺寸调整解决方案吗?

python moviepy

5
推荐指数
1
解决办法
458
查看次数

moviepy 创建的视频无法在网络上播放

我正在玩 moviepy,目的是创建视频以嵌入网页中。但是,我无法让我创建的视频在 chrome 和 firefox 中实际播放(它可以在 safari :/ 中播放)。\nFirefox 声称“文件已损坏”。

\n\n

我发现我很可能没有正确安装某些东西。我关注了(除其他外,因为我还没有被授权发布足够的链接来充分描述我的情况,#thanksStackOverflow ;P)http://wiki.webmproject.org/ffmpeg/building-with-libvpx,但根据[如果允许的话我会分享的链接:P]这些东西都是“在MoviePy \ xe2 \ x80 \ x99s安装期间自动安装的”,所以我不确定我是如何把它搞砸的。

\n\n

查看示例代码(我已经用“python”、“python3”和“python3.5”尝试过):

\n\n
from moviepy.editor import *\n\nfilepath = "../read_videos/MOVI0011.avi"\nfile = VideoFileClip(filepath)\n\nclips = []\nclips.append(file.subclip(10, 12))\nclips.append(file.subclip(20, 22))\nclips.append(file.subclip(30, 32))\nclips.append(file.subclip(40, 42))\n\nconcatenated_clip = concatenate_videoclips(clips)\n\nconcatenated_clip.write_videofile("../write_videos/clip.mp4", fps=24, codec=\'mpeg4\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

火狐错误

\n\n

OSX El Capitan (10.11.3)

\n

python macos ffmpeg moviepy

5
推荐指数
1
解决办法
978
查看次数

如何在MoviePy中向fl_image添加参数?

据我了解, fl_image 接受一个管道函数,该函数应该只接受单个图像,即processedClip = input_file.fl_image(imagePipeline)

在哪里

def imagePipeline(img):

....

返回最终图像

但是如果我们的 imagePipeline 函数接受更多参数怎么办

IE

def imagePipeline(img, arg1, arg2, arg3):

...

返回最终图像

我们如何向 fl_image 中的 imagePipeline 添加参数?

python moviepy

5
推荐指数
1
解决办法
1824
查看次数

为什么我在 python moviepy 中使用 CompositeAudioClip 时没有声音?

这是Python脚本。

\n\n
from moviepy.editor import *\nvideoclip = VideoFileClip("1_0_1522314608.m4v")\naudioclip = AudioFileClip("jam_1_Mix.mp3")\n\nnew_audioclip = CompositeAudioClip([videoclip.audio, audioclip])\nvideoclip.audio = new_audioclip\nvideoclip.write_videofile("new_filename.mp4")\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后返回

\n\n
\n

[MoviePy] >>>> 构建视频 new_filename.mp4 [MoviePy] 在 new_filenameTEMP_MPY_wvf_snd.mp3\n 中写入音频\n 100%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96 \x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2 \x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96 \x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 795/795 [00:01<00:00,\n 466.23it/s] [MoviePy] 完成。[MoviePy] 写入视频 new_filename.mp4 100%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\ x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\ x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\ xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\ x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88| 1072/1072 [01:26<00:00,\n 10.31it/s] [MoviePy] 完成。[MoviePy] >>>> 视频准备好:new_filename.mp4

\n
\n\n

1_0_1522314608.m4v 和 jam_1_Mix.mp3 它们都有声音。

\n\n

但新文件new_filename.mp4没有声音。

\n\n

我做错什么了吗?请帮忙。谢谢。

\n

python audio video moviepy

5
推荐指数
1
解决办法
1834
查看次数

如何将Moviepy调整为全屏大小?

我正在使用pygame制作游戏,我想为其添加剪切场景。pygame电影模块不再起作用,所以我不得不诉诸于moviepy。从我所看到的内容来看,Moviepy的记录不充分,因此我很难弄清楚。我使用此代码块使它正常工作,但现在我需要全屏显示(所需的窗口屏幕为640x400)。那我该怎么做呢?先感谢您。

from moviepy.editor import *
from pygame import *# Window display
WIN_WIDTH = 640
WIN_HEIGHT = 400
HALF_WIDTH = int(WIN_WIDTH / 2)
HALF_HEIGHT = int(WIN_HEIGHT / 2)
DISPLAY = (WIN_WIDTH, WIN_HEIGHT)
DEPTH = 32
FLAGS = FULLSCREEN

#display.set_mode(DISPLAY, FLAGS, DEPTH)  #define screen values
display.set_caption("I'm Working!")
Credits = 'Untitled.mp4'
def playVid(video):
    clip = VideoFileClip(video)
    clip.resize(DISPLAY).preview()
    return


playVid(Credits)
Run Code Online (Sandbox Code Playgroud)

python pygame python-3.x moviepy

5
推荐指数
1
解决办法
475
查看次数

Moviepy - 使用 CSV 文件中的时间创建多个子剪辑

我正在创建一个使用 MoviePy 模块的 Python 脚本,从较大的视频中获取剪辑并将它们连接在一起。

剪辑的时间在 CSV 文件中详细说明,如下所示;

0,10

11,19

15,20

34,42等

我所做的是逐行读取 CSV 文件,然后使用 Moviepy 中的 subclip 方法创建一个存储在剪辑列表中的剪辑,但是我得到一个 IndexError - 列表索引超出范围。

可能是什么问题(如果我不使用 subclip 方法和 CSV 文件中的值,代码可以正常工作)?

这是我的代码:

video= VideoFileClip('file')

clipsArray = [] 

import csv
with open('csv file', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        startTime = row[0]
        endTime = row[1]
        clip = fullVideo.subclip(startTime, endTime)
        clipsArray.append(clip)
Run Code Online (Sandbox Code Playgroud)

错误信息是:

文件“C:\Anaconda3\envs\py35\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 685 行,在运行文件 execfile(文件名,命名空间)中

文件“C:\Anaconda3\envs\py35\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py”,第 85 行,在 execfile exec(compile(open(filename, 'rb').read(),文件名、'exec')、命名空间)

File "C:/spyder2-py3/program.py", line 32, in Clip = fullVideo.subclip(start, end) # …

python video-processing moviepy

4
推荐指数
1
解决办法
3577
查看次数

将 Mp3 添加到 VideoFileClip MoviePy 时没有音频

我正在尝试将一个 mp3 音频文件添加到我使用 MoviePy 用图像创建的视频剪辑中。当脚本运行时,它会创建 mp4 文件并成功播放,但是没有音频。我不太确定为什么,并且似乎无法找到大量关于此的一般文档。MoviePy 对我来说很新,所以任何帮助将不胜感激 - 谢谢!

def make_video(images):
    image_clips = []
    for img in images:
        if not os.path.exists(img):
            raise FileNotFoundError(img)
        ic = ImageClip(img).set_duration(3)
        image_clips.append(ic)

    video = concatenate(image_clips, method="compose")
    video.set_audio(AudioFileClip("audio.mp3")) 
    video.write_videofile("mp4_with_audio.mp4", fps=60, codec="mpeg4")
Run Code Online (Sandbox Code Playgroud)

python audio opencv moviepy

4
推荐指数
3
解决办法
4824
查看次数

AttributeError: 'module' 对象没有属性 'audio_fadein'

我使用 cx_freeze 将 python 项目构建到一个带有 .exe 及其依赖项的文件夹中,但是当我运行 .exe 时出现错误:

AttributeError: module 'moviepy.audio.fx.all' has no attribute 'audio_fadein'
Run Code Online (Sandbox Code Playgroud)

属性错误

我已阅读 MoviePy 的文档,但无法找出发生这种情况的原因。我的 Python 程序在 IDE (PyCharm) 中完美运行,但在编译后,我收到 MoviePy 错误。我使用了推荐的from moviepy.editor import *

我实际上并没有audio_fadein直接在我的脚本中使用 ,所以当我显示我的视频时它必须被 MoviePy 调用。这是代码:

def cherrybyte():
    pygame.display.set_caption('©2017 CherryByte™ Software')
    pygame.mouse.set_visible(False)
    logo = VideoFileClip('CherryByte Logo.mp4')
    logo.preview()
    pygame.mouse.set_visible(True)
Run Code Online (Sandbox Code Playgroud)

编辑:我现在也尝试将导入语句更改为from moviepy.editor import VideoFileClip但完全相同的错误。

python cx-freeze moviepy

4
推荐指数
2
解决办法
2581
查看次数

在python中裁剪视频

我想创建一个可以在特定帧中裁剪视频并将其保存在我的磁盘上的函数(OpenCV、moviepy 或类似的东西)

我使用参数指定我的函数作为框架的尺寸以及源和目标名称(位置)

def vid_crop(src,dest,l,t,r,b):
  # something
  # goes
  # here

left = 1    #any number (pixels)
top = 2     # ''''
right = 3   # ''''
bottom = 4  # ''''

vid_crop('myvideo.mp4','myvideo_edit.mp4',left,top,right,bottom)
Run Code Online (Sandbox Code Playgroud)

任何建议和想法都非常有帮助

python opencv video-capture video-processing moviepy

4
推荐指数
1
解决办法
6306
查看次数