Python 脚本中的 FFmpeg

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

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

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


安装 FFmpeg Python 包

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

bash 复制代码
choco install ffmpeg

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

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

bash 复制代码
pip install ffmpeg-python

输出:

bash 复制代码
Successfully built ffmpeg
Installing collected packages: ffmpeg
Successfully installed ffmpeg-1.4

在 Python 中使用 FFmpeg 修剪视频

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

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

python 复制代码
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 中打印指定视频的宽度和高度。

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)

输出:

bash 复制代码
Width: 1280
Height: 720

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

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

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

python 复制代码
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 中使用 FFmpeg 翻转视频

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

水平翻转视频:

python 复制代码
import ffmpeg
video = ffmpeg.input('Pencil.mp4')
video = ffmpeg.hflip(video)
video = ffmpeg.output(video, 'horizontal.mp4')
ffmpeg.run(video)

垂直翻转视频:

python 复制代码
import ffmpeg
video = ffmpeg.input('Pencil.mp4')
video = ffmpeg.vflip(video)
video = ffmpeg.output(video, 'vertical.mp4')
ffmpeg.run(video)

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

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

相关推荐
Sisphusssss25 分钟前
香橙派5plus GPIO
linux·python·ubuntu
颜酱1 小时前
08 | 把维度值同步到 Elasticsearch(生成阶段)
人工智能·python·langchain
久久学姐1 小时前
基础转码学 AI:Java+Python 双语言入门,3 个月可落地实战项目
java·python·ai·转码·实战项目
花生了什么事o1 小时前
synchronized 与 ReentrantLock:Java 锁机制原理与实现对比
java·开发语言
aramae1 小时前
C++ IO流完全指南:从C标准库到C++流式编程
服务器·c语言·开发语言·c++·后端
ZHOU_WUYI1 小时前
4. light wam 模型loss计算过程
开发语言·人工智能·python
nwsuaf_huasir2 小时前
【无标题】
python
长不胖的路人甲2 小时前
Serial 串行、Parallel 并行、CMS 并发收集器
java·开发语言·jvm
Python私教3 小时前
Codex 写出的代码能跑却算错钱:我用 3 个测试拆穿一次 AI 编程幻觉
python·单元测试·ai编程
haolin123.3 小时前
类和对象(上)
开发语言·c++