剪掉一部分视频 - python

Cutting out a portion of video - python

我有每个视频的长度大约为 25 分钟,我希望使用 python 从开头剪掉几秒钟。

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

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

如果我遗漏了任何细节,请告诉我。

感谢任何帮助。谢谢!

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

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

如果这没有帮助,请查看 code

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

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

如果您是 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")

对于某些视频,ffmpeg_extract_subclip 没有为我生成正确的结果。 link 中的以下代码虽然有效。

# 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")