【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 表示如果目标文件已存在,会被覆盖。
相关推荐
都在酒里15 小时前
【极致低延时】香橙派部署 MediaMTX 实现 WebRTC 推流,延时仅 500-800ms,比局域网 ffmpeg 拉流快近 10 倍!(附踩坑全记录)
linux·arm开发·ffmpeg·webrtc·orangepi·嵌入式软件
Empty-Filled16 小时前
用 Kap + FFmpeg 把录屏转成小体积 GIF:产品操作演示图制作实践
ffmpeg·kap
矜辰所致1 天前
嵌入式语音开发应用基础说明
ffmpeg·ai 语音·嵌入式语音·语音播放·语音采样
luoyayun3612 天前
Qt + FFmpeg 实战:音频静音段检测
qt·ffmpeg·音视频·静音段检测
小鹿研究点东西3 天前
直播带货长视频AI自动剪辑开播:一场直播如何反复利用?
ffmpeg·自动化·音视频·语音识别
luoyayun3614 天前
Qt + FFmpeg 实战:获取音视频文件基础属性、流信息和元数据
qt·ffmpeg·音视频·元数据·获取音视频文件属性
Rudon滨海渔村4 天前
ffmpeg裁剪视频黑屏、不准时等处理方式 - ffmpeg基本操作
ffmpeg·音视频
The Sheep 20234 天前
ffmpeg速成
ffmpeg
街灯L4 天前
【Ubuntu】使用ffmpeg解析m3u8网页视频
ubuntu·ffmpeg·音视频
烟雨江南7855 天前
特高压输电线路带电作业直升机吊篮与强电磁感应放电:基于“灵声智库”空间自适应滤波与声纹授权的离线语音控制指令方案
人工智能·ffmpeg·webrtc·语音识别·ai质检