FFMPEG视频转图片

用FFMPEG视频转图片,并且for循环

import os
import subprocess# 输入文件夹和输出文件夹路径
input_folder = r"I:\xxx"
output_base_folder = r"D:\xxx\YOLO\data\video"
output_subfolder_name = "20240609"# 创建输出子文件夹
output_folder = os.path.join(output_base_folder, output_subfolder_name)
os.makedirs(output_folder, exist_ok=True)# 循环处理输入文件夹中的所有视频文件
for file_name in os.listdir(input_folder):# 检查是否是视频文件(扩展名可根据需要增加)if file_name.lower().endswith(('.mp4', '.mov', '.avi', '.mkv')):input_path = os.path.join(input_folder, file_name)output_name = os.path.splitext(file_name)[0]  # 去掉扩展名output_path_pattern = os.path.join(output_folder, f"{output_name}_frame_%04d.jpg")# 构建 FFmpeg 命令ffmpeg_command = ["ffmpeg","-i", input_path,            # 输入视频路径"-vf", "fps=5",              # 每秒提取 5 帧"-q:v", "2",                 # 高质量图片output_path_pattern          # 输出图片路径模式]# 打印当前正在处理的文件print(f"Processing video: {input_path} -> {output_folder}")# 执行 FFmpeg 命令subprocess.run(ffmpeg_command, check=True)print("视频处理完成!图片已保存到:", output_folder)

改进以后的代码

