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)
相关推荐
ituff7 小时前
微软认证考试又免费了
后端·python·flask
郝学胜-神的一滴8 小时前
Linux命名管道:创建与原理详解
linux·运维·服务器·开发语言·c++·程序人生·个人开发
2501_941623328 小时前
C++高性能网络服务器与epoll实战分享:大规模并发连接处理与事件驱动优化经验
开发语言·php
晚风(●•σ )8 小时前
C++语言程序设计——11 C语言风格输入/输出函数
c语言·开发语言·c++
likuolei8 小时前
XML 元素 vs. 属性
xml·java·开发语言
X***48968 小时前
C源代码生成器
c语言·开发语言
梁正雄8 小时前
2、Python流程控制
开发语言·python
catchadmin9 小时前
PHP True Async RFC 被拒——原生异步离 PHP 还有多远?
开发语言·php
J***79399 小时前
PHP在电商中的Magento
开发语言·php
python零基础入门小白10 小时前
【万字长文】大模型应用开发:意图路由与查询重写设计模式(从入门到精通)
java·开发语言·设计模式·语言模型·架构·大模型应用开发·大模型学习