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)
相关推荐
Swift社区14 分钟前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht15 分钟前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht18 分钟前
Swift闭包的本质
开发语言·ios·swift
wjs202421 分钟前
Swift 数组
开发语言
stm 学习ing1 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc2 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe3 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin3 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python