Загрузите видео с URL-адреса в moviepy и сохраните кадр

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

Рамка результатов:
введите описание изображения здесь