Skip to main content
Glama

extract_frames_from_video

Extract frames from a video at specified intervals or total count, saving them in PNG, JPG, or WebP formats. Ideal for creating still images, thumbnails, or analyzing video content.

Instructions

提取视频中的图像。

参数:
video_path(str) - 视频路径。
fps(int) - 每多少秒抽一帧,如果传0,代表全部都抽,传1,代表每一秒抽1帧。
output_folder(str) - 把图片输出到哪个目录
format(int) - 抽取的图片格式,0:代表png 1:jpg 2:webp
total_frames(int) - 最多抽取多少张,0代表不限制

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
formatNo
fpsNo
output_folderNo
total_framesNo
video_pathYes

Implementation Reference

  • MCP tool handler for 'extract_frames_from_video' decorated with @mcp.tool(). Includes input parameters schema in docstring and delegates to helper function in cut_video.py.
    @mcp.tool()   
    def extract_frames_from_video(video_path,fps=0, output_folder=None, format=0, total_frames=0):
        """
        提取视频中的图像。
    
        参数:
        video_path(str) - 视频路径。
        fps(int) - 每多少秒抽一帧,如果传0,代表全部都抽,传1,代表每一秒抽1帧。
        output_folder(str) - 把图片输出到哪个目录
        format(int) - 抽取的图片格式,0:代表png 1:jpg 2:webp
        total_frames(int) - 最多抽取多少张,0代表不限制
        """ 
        return cut_video.extract_frames_from_video(video_path, fps, output_folder, format, total_frames)
  • Core implementation of frame extraction using FFmpeg, handling parameters to construct the command for extracting frames at specified fps, format, and total_frames limit.
    def extract_frames_from_video(video_path,fps=0, output_folder=None, format=0, total_frames=0):
        """
        使用 FFmpeg 提取视频中的每一帧图像。
    
        :param video_path: 视频文件的路径。
        :param fps: 每多少秒抽一帧,如果传0,代表每一帧都抽
        :param output_folder: 输出图像的文件夹路径。
        :param format: 输出图像的图片格式 0:png 1:jpg 2:webp。
        """
        # 确保输出文件夹存在
        if output_folder == None:
              output_folder = os.path.dirname(video_path)
        if not os.path.exists(output_folder):
            os.makedirs(output_folder)
        img_ext = "png"
        if (format == 0):
            img_ext = "png"
        elif (format == 1):
            img_ext = "jpg"
        else:
            img_ext = "webp"
        output_path = os.path.join(output_folder, f'frame_%04d.{img_ext}')
        try:
            cmd = f" -i {video_path}"
            # 执行 FFmpeg 命令
            if fps > 0:
                cmd = f" {cmd} -vf 'fps=1/{fps}'"
            else:
                cmd = f" {cmd} -vsync 0"
            if (total_frames > 0):
                cmd = f" {cmd} -vframes {total_frames} "
            cmd = f" {cmd} -y {output_path}"
            status_code, log = ffmpeg.run_ffmpeg(cmd, timeout=1000)
            print(log)
            return {status_code, log, output_path}
        except Exception as e:
            print(f"抽取失败: {str(e)}")
            return {-1, str(e), ""}
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/video-creator/ffmpeg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server