【FFmpeg 教程 一】截图

本章使用 ffmpeg 实现观影中经常会用到的功能,截图。

以下给出两种方式。

复制代码
课程需具备的基础能力:Python 

1. 使用 subprocess 调用 FFmpeg 命令

python 复制代码
import subprocess
def extract_frame(video_path, output_image_path, timestamp="00:00:05")
	"""
	从视频中截取指定时间点的帧作为图片
	:param video_path: 输入视频文件路径
	:param output_image_path: 输出图片文件路径
	:param timestamp: 截取时间点,格式为 'HH:MM:SS', 默认为 00:00:05
	"""
	try:
		# 调用 ffmpeg 命令
		command = [
			'ffmpeg',
			"-i", video_path,		# 输入视频文件
			"-ss", timestamp,		# 截取的时间点
			"-vframes", "1",		# 截取一帧
			output_image_path,		# 输出图片文件路径
			"-y"
		]
		suprocess.run(command, check=True)
		print(f"成功截取帧: {output_image_path}")
	except subprocess.CalledProcessError as e:
		print(f"错误:{e}")

// 使用
video_file = "example.mp4"
output_image = "screenshot.jpg"
timestamp = "00:01:00" # 截取 1 分钟时的帧
extract_frame(video_file, output_image, timestamp)

2. 使用 ffmpeg-python

示例代码:

python 复制代码
import ffmpeg

def extract_frame_ffmpeg(video_path, output_image_path, timestamp=5.0):
    """
    使用 ffmpeg-python 从视频中截取指定时间点的帧并保存为图片。
    
    :param video_path: 输入视频文件路径
    :param output_image_path: 输出图片文件路径
    :param timestamp: 截取的时间点,单位秒
    """
    try:
        # 使用 ffmpeg-python 提取帧
        ffmpeg.input(video_path, ss=timestamp).output(output_image_path, vframes=1).run(overwrite_output=True)
        print(f"成功截取帧并保存到 {output_image_path}")
    except ffmpeg.Error as e:
        print(f"错误: {e.stderr.decode()}")

# 使用示例
video_file = "example.mp4"
output_image = "screenshot2.jpg"
timestamp = 60.0  # 截取 60 秒时的帧
extract_frame_ffmpeg(video_file, output_image, timestamp)

解释

  1. ffmpeg.input(video_path, ss=timestamp)

    • input() 函数用来指定输入视频路径。
    • ss 参数指定截取的时间戳,可以是秒数(例如 60.0)或者 HH:MM:SS 格式。
  2. output(output_image_path, vframes=1)

    • output() 用于指定输出文件路径。
    • vframes=1 表示我们只提取视频中的一帧。
  3. run(overwrite_output=True)

    • run() 执行 FFmpeg 命令,overwrite_output=True 表示如果目标文件已存在,会被覆盖。
相关推荐
邪恶的贝利亚1 天前
《ffplay 读线程与解码线程分析:从初始化到 seek 操作,对比视频与音频解码的差异》
ffmpeg·php·音视频
路溪非溪2 天前
关于ffmpeg的简介和使用总结
ffmpeg
gushansanren2 天前
基于WSL用MSVC编译ffmpeg7.1
windows·ffmpeg
追随远方4 天前
Android平台FFmpeg音视频开发深度指南
android·ffmpeg·音视频
charlie1145141915 天前
编译日志:关于编译opencv带有ffmpeg视频解码支持的若干办法
opencv·ffmpeg·音视频·imx6ull·移植教程
追随远方6 天前
Android平台FFmpeg视频解码全流程指南
android·ffmpeg·音视频
urhero7 天前
Python+ffmpeg 实现给视频添加字幕
ffmpeg·音视频·python编程·视频编辑·实用视频工具·添加字幕
追随远方7 天前
Android NDK版本迭代与FFmpeg交叉编译完全指南
android·ffmpeg
带鱼工作室7 天前
ffmpeg多媒体(音视频)处理常用命令
ffmpeg·音视频
批量小王子7 天前
2025-05-07-FFmpeg视频裁剪(尺寸调整,画面比例不变)
ffmpeg·音视频