Python 脚本中的 FFmpeg

news2024/11/28 2:39:35

FFmpeg 是快进运动图像专家组的缩写。 它是一个开源项目,提供了ffmpeg、ffplay、ffprobe等工具来处理多媒体文件。

FFmpeg 是一个命令行实用程序,可帮助转换视频/音频格式、压缩视频、从视频中提取音频、创建 GIF、剪切视频等。

本篇文章将介绍在Python中使用FFMPEG命令。


安装 FFmpeg Python 包

首先,您必须在系统上安装 FFmpeg。 以管理员身份打开命令提示符并运行以下命令以使用 choco 安装 FFmpeg。

choco install ffmpeg

接下来,使用 Python 包管理器工具 pip 安装 ffmpeg-python 包。

在提示符中运行以下命令以使用 pip 安装软件包。

pip install ffmpeg-python

输出:

Successfully built ffmpeg
Installing collected packages: ffmpeg
Successfully installed ffmpeg-1.4

在 Python 中使用 FFmpeg 修剪视频

由于我们已经在系统上配置了 FFmpeg,因此让我们使用一些 FFmpeg 命令来处理 Python 中的视频。

以下示例将视频 Pencil.mp4 从 5 秒剪切到 10 秒,并将其保存为 output.mp4。

import ffmpeg
video = ffmpeg.input('Pencil.mp4')
video = video.trim(start=5, duration=5)
video = ffmpeg.output(video, 'output.mp4')
ffmpeg.run(video)

Python中使用FFmpeg获取视频的宽度和高度

以下示例在 Python 中打印指定视频的宽度和高度。

import ffmpeg
probe = ffmpeg.probe('output.mp4')
video = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)
width = int(video['width'])
height = int(video['height'])
print("Width:", width)
print("Height:", height)

输出:

Width: 1280
Height: 720

在 Python 中使用 FFmpeg 保存视频缩略图

您还可以使用 Python 中的 FFmpeg 保存视频的缩略图。

以下示例从视频中的时间 4 秒生成宽度 500px 的缩略图。

import ffmpeg
video = ffmpeg.input('Pencil.mp4', ss=4)
video = video.filter('scale', 500, -1)
video= ffmpeg.output(video,'output.png', vframes=1)
ffmpeg.run(video)

高度由纵横比自动确定。

输出图像:

python 中视频的缩略图


在 Python 中使用 FFmpeg 翻转视频

在 Python 中,您可以使用 ffmpeg.hflip() 水平翻转视频,使用 ffmpeg.vflip() 垂直翻转视频。

水平翻转视频:

import ffmpeg
video = ffmpeg.input('Pencil.mp4')
video = ffmpeg.hflip(video)
video = ffmpeg.output(video, 'horizontal.mp4')
ffmpeg.run(video)

垂直翻转视频:

import ffmpeg
video = ffmpeg.input('Pencil.mp4')
video = ffmpeg.vflip(video)
video = ffmpeg.output(video, 'vertical.mp4')
ffmpeg.run(video)

FFmpeg 是一个对多媒体文件执行不同操作的便捷工具。 它可以快速修剪视频、更改文件格式、提取音频、创建 GIF 等。

至此,您应该已经清楚地了解如何在Python脚本中使用FFmpeg命令。 我们希望本教程对您有所帮助。

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

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

相关文章

数据库中了mkp勒索病毒,mkp勒索病毒解密,数据恢复

最近一段时间网络上的mkp勒索病毒比较猖獗,给企业的服务器数据库带来了严重影响。通过这一波的mkp勒索病毒攻击,云天数据恢复中心的工程师发现,大部分被攻击的企业,主要是因为网络安全意识不高,服务器安全防护没有做到…

基于STM32的森林火灾监控系统设计

一、设计简述 基于STM32设计的森林火灾监控系统(OneNet) 1.1 项目背景 近年来,随着全球气候变暖和人类活动的不断增加,森林火灾成为全球性的重大灾害之一。据统计,每年全球因森林火灾造成的经济损失高达数十亿美元,严重威胁着生态环境和人民生命财产安全。如何及时预警和响…

2023 年 42 周

2023 年 42 周 说句题外话,上次写这玩意儿居然都是两年前的事情了……这次换个方式计算,直接用周数来 学习 📑 进度 本周其实进度有那么点乱,学了一些 JPA/Hibernate 的内容,LC 刷题进度也拖慢了一些,基本…

会声会影2023中文旗舰版crack 2023注册机百度网盘下载