import os
import subprocess# 输入文件夹和输出文件夹路径
input_folder = r"H:\\xxxx"
output_base_folder = r"D:\\xxx"
output_subfolder_name = os.path.split(os.path.dirname(input_folder))[1]# 创建输出子文件夹
output_folder = os.path.join(output_base_folder, output_subfolder_name)
os.makedirs(output_folder, exist_ok=True)# 记录成功和失败的文件
processed_videos = []
skipped_videos = []# 循环处理输入文件夹中的所有视频文件
for file_name in os.listdir(input_folder):# 检查是否是视频文件(扩展名可根据需要增加)if file_name.lower().endswith(('.mp4')):input_path = os.path.join(input_folder, file_name)output_name = os.path.splitext(file_name)[0]  # 去掉扩展名output_path_pattern = os.path.join(output_folder, f"{output_name}_frame_%04d.jpg")# 构建 FFmpeg 命令ffmpeg_command = ["ffmpeg","-i", input_path,            # 输入视频路径"-vf", "fps=1",              # 每秒提取 1 帧"-q:v", "2",                 # 高质量图片output_path_pattern          # 输出图片路径模式]try:print(f"Processing video: {input_path} -> {output_folder}")subprocess.run(ffmpeg_command, check=True)processed_videos.append(file_name)except subprocess.CalledProcessError as e:print(f"Error processing {input_path}: {e}")skipped_videos.append(file_name)# 保存处理结果到文件
with open(os.path.join(output_folder, "processed_videos.txt"), "w") as processed_file:processed_file.write("\n".join(processed_videos))with open(os.path.join(output_folder, "skipped_videos.txt"), "w") as skipped_file:skipped_file.write("\n".join(skipped_videos))print("处理完成!")
print(f"成功处理的视频列表已保存到: {os.path.join(output_folder, 'processed_videos.txt')}")
print(f"跳过的视频列表已保存到: {os.path.join(output_folder, 'skipped_videos.txt')}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟桌面操作系统添加WPS字体

【使用场景】 银河麒麟桌面操作系统支持添加WPS字体。在银河麒麟桌面操作系统中使用WPS软件编辑文档时存在需要添加WPS字体的情况,例如字体缺失或者需要特殊字体时,需要添加WPS字体。 【操作方法】 步骤一:在互联网上搜索并下载.ttf格式的字体文件。 步骤二:下载完成后,在…

skywalking 搭建 备忘录

基础环境 apache-skywalking-apm-9.6.0.tar.gz apache-skywalking-java-agent-9.1.0.tgz elasticsearch 7.14.1 采用dockers搭建 或者手动部署 kibana 可视化 应用 微服务版 consumer.jar eureka.jar 注册中心 provider.jar skywalking 地址 https://skywalkin…

CAN配置---波特率中断引脚等---autochips-AC7811-ARM-M3内核

1、配置工具 虽然不怎么好用,但比没有强多了。具体看图: 时钟选着 NVIC配置 GPIO配置 2、生成的具体配置信息 NXP的配置工具里面,具体的波特率可以直接显示,这个工具没有,怎么办? 它放到了生成的代码里面…

【ETCD】ETCD 架构揭秘:内部各组件概览

ETCD 的主要组件及它们之间的关联关系如下: 目录 1. Client(客户端)2. gRPC 接口3. Etcd Server Main Loop(ETCD 主循环)4. Raft(共识模块)5. Peer Etcd Nodes(ETCD 集群节点&#x…

使用 imageio 库轻松处理图像与视频

使用 imageio 库轻松处理图像与视频 imageio 是一个 Python 库,用于读取和写入多种图像和视频格式。它功能强大、易于使用,广泛应用于图像处理、视频编辑和数据可视化等领域。本篇文章将介绍 imageio 的基础功能、常见用法以及高级操作。 一、安装 imag…

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔,分布着大量各种油井,油井开采设备的连续稳定运行是保证石油开采的首要条件。然而,由于油田多位于特殊地理环境中,因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制,传统通信系统的建设…

windows 使用python共享网络给另外一个网卡

# -*- coding: utf-8 -*- import subprocessdef open_share(to_shared_adapter, from_shared_adapter):"""打开以太网的网络共享:return: None"""powershell_script f"""# Register the HNetCfg library (once)# regsvr32 hnetc…

DAOBase 推出 DAO POP:赋能创作者与社区,畅享链上未来

随着时代快速发展,链上生态也在飞速扩张。DAOBase 致力于为社区、创作者和品牌提供赋能,帮助他们充分挖掘去中心化技术的潜力。今天,我们很高兴为大家带来 DAO POP —— 一款彻底改变玩法的功能,让社区代币的发行和管理变得前所未…

用vscode,进行vue开发

使用Visual Studio Code(VSCode)进行Vue.js开发是一个很好的选择,因为VSCode提供了强大的编辑功能以及丰富的插件生态。以下是使用VSCode进行Vue开发的基本步骤: 1. 安装Node.js和npm 首先,确保你的计算机上安装了No…

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象

java-使用druid sqlparser将SQL DDL脚本转化为自定义的java对象 一、引言二、环境三、待解析的DDL四、解析后的对象结构五、完整的UT类六、控制台输出总结 一、引言 在日常开发中,有些需要对SQL进行解析的场景,比如读取表结构信息,生成文档、…

深度学习实战智能交通计数

本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对车辆目标数据集进行训练和优化,该数据集包含丰富的车辆目标图像样本…

rebase ‘A‘ onto ‘master‘ 和 merge ‘master‘ into ‘A‘有什么区别

在Git版本控制系统中,rebase 和 merge 是两种不同的操作,用于合并分支。rebase A onto master 和 merge master into A 虽然最终目的都是将两个分支的更改合并在一起,但它们在处理方式和结果上有所不同。 rebase ‘A’ onto ‘master’ 含义…

前端的Python应用指南(一):快速构建 Web 服务器 - Flask vs Node.js 对比

随着前端开发技术的不断发展,前端开发者的技术栈也在不断扩展。如今,前端开发者不仅要掌握 HTML、CSS、JavaScript,还要掌握后端技术,成为全栈开发者。而在后端技术的选择上,Python 和 Node.js 是两种非常流行的选择。…

MySQL Explain 分析SQL语句性能

一、EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 (1) 通过EXPLAIN,我们可以分析出以下结果: 表的读取顺序数据读取…

QT:vlc出错处理及重新播放

这个问题一直想解决,昨天认真研究了一下。 要点 视频用的Widget不能重复使用,每次出错后,都要新建。 回调函数的处理。 代码1 关键在于libvlc_event_attach void VideoWidget::play() {libvlc_media_t* media;if (strstr(video_path, &…

力扣hot100——滑动窗口

3. 无重复字符的最长子串 class Solution { public:int lengthOfLongestSubstring(string str) {int ans 0;for (int i 0; i < str.size(); i) {set<int> s;for (int j i; j < str.size(); j) {if (s.find(str[j]) ! s.end()) break;s.insert(str[j]);}ans ma…

C++中的深拷贝和浅拷贝

浅拷贝 浅拷贝&#xff1a;就是简单的赋值操作。 浅拷贝问题&#xff1a;如果有指针指向堆区内存时&#xff0c;不同对象的指针成员指向同一块堆区内存&#xff0c;当对象释放时&#xff0c;该堆区内存会被释放两次。当一个对象修改堆区内存是&#xff0c;另一个对象也随之变…

关于SAP Router连接不稳定的改良

这个也是网上看来的&#xff0c;之前在用的时候也在想是不是建立一个长连接&#xff0c;就不至于断线。今天正好看到。 关于SAP Router连接不稳定的改良 我们在使用SAPRouter时经常会碰到断线&#xff0c;其发生原因有很多&#xff0c;如&#xff1a;网络不稳定、操作间隔时间…

写给Pythoner的前端进阶指南(一):前言-深入学习前端后会有哪些新的机遇

其实很早以前就有学过python做一点小东西&#xff0c;但那时候用matlab更多点&#xff1b;后面也有写一些脚本&#xff0c;但用的比较浅&#xff0c;没有尝试做一些比较大的项目&#xff0c;因为当时没能够找到一整套作出比较炫酷的作品的方法。反而&#xff0c;我在学js的入门…

游泳溺水识别数据集,对9984张原始图片进行YOLO,COCO JSON, VOC XML 格式的标注,平均识别率在91.7%以上

游泳溺水识别数据集&#xff1a; 对9984张原始图片进行YOLO&#xff0c;COCO JSON, VOC XML 格式的标注&#xff0c;平均识别率在91.7&#xff05;以上 &#xff0c;可识别泳池或者水库中是否有人溺水。 数据集分割 训练组98&#xff05; 9818图片 有效集&#xff05;…