ffmpeg使用安装使用教程(命令行-Python)

安装教程 https://blog.csdn.net/yuanmomoya/article/details/141992114

ffmpeg转换操作视频十分的占用cpu,会把cpu打满,线上使用的话需要注意下

命令行操作

一、视频转码
将视频从一种格式转换为另一种格式:
bash 复制代码
ffmpeg -i input_video.mp4 output_video.avi

这将把输入的 MP4 视频文件input_video.mp4转换为 AVI 格式的视频文件output_video.avi。

指定视频编码格式
bash 复制代码
ffmpeg -i input.mp4 -c:v libx264 output.mp4

这里将输入视频用 H.264 编码格式进行转码输出。

二、提取音频
从视频中提取音频
bash 复制代码
ffmpeg -i video_with_audio.mp4 -vn output_audio.mp3

-vn表示不处理视频流,只提取音频流输出为 MP3 文件。

三、裁剪视频
按时间裁剪视频:
bash 复制代码
ffmpeg -i input_video.mp4 -ss 00:00:10 -to 00:00:20 output_video.mp4

从输入视频中从第 10 秒开始到第 20 秒结束裁剪出一段视频输出。

按尺寸裁剪视频:
bash 复制代码
ffmpeg -i input_video.mp4 -filter:v "crop=width:height:x:y" output_video.mp4

例如crop=640:480:100:100表示裁剪出一个宽 640、高 480,从坐标 (100,100) 开始的视频区域。

四、合并视频
多个视频文件按顺序合并

首先创建一个文本文件list.txt,内容为要合并的视频文件路径,每行一个路径,例如:

plain 复制代码
file 'video1.mp4'
   file 'video2.mp4'
   file 'video3.mp4'

然后执行以下命令:

bash 复制代码
ffmpeg -f concat -safe 0 -i list.txt -c copy output_video.mp4

五、调整视频参数

改变视频分辨率:
bash 复制代码
ffmpeg -i input_video.mp4 -vf scale=width:height output_video.mp4

例如scale=640:480将视频分辨率调整为 640x480。

调整视频帧率:
bash 复制代码
ffmpeg -i input_video.mp4 -r new_framerate output_video.mp4

例如-r 30将视频帧率调整为 30 帧 / 秒。

六、截图
从视频中截取一帧图像:
bash 复制代码
ffmpeg -i input_video.mp4 -ss 00:00:10 -vframes 1 output_image.jpg

从视频的第 10 秒处截取一帧图像输出为 JPEG 格式。

七、添加水印
为视频添加图片水印:
bash 复制代码
ffmpeg -i input_video.mp4 -i watermark.png -filter_complex "overlay=x=10:y=10" output_video.mp4

在输入视频的坐标 (10,10) 处添加一个图片水印。

为视频添加文字水印:
bash 复制代码
ffmpeg -i input_video.mp4 -vf "drawtext=text='Watermark Text':fontfile=/path/to/font.ttf:fontsize=50:x=100:y=100:fontcolor=white:shadowy=2" output_video.mp4

在视频的坐标 (100,100) 处添加文字水印,设置字体、字号、颜色和阴影等参数。

Python操作

给出一个简单的示例,将视频转为720p

主要是用subprocess来执行拼接构建的ffmpeg命令

python 复制代码
import subprocess

def convert_video(input_file, output_file, target_width=720, target_height=1280):
    # 构建 FFmpeg 命令
    ffmpeg_cmd = [
        'ffmpeg',
        '-i', input_file,
        '-y',  # 添加此行来自动覆盖现有文件
        '-vf',
        f"scale='{target_width}':'{target_height}':force_original_aspect_ratio=increase,crop='{target_width}':'{target_height}'",
        output_file
    ]

    # 执行 FFmpeg 命令
    subprocess.run(ffmpeg_cmd, check=True)
相关推荐
沐晓时光几秒前
C语言入门,深入理解指针(2)
c语言·开发语言
vx_Biye_Design几秒前
django就业信息推荐系统61953-计算机课程设计、毕业设计
java·vue.js·spring boot·python·架构·django·课程设计
零基础12310 分钟前
VoiceStudio 开源项目深度解析:特性、对比与实战测试
人工智能·经验分享·python·开源
2601_9628857214 分钟前
如何用 Python 做均线粘合选股?(多头发散前的变盘候选)
开发语言·python
zhangzeyuaaa16 分钟前
Ruby 方法参数完全指南:默认值、可变参数与关键字参数
前端·python·ruby
2601_9620715719 分钟前
类变量和全局变量的隔离性有什么区别?
java·开发语言·jvm
Maynor99620 分钟前
6张商品图→17秒带货短视频:开源12个Claude Skills,配音、字幕花字、BGM本地一条命令出片
ffmpeg·ai编程·claude·电商·agent skills
小小张说故事22 分钟前
pytest 写了用例却不跑、fixture 不生效、参数化全失效?9 个高频坑对照表
python
海绵宝宝转agent26 分钟前
LeetCode100 LRU缓存思路讲解
java·开发语言·缓存
外收内放33 分钟前
08 | 优化篇③ 60 张动作立绘和 50 张特效贴图是怎么进游戏的
python·游戏·pygame