#python #python-3.x #asynchronous #moviepy
Вопрос:
from moviepy.editor import *
clip = ( VideoFileClip("https://filelink/file.mp4"))
clip.save_frame("frame.png", t = 3)
Я могу загружать видео с помощью moviepy, но он загружает полное видео, а затем сохраняет кадр. Можно ли загрузить не полное видео, а только первые четыре секунды, а затем сохранить кадр через 3 секунды?
Комментарии:
1. Почему вы публикуете
"https://filelink/file.mp4"
? Вы не смогли найти правильный URL-адрес?
Ответ №1:
Если я что-то не пропустил, это невозможно с помощью MoviePy.
Вместо этого вы можете использовать ffmpeg-python.
Вот пример кода с использованием ffmpeg-python:
import ffmpeg
stream_url = "https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4"
# Input seeking example: https://trac.ffmpeg.org/wiki/Seeking
(
ffmpeg
.input(stream_url, ss='00:00:03') # Seek to third second
.output("frame.png", pix_fmt='rgb24', frames='1') # Select PNG codec in RGB color space and one frame.
.overwrite_output()
.run()
)
Примечания:
- Решение может не работать для всех URL — файлов mp4, потому что формат mp4 не настолько «веб-дружественный» — я думаю, что атом moov должен быть расположен в начале файла.
- Возможно, вам потребуется вручную установить инструмент командной строки FFmpeg (но он должен быть установлен с MoviePy).