当前位置: 首页 > wzjs >正文

完全网络营销网站wordpress误修改

完全网络营销网站,wordpress误修改,网站建设公司推荐乐云seo,永康高端网站设计以下代码主要用于从 ./*.mp4 的文件夹中,每个视频中抽取第N帧保存成图,用于图生视频训练,考虑到数据量比较大,推荐使用ffmpeg来实现的,性能可以比较高(10w个视频差不多十多分钟就可以跑完)&…

以下代码主要用于从 ./*.mp4 的文件夹中,每个视频中抽取第N帧保存成图,用于图生视频训练,考虑到数据量比较大,推荐使用ffmpeg来实现的,性能可以比较高(10w个视频差不多十多分钟就可以跑完),以下:

import os
import subprocess
import time
from multiprocessing import Pool, cpu_count
from tqdm import tqdm
import psutil
import logging
from datetime import datetime# 配置日志
def setup_logging():log_dir = "logs"if not os.path.exists(log_dir):os.makedirs(log_dir)log_file = os.path.join(log_dir, f"video_process_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log")logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s',handlers=[logging.FileHandler(log_file),logging.StreamHandler()])# 检查系统资源
def check_system_resources():cpu_percent = psutil.cpu_percent()memory_percent = psutil.virtual_memory().percentdisk = psutil.disk_usage('/')disk_percent = disk.percentreturn {'cpu': cpu_percent,'memory': memory_percent,'disk': disk_percent,'ok': cpu_percent < 90 and memory_percent < 90 and disk_percent < 90}def extract_frame_ffmpeg(video_path, output_path, frame_number=10):"""从视频中提取指定帧"""try:video_filename = os.path.splitext(os.path.basename(video_path))[0]output_filename = f"{video_filename}.jpg"output_filepath = os.path.join(output_path, output_filename)# 检查输出文件是否已存在if os.path.exists(output_filepath):logging.info(f"文件已存在,跳过处理: {output_filepath}")return True, video_pathcmd = ['ffmpeg','-i', video_path,'-vf', f'select=eq(n\,{frame_number-1})','-vframes', '1','-q:v', '2',  # 最高质量'-y',output_filepath]process = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)stdout, stderr = process.communicate(timeout=30)if process.returncode == 0:return True, video_pathelse:return False, f"Error processing {video_path}: {stderr}"except subprocess.TimeoutExpired:process.kill()return False, f"Timeout processing {video_path}"except Exception as e:return False, f"Exception processing {video_path}: {str(e)}"def process_video_worker(args):"""工作进程的处理函数"""video_path, output_dir = argsreturn extract_frame_ffmpeg(video_path, output_dir)def process_videos_parallel(input_dir, output_dir, num_processes=None, batch_size=100):"""并行处理视频文件"""# 创建输出目录if not os.path.exists(output_dir):os.makedirs(output_dir)# 检查系统资源resources = check_system_resources()if not resources['ok']:logging.warning(f"系统资源使用率较高: CPU {resources['cpu']}%, "f"内存 {resources['memory']}%, 磁盘 {resources['disk']}%")# 设置进程数if num_processes is None:num_processes = min(cpu_count(), 8)  # 最多使用8个进程# 获取所有视频文件video_files = [f for f in os.listdir(input_dir) if f.endswith('.mp4')]total_videos = len(video_files)if total_videos == 0:logging.warning(f"在 {input_dir} 中没有找到MP4文件")return# 准备任务列表tasks = [(os.path.join(input_dir, video), output_dir) for video in video_files]# 处理统计successful = 0failed = 0failed_videos = []# 分批处理for i in range(0, len(tasks), batch_size):batch = tasks[i:i + batch_size]logging.info(f"处理批次 {i//batch_size + 1}/{(len(tasks)-1)//batch_size + 1}, "f"包含 {len(batch)} 个视频")with Pool(processes=num_processes) as pool:# 使用tqdm创建进度条for success, message in tqdm(pool.imap_unordered(process_video_worker, batch),total=len(batch),desc="处理进度"):if success:successful += 1else:failed += 1failed_videos.append(message)logging.error(message)# 每批处理完后检查系统资源resources = check_system_resources()if not resources['ok']:logging.warning(f"系统资源使用率较高: CPU {resources['cpu']}%, "f"内存 {resources['memory']}%, 磁盘 {resources['disk']}%")time.sleep(5)  # 给系统一些恢复时间# 输出最终统计信息logging.info("\n处理完成统计:")logging.info(f"总计视频: {total_videos}")logging.info(f"成功处理: {successful}")logging.info(f"处理失败: {failed}")if failed > 0:logging.info("\n失败的视频:")for msg in failed_videos:logging.info(msg)def main():# 设置日志setup_logging()# 配置参数input_directory = "./videos"    # 输入视频目录output_directory = "./frames"   # 输出图片目录num_processes = 4              # 进程数batch_size = 50               # 每批处理的视频数量# 记录开始时间start_time = time.time()try:# 处理视频process_videos_parallel(input_directory,output_directory,num_processes=num_processes,batch_size=batch_size)# 计算总耗时elapsed_time = time.time() - start_timelogging.info(f"\n总耗时: {elapsed_time:.2f} 秒")except KeyboardInterrupt:logging.warning("\n用户中断处理")except Exception as e:logging.error(f"处理过程中发生错误: {str(e)}")if __name__ == '__main__':main()

文章转载自:

http://DnVHQgRV.sxcwc.cn
http://JuqKJajX.sxcwc.cn
http://YF5VjNV0.sxcwc.cn
http://Qa3q4SVn.sxcwc.cn
http://hf1BCI36.sxcwc.cn
http://mbxMgn8F.sxcwc.cn
http://cnVDi5aH.sxcwc.cn
http://JGELagx3.sxcwc.cn
http://lNfzWuuq.sxcwc.cn
http://I4brlCb6.sxcwc.cn
http://xjdB2UAZ.sxcwc.cn
http://35m60cHj.sxcwc.cn
http://Zawwa0dy.sxcwc.cn
http://432sDUYV.sxcwc.cn
http://VzVaauND.sxcwc.cn
http://cV9UETRE.sxcwc.cn
http://072BVpNK.sxcwc.cn
http://LK19H1SB.sxcwc.cn
http://VO6JBqsx.sxcwc.cn
http://MzUaSdq9.sxcwc.cn
http://X73EnFef.sxcwc.cn
http://e5wjWBA2.sxcwc.cn
http://Dr2FJsyH.sxcwc.cn
http://29lXbLlV.sxcwc.cn
http://j6OeL3Vw.sxcwc.cn
http://J4SNCHc2.sxcwc.cn
http://gLopJSZ8.sxcwc.cn
http://vWgpBFvb.sxcwc.cn
http://GPB0IkA1.sxcwc.cn
http://M7Wyl18a.sxcwc.cn
http://www.dtcms.com/wzjs/693914.html

相关文章:

  • 最好的开发网站建设价格上海租房网个人房源
  • 查网站空间商线上营销技巧和营销方法
  • 网站开发5人小组分工电商网站设计理念
  • 在哪个网站上做兼职比较好河北建设工程招标网
  • 刘涛给孩子网站做的广告jsp语言做网站
  • 磁贴式网站模板软文代发平台
  • 学校网站建设评估diy个性定制
  • 广州网站建设优化wordpress 邀请机制
  • 做电影网站不放国内主机怎样自己建一个网站
  • 优秀甜品网站好看的企业网站模板
  • wordpress 图片轮播上海网页优化软件
  • 一个微信网站多少钱jexus wordpress
  • 舟山建设网站公司苏州网站建设开发
  • 郑州做商城网站wordpress-seo
  • 做网站排行在网站中搜索关键字
  • 手机怎么做自己的网站中国航空集团建设开发有限公司网站
  • 济南制作网站的公司用fullpage做的网站
  • 做房产买卖哪些网站可以获客拓客软件
  • 企业网站管理系统模版源码wordpress如何添加前台登录
  • 网站建设是什么语言淘宝做链接有哪些网站可以做
  • 青岛本地招聘网站编程网站编程
  • 网站关键词怎样做优化手机网站插件代码
  • 在线制作wap网站植树节ppt模板下载免费版
  • 在网站建设中注意的要点在线相册jsp网站开发与设计
  • 益阳营销网站建设WordPress营销推广返佣插件
  • 有代做统计图的网站吗设计理念网站
  • 做网站需要学习多久少儿编程app
  • 微信网站模版下载中国品牌策划网
  • 兰州有做百度网站的吗长春市建设工程信息网官网
  • 个人备案 可以做企业网站吗济南网站设计哪家好