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

【脚本】图片-音视频-压缩文件处理

音视频处理

      • 一,图片操作
        • 1,转换图片格式
        • 2,多张图片合成视频
      • 二,音频操作
        • 1,转换音频格式
        • 2,分割音频为多段
        • 3,合成多段音频
      • 三,视频操作
        • 1,转换视频格式
        • 2,提取视频中的音频
        • 3,合成多段视频
        • 4,为视频添加音频
        • 5,视频抽帧
      • 四,压缩文件
        • 1,Zip转rar
        • 2,rar转Zip

提前导入模块

from pydub import AudioSegment
from moviepy.editor import VideoFileClip, concatenate_videoclips, AudioFileClip
from PIL import Image
import cv2
import os

一,图片操作

1,转换图片格式
def convert_image(input_path, output_path, output_format):"""将图片从一种格式转换为另一种格式。:param input_path: 输入图片文件的路径。:param output_path: 输出图片文件的路径。:param output_format: 输出图片的格式(如 'PNG', 'JPEG' 等)。"""try:# 打开输入图片image = Image.open(input_path)# 将图片保存为指定的输出格式image.save(output_path, format=output_format)print(f"成功将图片转换为 {output_format} 格式并保存到 {output_path}")except Exception as e:print(f"转换图片格式时出现错误: {str(e)}")
2,多张图片合成视频
def images_to_video(image_folder, output_video_path, frame_rate=30):"""将多张图片合成为视频。:param image_folder: 包含要合成的图片的文件夹路径。:param output_video_path: 输出视频的文件路径。:param frame_rate: 视频的帧率(默认为30帧/秒)。"""image_files = [img for img in os.listdir(image_folder) if img.endswith(".png") or img.endswith(".jpg")]image_files.sort()  # 确保图片按顺序排列frame = cv2.imread(os.path.join(image_folder, image_files[0]))height, width, layers = frame.shapefourcc = cv2.VideoWriter_fourcc(*'mp4v')  # 选择视频编解码器(可以根据需要更改)video = cv2.VideoWriter(output_video_path, fourcc, frame_rate, (width, height))for image_file in image_files:image_path = os.path.join(image_folder, image_file)frame = cv2.imread(image_path)video.write(frame)video.release()print(f"成功生成视频:{output_video_path}")

二,音频操作

1,转换音频格式
def convert_audio_format(input_path, output_path, output_format):"""将音频文件从一种格式转换为另一种格式。:param input_path: 输入音频文件的路径。:param output_path: 输出音频文件的路径。:param output_format: 输出音频的格式(如 'mp3', 'wav' 等)。"""# 加载音频文件audio = AudioSegment.from_file(input_path)# 转换并导出音频audio.export(output_path, format=output_format)print(f"音频已从 {input_path} 转换为 {output_format} 格式,并保存到 {output_path}。")
2,分割音频为多段
def split_audio_into_chunks(audio_path, format,segment_length=10000):"""将音频文件分割成多个片段。:param audio_path: 音频文件的路径。:param segment_length: 分割长度,单位为毫秒。默认为 10000 毫秒(10秒)。:return: 分割后的音频片段列表。"""# 加载音频文件audio = AudioSegment.from_file(audio_path)# 计算分割数量length_of_audio = len(audio)number_of_chunks = length_of_audio // segment_length + (1 if length_of_audio % segment_length else 0)# 分割音频chunks = []for i in range(number_of_chunks):start = i * segment_lengthend = start + segment_lengthchunk = audio[start:end]chunks.append(chunk)chunk.export(f"chunk{i}.mp3", format)  # 导出每个片段为单独的文件return chunks
3,合成多段音频
def merge_audio_files(audio_files, output_path):"""合并多个音频文件为一个音频文件。:param audio_files: 音频文件路径列表。:param output_path: 合并后的音频文件输出路径。"""# 初始化空的音频段combined = AudioSegment.empty()# 依次加载每个音频文件并合并for file in audio_files:audio = AudioSegment.from_file(file)combined += audio# 导出合并后的音频文件combined.export(output_path, format="mp3")print(f"音频文件已合并并保存到 {output_path}")

三,视频操作

