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)
相关推荐
大数据魔法师11 小时前
Streamlit(十二)- API 参考文档(五)- 输入组件
python·web
会编程的土豆11 小时前
Go 里的 error 接口 + 假 nil(超级重点)
开发语言·后端·golang
愿天垂怜11 小时前
【C++脚手架】ffmpeg 库的介绍与使用
linux·服务器·开发语言·c++·ide·git·ffmpeg
涛声依旧-底层原理研究所11 小时前
Node.js在高并发低延迟场景中的优势
java·人工智能·python·node.js
并不喜欢吃鱼11 小时前
从零开始 C++-----十一【C++ 数据结构】红黑树全解析:从定义到工程实现(一文搞定,十分详细)
开发语言·数据结构·c++
不会C语言的男孩11 小时前
C++ Primer Plus 第7章:函数——C++的编程模块
开发语言·c++
方也_arkling11 小时前
【Java-Day09】继承
java·开发语言
迈巴赫车主11 小时前
蓝桥杯21247弹跳鞋java
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
凯丨11 小时前
200 行 Python 训练一个 GPT:Karpathy 的极简主义 AI 教育实验
人工智能·python·gpt
SoftLipaRZC11 小时前
C语言数据在内存中的存储:整型与浮点型的秘密
c语言·开发语言