使用Python和ffmpeg旋转WebM视频并保存为MP4文件

news2024/11/23 11:52:31

简介:
在本篇博客中,我们将介绍如何使用Python编写一个程序,结合wxPython和ffmpeg模块,来旋转WebM视频文件并将其保存为MP4格式。我们将使用wxPython提供的文件选择对话框来选择输入和输出文件,并使用ffmpeg库来进行视频旋转操作。让我们开始吧!
C:\pythoncode\rationvideo90.py
步骤:

1. 准备工作

首先,确保您已经安装了Python、wxPython和ffmpeg库。您可以使用pip来安装这些库:

pip install wxPython ffmpeg-python

2. 编写代码

下面是一个示例代码,用于旋转WebM视频文件并保存为MP4格式:

import wx
import ffmpeg

def rotate_video(input_file, output_file):
    try:
        # 调用ffmpeg进行视频旋转
        ffmpeg.input(input_file).output(output_file, vf='transpose=1', vcodec='libx264').run()
        print("视频旋转完成!")
    except ffmpeg.Error as e:
        print("视频旋转失败:", e.stderr.decode())

# 使用wxPython模块选择输入和输出文件
app = wx.App()
dialog = wx.FileDialog(None, "选择输入文件", wildcard="WebM视频文件 (*.webm)|*.webm", style=wx.FD_OPEN)
if dialog.ShowModal() == wx.ID_OK:
    input_file = dialog.GetPath()
    output_file = dialog.GetPath() + "_rotated.mp4"
    rotate_video(input_file, output_file)
dialog.Destroy()
app.MainLoop()

3. 运行程序

保存以上代码为一个Python脚本(例如rotate_video.py),然后在命令行中运行该脚本:

python rotate_video.py

程序将弹出一个文件选择对话框,请选择您要旋转的WebM视频文件。程序将自动将视频旋转90度并保存为MP4格式。旋转后的视频将在同一目录下以_rotated.mp4作为后缀名进行保存。

在这里插入图片描述
在这里插入图片描述

4. 结论

在本篇博客中,我们介绍了如何使用Python编写一个程序,结合wxPython和ffmpeg模块,来旋转WebM视频文件并将其保存为MP4格式。通过使用wxPython提供的文件选择对话框和ffmpeg库的功能,我们可以方便地进行视频旋转操作。希望这篇博客对您有所帮助!

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

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

相关文章

206. 反转链表(力扣LeetCode)

文章目录 206. 反转链表题目描述双指针递归 206. 反转链表 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入&am…

第八篇【传奇开心果系列】beeware的toga开发移动应用示例:实现消消乐安卓手机小游戏

传奇开心果博文系列 系列博文目录beeware的toga开发移动应用示例系列博文目录一、项目目标二、安装依赖三、初步实现四、扩展思路五、实现游戏逻辑示例代码六、实现界面设计示例代码七、实现增加关卡和难度示例代码八、实现存档和排行榜示例代码九、实现添加特殊方块和道具示例…

(五)流程控制switchcase