1,转换视频格式
def convert_video_format(input_path, output_path, output_format):"""将视频文件从一种格式转换为另一种格式。:param input_path: 输入视频文件的路径。:param output_path: 输出视频文件的路径。:param output_format: 输出视频的格式(如 'mp4', 'avi' 等)。"""# 加载视频文件video = VideoFileClip(input_path)# 设置输出文件的扩展名output_path_with_format = output_path + '.' + output_format# 转换并导出视频video.write_videofile(output_path_with_format, codec='libx264')print(f"视频已从 {input_path} 转换为 {output_format} 格式,并保存到 {output_path_with_format}。")
2,提取视频中的音频
def extract_audio_from_video(video_path, audio_output_path):"""从视频文件中提取音频。:param video_path: 视频文件的路径。:param audio_output_path: 要保存的音频文件的路径。"""# 加载视频文件video = VideoFileClip(video_path)# 提取音频audio = video.audio# 保存音频文件audio.write_audiofile(audio_output_path)print(f"音频已从 {video_path} 提取并保存到 {audio_output_path}。")
3,合成多段视频
def merge_video_files(video_files, output_path):"""合并多个视频文件为一个视频文件。:param video_files: 视频文件路径列表。:param output_path: 合并后的视频文件输出路径。"""# 加载视频文件clips = [VideoFileClip(file) for file in video_files]# 合并视频final_clip = concatenate_videoclips(clips)# 导出合并后的视频文件final_clip.write_videofile(output_path, codec="libx264")print(f"视频文件已合并并保存到 {output_path}")
4,为视频添加音频
def add_audio_to_video(video_path, audio_path, output_path):"""将音频文件添加到视频文件中。:param video_path: 视频文件的路径。:param audio_path: 音频文件的路径。:param output_path: 合成后的视频文件输出路径。"""# 加载视频和音频video_clip = VideoFileClip(video_path)audio_clip = AudioFileClip(audio_path)# 将音频添加到视频中video_with_audio = video_clip.set_audio(audio_clip)# 导出最终视频文件video_with_audio.write_videofile(output_path, codec="libx264")print(f"音频已添加到视频中,并保存到 {output_path}")
5,视频抽帧
def extract_frame_from_video(video_path, time, output_image_path):"""从视频中抽取特定时间点的帧。:param video_path: 视频文件的路径。:param time: 抽取帧的时间点(秒)。:param output_image_path: 输出图像的路径。"""# 加载视频文件video_clip = VideoFileClip(video_path)# 获取特定时间点的帧frame = video_clip.get_frame(time)# 将帧保存为图像from PIL import Imageimage = Image.fromarray(frame)image.save(output_image_path)print(f"从 {video_path} 抽取的帧已保存到 {output_image_path}")

四,压缩文件

1,Zip转rar
def convert_zip_to_rar(zip_file_path, rar_file_path):"""将zip文件转换为rar文件。:param zip_file_path: 输入的zip文件路径。:param rar_file_path: 输出的rar文件路径。"""try:# 打开输入的zip文件with zipfile.ZipFile(zip_file_path, 'r') as zipf:# 创建rar文件with rarfile.RarFile(rar_file_path, 'w') as rarf:# 逐个将zip文件中的文件添加到rar文件中for file_name in zipf.namelist():with zipf.open(file_name) as zip_file:rarf.writestr(file_name, zip_file.read())print(f"成功将 {zip_file_path} 转换为 {rar_file_path}")except Exception as e:print(f"转换文件格式时出现错误: {str(e)}")
2,rar转Zip
def convert_rar_to_zip(rar_file_path, zip_file_path):"""将RAR文件转换为ZIP文件。:param rar_file_path: 输入的RAR文件路径。:param zip_file_path: 输出的ZIP文件路径。"""try:# 打开输入的RAR文件with rarfile.RarFile(rar_file_path, 'r') as rarf:# 创建ZIP文件with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf:# 逐个将RAR文件中的文件添加到ZIP文件中for file_name in rarf.namelist():with rarf.open(file_name) as rar_file:zipf.writestr(file_name, rar_file.read())print(f"成功将 {rar_file_path} 转换为 {zip_file_path}")except Exception as e:print(f"转换文件格式时出现错误: {str(e)}")

相关文章:

【脚本】图片-音视频-压缩文件处理

音视频处理 一,图片操作1,转换图片格式2,多张图片合成视频 二,音频操作1,转换音频格式2,分割音频为多段3,合成多段音频 三,视频操作1,转换视频格式2,提取视频…...

跨品牌的手机要怎样相互投屏?iPhone和iPad怎么相互投屏?

选择买不同品牌的手机是基于品牌声誉、产品特点、价格和性价比等多个因素的综合考虑。每个人的需求和偏好不同,选择适合自己的手机品牌是一个个人化的决策。 一些品牌可能更加注重摄影功能,而其他品牌可能更加注重性能和速度。选择不同品牌的手机可以根据…...

图像特征提取-角点

角点特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片,然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序,那计算机就也会玩拼图游戏了。 在拼图时,我们要寻找一些唯一的特征,这些…...

N26:构建无缝体验的平台工程之路-Part 2

​ 在第一​​​​​​部分,我们介绍了 N26 团队为达成 “在 Day 1 实现轻松部署” 的目标而设定的战略规划和开发人员体验图,在这一部分,我们将带您了解该团队如何构建最简可行平台以及该平台如何运作。 01 计划构建最简可行平台 我们通…...

