63

我有每个长度约为 25 分钟的视频,我希望从一开始就使用 python 剪辑几秒钟。

搜索它,我偶然发现了 python 的 moviepy 包。问题是,即使是单个视频也需要大量时间。以下是我用来从单个视频开始截取 7 秒的代码片段。写入过程消耗大量时间。有没有更好的方法来使用 python 剪切视频?

from moviepy.editor import *
clip = VideoFileClip("video1.mp4").cutout(0, 7)
clip.write_videofile("test.mp4")

如果我错过了任何细节,请告诉我。

任何帮助表示赞赏。谢谢!

4

4 回答 4

108

试试这个,告诉我们它是否更快(如果可以,它将直接使用 ffmpeg 提取视频,无需解码和重新编码):

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", start_time, end_time, targetname="test.mp4")

如果这没有帮助,请查看代码

于 2016-05-19T12:41:28.033 回答
11

如果您不熟悉moviepy,则应按照以下步骤操作。

安装 :

pip install --trusted-host pypi.python.org moviepy
pip install imageio-ffmpeg

旧系统的安装(在您的 virtualenv 中)版本:

pip install --trusted-host pypi.python.org moviepy
python
import imageio
imageio.plugins.ffmpeg.download()

在这些命令之后,您有最低的软件要求。

用法

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
# ffmpeg_extract_subclip("full.mp4", start_seconds, end_seconds, targetname="cut.mp4")
ffmpeg_extract_subclip("full.mp4", 60, 300, targetname="cut.mp4")
于 2019-01-22T23:27:51.557 回答
4
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", t1, t2, targetname="test.mp4")

这段代码中的 t1 和 t2 代表修整的开始时间和结束时间。t1 之前和 t2 之后的视频将被省略。

于 2018-04-06T16:14:53.317 回答
2

对于ffmpeg_extract_subclip某些视频,我没有产生正确的结果。此链接中的以下代码虽然有效。

# Import everything needed to edit video clips
from moviepy.editor import *

# loading video gfg
clip = VideoFileClip("geeks.mp4")
# getting only first 5 seconds
clip = clip.subclip(0, 5)
# showing clip
clip.ipython_display(width = 360)

然后您可以按如下方式保存剪辑:

clip.write_videofile("clip.mp4")
于 2021-12-11T19:37:18.687 回答