强大开源的音视频处理工具ffmpeg安装与使用
ffmpeg
-
FFmpeg 是一个开源的跨平台音视频处理工具,提供了丰富的命令行模式下音视频处理功能,包括格式转换、编解码、过滤器应用等。
由于 FFmpeg 支持的格式广泛,且可用于多个平台和操作系统(如 Windows、Linux、MacOS 等),因此它已成为许多多媒体应用程序和服务的核心组件。例如:
- 在许多流媒体服务(如 Twitch)中,FFmpeg 用于将实时流视频或音频编码并推送到服务器端。
- 在某些免费或商业的视频编辑软件中,FFmpeg 用于转换不同格式,并进行附加的编解码和音视频处理。
- 在某些用户需要定制化的视频解决方案中,FFmpeg 提供了 API 和库,可以在自定义软件中方便进行集成和调用。
ffmpeg下载
-
官方下载地址:Builds - CODEX FFMPEG @ gyan.dev

- FFmpeg Essential 是 FFmpeg 的精简版本,只包含 FFmpeg 核心库和基本的编解码器。它不能支持所有视频格式和高级功能。如果您只需要最基本的音视频转换功能,则可以选择使用 FFmpeg essential 版本
- FFmpeg Full 版本则包含了绝大部分已支持的编解码器、格式、过滤器和工具,以及其他一些实用插件支持,如 frei0r 和 audiofilter 等。这个版本具备更多的功能和解决方案,适用于那些需要处理更多视频格式和技术的用户。
- 如果您需要更多的编解码器和高级功能(如视频转码、视频截取、视频合并等),则应该选择 FFmpeg full 版本。但如果您只是需要最基本的音视频转换功能,则 FFmpeg essential 版本足够满足您的需求。
-
个人百度网盘分享
- 链接:https://pan.baidu.com/s/1G5mtagueZvGmOadw00huJw?pwd=y8b8
提取码:y8b8
- 链接:https://pan.baidu.com/s/1G5mtagueZvGmOadw00huJw?pwd=y8b8
ffmpeg安装(Windows)
-
下载后解压把bin目录路径复制(eg:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QscJDoJS-1686190926590)(../images/image-20230607231023086.png)]](https://img-blog.csdnimg.cn/5651cb2b6d0749d2a0a7642e8102c47f.png)
-
添加到环境变量中,为了方便我们在命令行或其他程序中访问特定的文件、目录、工具或库。(在操作系统中,环境变量主要用于指示程序在哪里可以找到需要的资源和组件。
-
找不到环境变量窗口可直接在win搜索环境变量
![- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrWGtec1-1686190926590)(../images/image-20230607231307938.png)]](https://img-blog.csdnimg.cn/252d8f3eb744434081f424ec033cf221.png)
-
以上选择新建把路径粘贴即可
-
-
测试是否安装成功
-
Win+r输入cmd打开命令行窗口 输入
ffmpeg回车

-
如弹出以上信息表示配置成功
-
如果没有可能是配置的环境变量没有生效有以下方法:
- 重启下电脑(简单粗暴)
- 或者先关闭当前所有命令行窗口,然后Win+r 输入
PowerShell打开新的命令行窗口 执行命令refreshenv但是还是需要安装powershell的第三方脚本这边不详说 (还是建议选择简单粗暴的方法)
-
ffmpeg使用
FFmpeg 是一个功能强大的开源多媒体框架,它可以用于处理和转换音频、视频和图像。以下是一些常见的 FFmpeg 使用场景及其相应的命令和参数讲解:
-
视频转码:
- 命令:
ffmpeg -i input.mp4 output.avi - 参数:
-i input.mp4:指定输入文件(input.mp4)。output.avi:指定输出文件(output.avi)。
- 命令:
-
视频剪辑和裁剪:
- 命令:
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 output.mp4 - 参数:
-ss 00:00:10:指定从输入视频的第10秒开始剪辑。-t 00:00:30:指定剪辑的时长为30秒。output.mp4:指定输出文件。
- 命令:
-
视频旋转:
- 命令:
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 - 参数:
-vf "transpose=1":指定进行视频旋转操作,此处的 transpose=1 表示顺时针旋转90度。output.mp4:指定输出文件。
- 命令:
-
提取音频:
- 命令:
ffmpeg -i input.mp4 -vn -acodec copy output.mp3 - 参数:
-vn:禁用视频流。-acodec copy:保持原始音频编码方式。output.mp3:指定输出音频文件。
- 命令:
-
调整音量:
- 命令:
ffmpeg -i input.mp3 -af "volume=2" output.mp3 - 参数:
-af "volume=2":指定音频增益为2(增加音量)。output.mp3:指定输出文件。
- 命令:
-
视频截图:
- 命令:
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.jpg - 参数:
-ss 00:00:05:指定截取视频的第5秒作为截图时间点。-vframes 1:指定只截取一帧作为输出。output.jpg:指定输出截图文件。
- 命令:
-
添加水印:
- 命令:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4 - 参数:
-i watermark.png:指定水印图像文件。-filter_complex "overlay=W-w-10:H-h-10":指定在视频的右下角添加水印,水印位置距离右下角边界为10个像素。output.mp4:指定输出文件。
- 命令:
-
音频合并:
- 命令:
ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex "amix=inputs=2:duration=first" output.mp3 - 参数:
-i input1.mp3 -i input2.mp3:指定要合并的音频文件。-filter_complex "amix=inputs=2:duration=first":指定合并两个音频输入,并设置输出时长与第一个输入音频相同。output.mp3:指定输出文件。
- 命令:
-
视频加速或减速:
- 命令:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4 - 参数:
-filter:v "setpts=0.5*PTS":指定将视频加速为原来的两倍速度(0.5表示减速为原来的一半速度)。output.mp4:指定输出文件。
- 命令:
-
视频转换为 GIF:
- 命令:
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif output.gif - 参数:
-vf "fps=10,scale=320:-1:flags=lanczos":指定设置帧率为10,宽度为320像素,并使用 lanczos 算法进行缩放。-c:v gif:指定输出文件格式为 GIF。output.gif:指定输出文件。
- 命令:
-
转换音频格式:
- 命令:
ffmpeg -i input.wav output.mp3 - 参数:
-i input.wav:指定输入音频文件。output.mp3:指定输出音频文件。
- 命令:
-
视频加速和音频保持同步:
- 命令:
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4 - 参数:
-filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]":指定视频加速为原来的两倍速度,同时音频速度也加倍,保持同步。-map "[v]" -map "[a]":指定选择加速后的视频和音频流。output.mp4:指定输出文件。
- 命令:
-
视频画面模糊效果:
- 命令:
ffmpeg -i input.mp4 -filter_complex "[0:v]boxblur=luma_radius=10:luma_power=1:chroma_radius=5:chroma_power=1[v]" -map "[v]" output.mp4 - 参数:
-filter_complex "[0:v]boxblur=luma_radius=10:luma_power=1:chroma_radius=5:chroma_power=1[v]":指定对视频应用模糊效果,其中 luma_radius 和 chroma_radius 控制模糊半径,luma_power 和 chroma_power 控制模糊强度。-map "[v]":指定选择处理后的视频流。output.mp4:指定输出文件。
- 命令:
-
视频拼接:
- 命令:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4 - 参数:
-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]":指定将两个视频拼接在一起,concat 参数中的 n 指定输入的数量,v 和 a 分别表示视频和音频流,outv 和 outa 是输出的视频和音频流。-map "[outv]" -map "[outa]":指定选择拼接后的视频和音频流。output.mp4:指定输出文件。
- 命令:
-
视频画面修复:
- 命令:
ffmpeg -i input.mp4 -vf "deshake" output.mp4 - 参数:
-vf "deshake":指定应用抖动修复滤镜,用于减少视频中的抖动。output.mp4:指定输出文件。
- 命令:
-
视频转换为黑白:
- 命令:
ffmpeg -i input.mp4 -vf "hue=s=0" output.mp4 - 参数:
-vf "hue=s=0":指定将视频转换为黑白效果。output.mp4:指定输出文件。
- 命令:
-
调整音频音调:
- 命令:
ffmpeg -i input.mp3 -af "asetrate=48000,atempo=1.5" output.mp3 - 参数:
-af "asetrate=48000,atempo=1.5":指定将音频采样率设为 48000,并将音频速度加快为原来的 1.5 倍。output.mp3:指定输出文件。
- 命令:
-
视频倒放:
- 命令:
ffmpeg -i input.mp4 -vf "reverse" -af "areverse" output.mp4 - 参数:
-vf "reverse":指定反转视频帧的顺序。-af "areverse":指定反转音频帧的顺序。output.mp4:指定输出文件
- 命令:
-
视频加密:
- 命令:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -encryption_scheme cenc-aes-ctr -encryption_key 0123456789ABCDEF -encryption_kid 0123456789ABCDEF output.mp4 - 参数:
-c:v libx264 -c:a aac:指定视频编码器为 libx264,音频编码器为 AAC。-encryption_scheme cenc-aes-ctr:指定加密方案为 CENC AES-CTR。-encryption_key 0123456789ABCDEF:指定加密密钥。-encryption_kid 0123456789ABCDEF:指定加密密钥标识。output.mp4:指定输出文件。
- 命令:
-
视频添加字幕:
- 命令:
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4 - 参数:
-vf "subtitles=subtitles.srt":指定在视频上添加字幕,subtitles.srt 是字幕文件。output.mp4:指定输出文件。
- 命令:
-
视频去噪:
- 命令:
ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4 - 参数:
-vf "hqdn3d":指定应用去噪滤镜,用于减少视频中的噪点。output.mp4:指定输出文件。
- 命令:
-
音频分离:
- 命令:
ffmpeg -i input.mp4 -vn -acodec copy audio.mp3 - 参数:
-vn:禁用视频流。-acodec copy:保持原始音频编码方式。audio.mp3:指定输出音频文件。
- 命令:
-
视频加入背景音乐:
- 命令:
ffmpeg -i input.mp4 -i music.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map 0:v -map "[aout]" -c:v copy -c:a aac -shortest output.mp4 - 参数:
-i music.mp3:指定背景音乐文件。-filter_complex "[0:a][1:a]amerge=inputs=2[aout]":指定将视频的音频流和背景音乐进行合并。-map 0:v -map "[aout]":指定选择视频流和合并后的音频流。-c:v copy -c:a aac:指定保持视频流不变,音频流使用 AAC 编码。-shortest:指定输出时以较短的流为准。output.mp4:指定输出文件。
- 命令:
-
视频画面裁剪:
- 命令:
ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4 - 参数:
-vf "crop=w:h:x:y":指定裁剪视频画面,w 和 h 是裁剪后的宽度和高度,x 和 y 是裁剪的起始点坐标。output.mp4:指定输出文件
- 命令:
-
视频画面旋转:
- 命令:
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 - 参数:
-vf "transpose=1":指定将视频画面逆时针旋转 90 度。output.mp4:指定输出文件。
- 命令:
-
视频加入特效:
- 命令:
ffmpeg -i input.mp4 -vf "eq=brightness=0.2" output.mp4 - 参数:
-vf "eq=brightness=0.2":指定应用特效滤镜,这里是调整视频亮度为 0.2。output.mp4:指定输出文件。
- 命令:
-
视频转换为动画图像序列:
- 命令:
ffmpeg -i input.mp4 -vf "fps=10" output_%03d.png - 参数:
-vf "fps=10":指定设置输出帧率为 10 帧每秒。output_%03d.png:指定输出图像序列的文件名格式,其中 %03d 表示帧序号。
- 命令:
-
视频加入背景模糊效果:
- 命令:
ffmpeg -i input.mp4 -filter_complex "[0:v]boxblur=luma_radius=10:luma_power=1:chroma_radius=5:chroma_power=1[v];[0:a]anull[a]" -map "[v]" -map "[a]" output.mp4 - 参数:
-filter_complex "[0:v]boxblur=luma_radius=10:luma_power=1:chroma_radius=5:chroma_power=1[v];[0:a]anull[a]":指定在视频上应用模糊效果,并将音频流设置为无声。-map "[v]" -map "[a]":指定选择处理后的视频和音频流。output.mp4:指定输出文件。
- 命令:
-
音频剪辑:
- 命令:
ffmpeg -i input.mp3 -ss 00:00:30 -to 00:01:30 -c copy output.mp3 - 参数:
-ss 00:00:30 -to 00:01:30:指定从音频的第 30 秒到第 1 分 30 秒进行剪辑。-c copy:指定直接复制音频流,以保持无损剪辑。output.mp3:指定输出文件
- 命令:
- 这里不过多列举详情请查询官方文档进行进一步自定义配置
- Documentation (ffmpeg.org)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