【Hadoop-Distcp】通过Distcp的方式进行两个HDFS集群间的数据迁移

【Hadoop-Distcp】通过Distcp的方式进行两个HDFS集群间的数据迁移 1)Distcp 工具简介及参数说明2)Shell 脚本 1)Distcp 工具简介及参数说明 【Hadoop-Distcp】工具简介及参数说明 2)Shell 脚本 应用场景: 两个实时集…...

【Linux】使用Bash和GNU Parallel并行解压缩文件

介绍 在本教程中,我们将学习如何使用Bash脚本和GNU Parallel实现高效并行解压缩多个文件。这种方法在处理大量文件时可以显著加快提取过程。 先决条件 确保系统上已安装以下内容: BashGNU Parallel 你可以使用以下命令在不同Linux系统上安装它们&am…...

T天池SQL训练营(五)-窗口函数等

–天池龙珠计划SQL训练营 5.1窗口函数 5.1.1窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数。OLAP 是OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。 为了便于理解,称之为窗口函数。常规的SELECT语句都是对整张表进…...

道可云元宇宙每日资讯|上海市区块链关键技术攻关专项项目立项清单公布

道可云元宇宙每日简报(2023年12月11日)讯,今日元宇宙新鲜事有: 上海市2023年度区块链关键技术攻关专项项目立项清单公布 据上海市科学技术委员会近日发布通知,上海市2023年度“科技创新行动计划”区块链关键技术攻关…...

大语言模型有什么意义?亚马逊训练自己的大语言模型有什么用?

近年来,大语言模型的崭露头角引起了广泛的关注,成为科技领域的一项重要突破。而在这个领域的巅峰之上,亚马逊云科技一直致力于推动人工智能的发展。那么,作为一家全球科技巨头,亚马逊为何会如此注重大语言模型的研发与…...

RabbitMQ-学习笔记(初识 RabbitMQ)

本篇文章学习于 bilibili黑马 的视频 (狗头保命) 同步通讯 & 异步通讯 (RabbitMQ 的前置知识) 同步通讯:类似打电话,只有对方接受了你发起的请求,双方才能进行通讯, 同一时刻你只能跟一个人打视频电话。异步通讯:类似发信息&#xff0c…...

SQL Update语句

SQL Update语句 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! SQL Update语句:数据库操作高招解析 数据库是我们搭建查券返利机器人的重要组成部分&…...

C语言-WIN32API介绍

Windows API 从第一个32位的Windows开始就出现了,就叫做Win32API.它是一个纯C的函数库,就和C标准库一样,使你可以写Windows应用程序过去很多Windows程序是用这个方式做出来的 main()? main()成为C语言的入口函数其实和C语言本身无关&…...

TFIDF、BM25、编辑距离、倒排索引

TFIDF TF刻画了词语t对某篇文档的重要性,IDF刻画了词语t对整个文档集的重要性...

MySQL之DML语句

文章目录 DML语句创建表添加表字段**插入数据**查询数据更新数据替换数据删除数据清除表数据删除表 DML语句 数据操作语言DML(Data Manipulation Langua) 是SQL语言的一个分类,用于对表的数据进行增,删,改&#xff0c…...

kubernetes集群常用指令

目录 1.1 基础控制指令 1.2 命令实践 1.3 备注 1.1 基础控制指令 # 查看对应资源: 状态 $ kubectl get <SOURCE_NAME> -n <NAMESPACE> -o wide ​ # 查看对应资源: 事件信息 $ kubectl describe <SOURCE_NAME> <SOURCE_NAME_RANDOM_ID> -n <NAMES…...

PyQt6 QTreeView树视图

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili QTreeView类&#xff0c;它是树控件的基类&#xff0c;使用时&#xff0c;必须为其提供一个模型来与之配合。 QTreeView类的常用方法&#xff1a; 方法…...

链表|148. 排序链表

148. 排序链表 题目&#xff1a;给你链表的头结点 head &#xff0c;请将其按升序排列并返回排序后的链表。 题目链接&#xff1a; 148. 排序链表 时间复杂度&#xff1a;快排 O(n^2) 超出时间限制 class Solution {public ListNode sortList(ListNode head) {if(headnull)…...

如何解决5G基站高能耗问题?

安科瑞 须静燕 截至2023年10月&#xff0c;我国5G基站总数达321.5万个&#xff0c;占全国通信基站总数的28.1%。然而&#xff0c;随着5G基站数量的快速增长&#xff0c;基站的能耗问题也逐渐日益凸显&#xff0c;基站的用电给运营商带来了巨大的电费开支压力&#xff0c;降低5…...

PyTorch实现逻辑回归

