Вырезаем часть видео - питон
У меня есть видео длиной примерно 25 минут каждое, и я хотел бы сократить несколько секунд с самого начала, используя Python.
В поисках этого я наткнулся на пакет moviepy для python. Проблема в том, что это занимает много времени даже для одного видео. Ниже приведен фрагмент кода, который я использую для вырезания 7 секунд с начала одного видео. Процесс записи занимает много времени. Есть ли лучший способ вырезать видео с помощью Python?
from moviepy.editor import *
clip = VideoFileClip("video1.mp4").cutout(0, 7)
clip.write_videofile("test.mp4")
Пожалуйста, дайте мне знать, если я пропустил какие-либо детали.
Любая помощь приветствуется. Спасибо!
4 ответа
Попробуйте это и скажите нам, если это быстрее (если это возможно, он будет извлекать видео напрямую с помощью ffmpeg, без декодирования и перекодирования):
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", start_time, end_time, targetname="test.mp4")
Если это не поможет, взгляните на код
Если вы новичок в moviepy, вы должны выполнить следующие действия.
Установка (в вашем 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")
The
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")
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", t1, t2, targetname="test.mp4")
t1 и t2 в этом коде представляют время начала и время окончания обрезки. Видео до t1 и после t2 будет опущено.