问题描述
from moviepy.editor import *
clip = ( VideoFileClip("https://filelink/file.mp4"))
clip.save_frame("frame.png",t = 3)
我可以使用 moviepy 加载视频,但它会加载完整的视频,然后保存帧。是否可以不加载完整的视频而只加载前四秒,然后在 3 秒时保存帧。
解决方法
除非我错过了什么,否则不可能使用 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()
)
注意事项:
- 该解决方案可能不适用于所有 mp4 URL 文件,因为 mp4 格式不是那么“WEB 友好” - 我认为 moov atom 必须位于文件的开头。
- 您可能需要手动安装 FFmpeg 命令行工具(但它应该与 MoviePy 一起安装)。