最终效果 先看下最终效果&#xff1a; 这里用一条直线把二维平面上不同的点分开。 生成随机数据 #创建训练数据 x torch.rand(10,1)*10 #shape(10,1) y 2*x (5 torch.randn(10,1))#构建线性回归参数 w torch.randn((1))#随机初始化w&#xff0c;要用到自动梯度求导 b …...

什么是FPGA原型验证?

EDA工具的使用主要分为设计、验证和制造三大类。验证工作贯穿整个芯片设计流程&#xff0c;可以说芯片的验证阶段占据了整个芯片开发的大部分时间。从芯片需求定义、功能设计开发到物理实现制造&#xff0c;每个环节都需要进行大量的验证。 现如今验证方法也越来越多&#xff…...

终极指南:如何用Scream实现Windows音频网络共享

终极指南&#xff1a;如何用Scream实现Windows音频网络共享 【免费下载链接】scream Virtual network sound card for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/sc/scream 想要将Windows电脑的音频无线传输到其他设备&#xff1f;厌倦了复杂的音频线…...

RevokeMsgPatcher 2.1:实用高效的微信QQ防撤回完整解决方案

RevokeMsgPatcher 2.1&#xff1a;实用高效的微信QQ防撤回完整解决方案 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitco…...

零基础玩转通义千问2.5:手把手教你用vLLM+Open WebUI一键部署

零基础玩转通义千问2.5&#xff1a;手把手教你用vLLMOpen WebUI一键部署 1. 通义千问2.5-7B-Instruct简介 1.1 模型特点概述 通义千问2.5-7B-Instruct是阿里云2024年9月发布的70亿参数指令微调模型&#xff0c;定位为"中等体量、全能型、可商用"的开源大语言模型。…...

单片机存储系统:哈佛架构与ROM/RAM技术解析

1. 单片机存储系统概述单片机作为微型计算机系统的核心&#xff0c;其存储架构直接决定了系统的性能和功能实现方式。与通用计算机不同&#xff0c;单片机的存储系统通常采用哈佛结构&#xff0c;将程序存储器和数据存储器物理分离。这种设计源于早期计算机科学家对处理器效率的…...

50| 选数

#include <bits/stdc.h> using namespace std;int n, k, ans, sum; // ans 最终答案 const int N 23; int a[N]; bool st[N];bool isprime(int x) {if (x < 1) return false;for (int i 2; i < sqrt(x); i)if (x % i 0) return false;return true; }void dfs(…...

不止是拆网卡:以联想ThinkCentre M7131z为例,聊聊老旧一体机的升级改造可能性

联想ThinkCentre M7131z改造指南&#xff1a;从拆网卡到全面性能升级 老旧商用一体机往往被贴上"性能瓶颈"的标签&#xff0c;但联想ThinkCentre M7131z系列却隐藏着令人惊喜的改造潜力。这台发布于2015年前后的商用一体机&#xff0c;凭借其模块化设计和充足的内部空…...

【Java Web学习 | 第十篇】JavaScript(4) 对象

【Java Web学习 | 第十篇】JavaScript(4) - 对象&#xff08;Object&#xff09;深度详解&#xff08;2026最新版&#xff09; 恭喜你完成数组与函数进阶&#xff01; 对象&#xff08;Object&#xff09; 是 JavaScript 中最重要、最核心的数据结构。在 Java Web 开发中&…...

在 SAP 系统中,利润中心(Profit Center)和业务范围(Business Area)都是用于内部管理报告的组织单元,但它们在设计理念、功能和应用上存在显著区别。简单来说,利润中心是更现代

在 SAP 系统中&#xff0c;利润中心&#xff08;Profit Center&#xff09;和业务范围&#xff08;Business Area&#xff09;都是用于内部管理报告的组织单元&#xff0c;但它们在设计理念、功能和应用上存在显著区别。简单来说&#xff0c;利润中心是更现代、更灵活、功能更强…...

Phi-4-mini-reasoning应对软件测试:自动生成测试用例与缺陷分析

Phi-4-mini-reasoning应对软件测试&#xff1a;自动生成测试用例与缺陷分析 1. 引言&#xff1a;软件测试的痛点与AI解决方案 在软件开发的生命周期中&#xff0c;测试环节往往占据30%-50%的项目时间。传统测试工作面临两大核心挑战&#xff1a;一是测试用例设计需要大量人工…...

Pixel Aurora Engine快速部署:阿里云ECS轻量服务器一键安装脚本

Pixel Aurora Engine快速部署&#xff1a;阿里云ECS轻量服务器一键安装脚本 1. 像素极光引擎简介 Pixel Aurora&#xff08;像素极光&#xff09;是一款基于AI扩散模型的高端绘图工作站&#xff0c;采用独特的复古像素游戏风格界面设计。这款创意引擎能够将文字描述转化为极具…...