会声会影2023中文旗舰版功能非常强大的视频编辑软件,非常专业的使用效果,会声会影2023中文版可以针对剪辑电影进行使用,非常强大的色彩校正方式,无论什么光线下进行拍摄,都可以通过后期进行调整,并且里面超…

论文速递 | 8月下旬9月上旬Operations ResearchManagement Science文章精选

编者按 本期我们选取了8月下旬及9月上旬Operations Research文章2篇,Management Science文章4篇期刊文章,着眼于各种不同场景下对于风险的预测、量化及管理,通过聚焦于风险这一主题,体系化地形成文章精选。 文章1 Computation of…

【云计算网络安全】DDoS 攻击类型:什么是 ACK 洪水 DDoS 攻击

文章目录 一、什么是 ACK 洪水 DDoS 攻击?二、什么是数据包?三、什么是 ACK 数据包?四、ACK 洪水攻击如何工作?五、SYN ACK 洪水攻击如何工作?六、文末送书《AWD特训营》内容简介读者对象 一、什么是 ACK 洪水 DDoS 攻…

【UE5 虚幻引擎】新建C++类:类的类型 命名 类的目标模块

目录 0 引言1 新建C类2 类前的宏 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE5 虚幻引擎】新建C类:类的类型 命名 类的目标模块❣️ 寄语:加油,一次专注一…

游戏设计模式专栏(十):在Cocos游戏开发中运用外观模式

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 外观模式(F…

C#,数值计算——数据建模State的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class State { public double lam1 { get; set; } public double lam2 { get; set; } public double tc { get; set; } public int k1 { get; set; } public…

系统对接-验签机制

一、消息摘要算法 1、消息摘要算法特点 消息摘要算法加密过程不需要密钥,加密的数据无法解密。 只有输入相同的明文并且使用相同的摘要算法才能得到相同的结果。 2、MD5算法 压缩性:任意长度的数据MD5值都是固定128位(32个16进制数值串&a…

CUDA initialization: The NVIDIA driver on your system is too old解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

基于大模型(LLM)的Agent 应用开发

目前,业界一般认为基于大模型的应用集中在两个方向上:RAG 和 Agent,无论哪一种应用,设计、实现和优化能够充分利用大模型(LLM)潜力的应用都需要大量的努力和专业知识。随着开发人员开始创建日益复杂的LLM应用程序,开发…

Mock入门之概念理解

当我们讨论软件测试,特别是单元测试时,经常会遇到“mock”和“Mockito”。让我们先了解“mock”,然后详细探讨“Mockito”。 Mock概述 定义: 在软件测试中,mock是一个模拟真实对象的虚假对象,它模拟了真实对象的行为。…

在Google cloud上创建VM虚拟机

登录GCP console,确保Compute Enginee API 已经被eanbled 在左边菜单栏,选择第一个item - VM instance 如果见到上面页面, 则代表compute enginee的API 已经被enabled, 否则要先enable Compute enginee的API. 后者从APIs &…

【Eclipse】取消按空格自动补全,以及出现没有src的解决办法

【Eclipse】设置自动提示 教程 根据上方链接,我们已经知道如何设置Eclipse的自动补全功能了,但是有时候敲变量名的时候按空格,本意是操作习惯,不需要自动补全,但是它却给我们自动补全了,这就造成了困扰&…

14.7 Socket 循环结构体传输

在上述内容中笔者通过一个简单的案例给大家介绍了在套接字编程中如何传递结构体数据,本章将继续延申结构体传输,在某些时候例如我们需要传输一些当前系统的进程列表信息,或者是当前主机中的目录文件,此时就需要使用循环结构体传输…

C++ 引用()的超详细解析(小白必看系列)

目录 一、前言 二、引用的概念介绍 三、引用的五大特性 💦 引用在定义时必须初始化 💦 一个变量可以有多个引用 💦 一个引用可以继续有引用 💦 引用一旦引用一个实体,再不能引用其他实体 💦 可以对任何…

02-spring源码概述-debug流程

文章目录 1. 两个主要ApplicationContext的类继承结构图1.1 ClassPathXmlApplicationContext1.2 ClassPathXmlApplicationContext 2. DefaultListableBeanFactory类继承结构图 1. 两个主要ApplicationContext的类继承结构图 1.1 ClassPathXmlApplicationContext 1.2 ClassPath…

基于SSM的旅游景点管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

MySQL数据库——SQL优化(3/3)-limit 优化、count 优化、update 优化、SQL优化 小结

目录 limit 优化 count 优化 概述 count用法 update 优化 SQL优化 小结 limit 优化 在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。 当在进行分页查询时,如果执行limit 2000000,1…