ffmpeg合成视频

news/2025/2/7 13:57:18/

记录下ffmpeg如何安装配置,以及如何合成视频。

一、安装ffmpeg

1、下载ffmpeg安装包

打开 Dpwnload FFmpeg 官网,选择安装包Windows builds from gyan.dev

2、下滑找到release bulids部分,选择ffmpeg-7.0.2-essentials_build.zip

3、下载完成后,解压缩得到 FFmpeg 文件夹。 

解压文件并检查目录结构
解压后的文件夹中应包含以下目录:

bin:FFmpeg 可执行文件所在的文件夹,运行 FFmpeg 的所有命令都需通过此目录下的文件。
doc:文档资料。
presets:预设的格式和编码方案。
进入 bin 目录,可以看到 FFmpeg 的三个核心可执行文件:ffmpeg.exe、ffplay.exe、ffprobe.exe。

4. 配置环境变量

为了方便在命令行中直接调用 FFmpeg,需要将其添加到系统的环境变量中。

在桌面左下角开始菜单搜索"菜单",找到"编辑编辑环境变量",然后点击打开。

 5、重启电脑后查看是否生效

ffmpeg -version

6、命令行参数

-i    输入文件路径(被转换的 MP4 文件)
-f    输出文件格式设置为 mpegts
-codec:v    指定视频编码器为 mpeg1video
-b:v    设置输出视频比特率为 2000k
-r    设置帧速率为 30
-bf    设置 B 帧数量为 0
-codec:a    指定音频编码器为 mp2
-ar    设置音频采样频率为 44100
-ac    设置音频通道数为 1
-b:a    设置音频比特率为 128k

二、ffmpeg-python应用

1、安装ffmpeg-python

首先需要安装第一步ffmpeg,才能使用ffmpeg-python

pip install ffmpeg-python

2、获取音频、视频信息


def get_video_info(source_video_path):probe = ffmpeg.probe(source_video_path)format = probe['format']duration = format['duration']bit_rate = int(format['bit_rate'])/1000duration = format['duration']size = int(format['size'])/1024/1024video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)if video_stream is None:print('No video stream found!')returnwidth = int(video_stream['width'])height = int(video_stream['height'])fps = int(video_stream['r_frame_rate'].split('/')[0])/int(video_stream['r_frame_rate'].split('/')[1])duration = float(video_stream['duration'])print('width: {}'.format(width))print('height: {}'.format(height))print('bit_rate: {}k'.format(bit_rate))print('fps: {}'.format(fps))print('size: {}MB'.format(size))print('duration: {}'.format(duration))

3、转换视频格式

def convert_video():input_file = 'added.mp4'output_file = 'added.avi'ffmpeg.input(input_file).output(output_file).run()

4、调整视频比特率

def bitrate_video():input_file = 'added.mp4'output_file = 'added.avi'# 使用 b 参数调整输出视频的比特率ffmpeg.input(input_file).output(output_file, b=500000).run()

5、裁剪视频

def crop_video():input_file = 'added.mp4'output_file = 'added_crop.mp4'#使用 filter 方法裁剪视频到指定尺寸。ffmpeg.input(input_file).filter('crop',320,240).output(output_file).run()

6、合并视频

def concat_video():video_list = ["added.mp4","final.mp4"]v_in_arr = []for fn in video_list:inv = ffmpeg.input(fn)v_in_arr.append(inv)output_file = 'concated.mp4'ffmpeg.concat(*v_in_arr).output(output_file).run()

7、音频提取

def extract_video():input_file = 'added.mp4'output_file = 'added_audio.mp4'#使用 filter 方法裁剪视频到指定尺寸。ffmpeg.input(input_file).output(output_file, acodec='libmp3lame').run()

8、添加配音

def add_audio():input_file = 'output.mp4'audio_file = 'music.mp3'output_file = 'added.mp4'audio = ffmpeg.input(audio_file) # 配音video = ffmpeg.input(input_file) # 无声视频out = ffmpeg.input(input_file).output(audio,output_file,vcodec='copy',acodec='aac',shortest=None)out.run()# 命令如下:# os.system('ffmpeg -i output.mp4 -i music.mp3 -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -shortest final.mp4')


http://www.ppmy.cn/news/1570078.html

相关文章

自定义数据集 使用scikit-learn中svm的包实现svm分类

代码: import numpy as np # 导入用于数值计算的库 import matplotlib.pyplot as plt # 导入用于绘图的库# class1_points 和 class2_points 分别定义了两个类别的数据点,二维坐标 class1_points np.array([[1.9, 1.2],[1.5, 2.1],[1.9, 0.5],[1.5, …

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行(下载) 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…

Pytest+selenium UI自动化测试实战实例

今天来说说pytest吧,经过几周的时间学习,有收获也有疑惑,总之最后还是搞个小项目出来证明自己的努力不没有白费。 环境准备 1 确保您已经安装了python3.x 2 配置python3pycharmselenium2开发环境 3 安装pytest库pip install p…

Go 中 defer 的机制

文章目录 Go 语言中 defer 的底层机制与实战解析一、defer 的执行顺序:后进先出(LIFO)示例 :多个 defer 的执行顺序 二、defer 的参数预计算:值拷贝的陷阱示例 :参数预计算的影响 三、defer 与闭包&#xf…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_vslprintf 函数

ngx_vslprintf 声明 ngx_vslprintf的声明在 ngx_string.h 中: u_char *ngx_vslprintf(u_char *buf, u_char *last, const char *fmt, va_list args); ngx_vslprintf 实现 ngx_string.c 中 ngx_vslprintf 函数的定义 u_char * ngx_vslprintf(u_char *buf, u_char…

vscode修改自定义模板

vscode修改自定义模板 打开命令面板:你可以通过快捷键 CtrlShiftP(Windows/Linux)或CmdShiftP(macOS)打开命令面板。输入并选择“首选项: 配置用户代码片段”:在命令面板中输入 Preferences:Configure Use…

PEP8代码规范

文章目录 波浪线 波浪线 不同UI下可能会有差异,但可做通用参考 红色 代码错误,必须处理!代码才能正常运行 – 代码未顶格 – 代码未写完灰色 建议改进,不会影响代码正常执行,可以通过ide的格式规范调整 – 注释缺少空…

可靠冲突性多视角学习:通过证据驱动的多视角融合提供决策可靠性

2024年2月28日,由多位作者联合提出了一种名为可靠冲突性多视角学习(RCML)的框架,其核心贡献在于为含有冲突性实例的多视角数据提供决策结果与可靠性评估。该方法通过证据驱动的多视角融合(ECML)策略&#x…