文章目录 switch case用法全配套break示例演示 不全配套break不怎么常规的写法常规的写法示例1演示1示例2演示2 经典成绩分类案例代码演示 switch case 相对于ifelse的嵌套,switch case 有点像并列的感觉 用法 switch (一定要放整数类型,int 型变量、c…

ubuntu 22 安装 node,npm,vue

1:安装 nodejs sudo apt update curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt update && sudo apt install -y nodejs node -v 2:安装npm sudo npm install n -g npm -v 3:安装vite npm install vite -g 4:运行vue 把项目拷贝到…

「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解

引言:什么是路径遍历?如何进行路径遍历攻击并规避常见防御?如何防止路径遍历漏洞。 1. 简介 路径遍历(Path Traversal)是一种安全漏洞,也被称为目录遍历或目录穿越、文件路径遍历。它发生在应用程序未正确…

Tomcat10安装报错Unknown module: java.rmi specified to --add-opens

错误原因需要根据自己的tomcat的版本查看 需要根据自己的tomcat找到对应安装的java版本(查看版本网址)https://tomcat.apache.org/whichversion.html 将电脑当中的环境变量JRE_HOME变量删除即可(具体如下图)

LeetCode 热题 100 | 矩阵

目录 1 73. 矩阵置零 2 54. 螺旋矩阵 3 48. 旋转图像 4 240. 搜索二维矩阵 II 菜鸟做题第二周,语言是 C 1 73. 矩阵置零 解题思路: 遍历矩阵,寻找等于 0 的元素,记录对应的行和列将被记录的行的元素全部置 0将被记录的…

redis-4 搭建redis集群

1.为什么需要redis集群? Redis 集群提供了高可用性、横向扩展和数据分片等功能,使得 Redis 能够应对大规模的数据存储和高并发访问的需求。以下是一些需要使用 Redis 集群的常见情况: 高可用性:通过在多个节点之间进行数据复制和…

网络编程1

什么是网络编程 ⽹络编程,指⽹络上的主机,通过不同的进程,以编程的⽅式实现⽹络通信(或称为⽹络数据传输)。 当然,我们只要满⾜进程不同就⾏;所以即便是同⼀个主机,只要是不同进程…

【服务器Midjourney】创建部署Midjourney网站

目录 🌺【前言】 🌺【准备】 🌺【宝塔搭建MJ】 🌼1. 给服务器添加端口 🌼2. 使用Xshell连接服务器 🌼3. 安装docker 🌼4. 安装Midjourney程序 🌼5. 绑定域名+申请SSL证书 🌼6. 更新网站

数据结构.双链表循环链表

一、1.双链表的初始化 void InitLNode(LinkList& L)//双链表的初始化 {L (LNode*)malloc(sizeof(LNode));L->prior NULL;L->next NULL;} 2.双链表的插入 void DInsert(LNode* p,LNode*s)//在p结点后面插入s结点 {s->next p->next;s->next->prior s;…

支持向量机(SVM)详解

支持向量机(support vector machines,SVM)是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。 1、线性可分支持向量机与硬间隔最大化 1.1、线性可分支持向量机 考虑一个二分…

数据结构篇-03:堆实现优先级队列

本文着重在于讲解用 “堆实现优先级队列” 以及优先级队列的应用,在本文所举的例子中,可能使用优先级队列来解并不是最优解法,但是正如我所说的:本文着重在于讲解“堆实现优先级队列” 堆实现优先级队列 堆的主要应用有两个&…

MySQL索引类型及数据结构【笔记】

1 索引类型 返回面试宝典 主键索引(PRIMARY):数据列不允许重复,不允许为NULL,一个表只能有一个主键。 唯一索引(UNIQUE):数据列不允许重复,允许为NULL,一个表允许多个列创建唯一索引…

【Go】深入理解 Go map:赋值和扩容迁移 ①

文章目录 map底层实现hmapbmap map hash冲突了怎么办? map扩容触发扩容时机扩容小结为什么map扩容选择增量(渐进式扩容)?迁移是逐步进行的。那如果在途中又要扩容了,怎么办? map翻倍扩容原理 map写入数据内…

Easysearch:语义搜索、知识图和向量数据库概述

什么是语义搜索? 语义搜索是一种使用自然语言处理算法来理解单词和短语的含义和上下文以提供更准确的搜索结果的搜索技术。旨在更好地理解用户的意图和查询内容,而不仅仅是根据关键词匹配,还通过分析查询的语义和上下文来提供更准确和相关的…

Spring与Redis集成

1.引入RedisTemplate 据以前的情况,我们在Java中使用Redis时一般是使用Jedis来操作的,大致的一段代码如下所示 Overridepublic User findUserById(Integer id) {User user null;Jedis jedis null;try {jedis jedisPool.getResource();String userStr…

【YOLO系列算法俯视视角下舰船目标检测】

YOLO系列算法俯视视角下舰船目标检测 数据集和模型YOLO系列算法俯视视角下舰船目标检测YOLO系列算法俯视视角下舰船目标检测可视化结果 数据集和模型 数据和模型下载: YOLOv6俯视视角下舰船目标检测训练好的舰船目标检测模型舰船目标检测数据YOLOv7俯视视角下舰船…

机器学习|ROC曲线和AUC值

概念AUC(Area Under Curve)被定义为ROC曲线下的面积。其中,ROC曲线全称为受试者工作特征曲线 (receiver operating characteristic curve), 模型会计算出所判断事物为汉堡🍔的概率,而…

基于DataKit迁移MySQL到openGauss

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…