强大开源的音视频处理工具ffmpeg安装与使用

ffmpeg

  • FFmpeg 是一个开源的跨平台音视频处理工具,提供了丰富的命令行模式下音视频处理功能,包括格式转换、编解码、过滤器应用等。

    由于 FFmpeg 支持的格式广泛,且可用于多个平台和操作系统(如 Windows、Linux、MacOS 等),因此它已成为许多多媒体应用程序和服务的核心组件。例如:

    • 在许多流媒体服务(如 Twitch)中,FFmpeg 用于将实时流视频或音频编码并推送到服务器端。
    • 在某些免费或商业的视频编辑软件中,FFmpeg 用于转换不同格式,并进行附加的编解码和音视频处理。
    • 在某些用户需要定制化的视频解决方案中,FFmpeg 提供了 API 和库,可以在自定义软件中方便进行集成和调用。

ffmpeg下载

  • 官方下载地址:Builds - CODEX FFMPEG @ gyan.dev

    强大开源的音视频处理工具ffmpeg安装与使用_第1张图片

    • FFmpeg Essential 是 FFmpeg 的精简版本,只包含 FFmpeg 核心库和基本的编解码器。它不能支持所有视频格式和高级功能。如果您只需要最基本的音视频转换功能,则可以选择使用 FFmpeg essential 版本
    • FFmpeg Full 版本则包含了绝大部分已支持的编解码器、格式、过滤器和工具,以及其他一些实用插件支持,如 frei0r 和 audiofilter 等。这个版本具备更多的功能和解决方案,适用于那些需要处理更多视频格式和技术的用户。
    • 如果您需要更多的编解码器和高级功能(如视频转码、视频截取、视频合并等),则应该选择 FFmpeg full 版本。但如果您只是需要最基本的音视频转换功能,则 FFmpeg essential 版本足够满足您的需求。
  • 个人百度网盘分享

    • 链接:https://pan.baidu.com/s/1G5mtagueZvGmOadw00huJw?pwd=y8b8
      提取码:y8b8

ffmpeg安装(Windows)

  • 下载后解压把bin目录路径复制(eg:

    强大开源的音视频处理工具ffmpeg安装与使用_第2张图片

  • 添加到环境变量中,为了方便我们在命令行或其他程序中访问特定的文件、目录、工具或库。(在操作系统中,环境变量主要用于指示程序在哪里可以找到需要的资源和组件。

    • 找不到环境变量窗口可直接在win搜索环境变量
      强大开源的音视频处理工具ffmpeg安装与使用_第3张图片

    • 以上选择新建把路径粘贴即可

  • 测试是否安装成功

    • Win+r输入cmd打开命令行窗口 输入ffmpeg回车
      强大开源的音视频处理工具ffmpeg安装与使用_第4张图片

    • 如弹出以上信息表示配置成功

    • 如果没有可能是配置的环境变量没有生效有以下方法:

      • 重启下电脑(简单粗暴)
      • 或者先关闭当前所有命令行窗口,然后Win+r 输入PowerShell打开新的命令行窗口 执行命令refreshenv但是还是需要安装powershell的第三方脚本这边不详说 (还是建议选择简单粗暴的方法)

ffmpeg使用

FFmpeg 是一个功能强大的开源多媒体框架,它可以用于处理和转换音频、视频和图像。以下是一些常见的 FFmpeg 使用场景及其相应的命令和参数讲解:

  1. 视频转码:

    • 命令:ffmpeg -i input.mp4 output.avi
    • 参数:
      • -i input.mp4:指定输入文件(input.mp4)。
      • output.avi:指定输出文件(output.avi)。
  2. 视频剪辑和裁剪:

    • 命令: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:指定输出文件。
  3. 视频旋转:

    • 命令:ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
    • 参数:
      • -vf "transpose=1":指定进行视频旋转操作,此处的 transpose=1 表示顺时针旋转90度。
      • output.mp4:指定输出文件。
  4. 提取音频:

    • 命令:ffmpeg -i input.mp4 -vn -acodec copy output.mp3
    • 参数:
      • -vn:禁用视频流。
      • -acodec copy:保持原始音频编码方式。
      • output.mp3:指定输出音频文件。
  5. 调整音量:

    • 命令:ffmpeg -i input.mp3 -af "volume=2" output.mp3
    • 参数:
      • -af "volume=2":指定音频增益为2(增加音量)。
      • output.mp3:指定输出文件。
  6. 视频截图:

    • 命令:ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.jpg
    • 参数:
      • -ss 00:00:05:指定截取视频的第5秒作为截图时间点。
      • -vframes 1:指定只截取一帧作为输出。
      • output.jpg:指定输出截图文件。
  7. 添加水印:

    • 命令: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:指定输出文件。
  8. 音频合并:

    • 命令: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:指定输出文件。
  9. 视频加速或减速:

    • 命令:ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
    • 参数:
      • -filter:v "setpts=0.5*PTS":指定将视频加速为原来的两倍速度(0.5表示减速为原来的一半速度)。
      • output.mp4:指定输出文件。
  10. 视频转换为 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:指定输出文件。
  11. 转换音频格式:

    • 命令:ffmpeg -i input.wav output.mp3
    • 参数:
      • -i input.wav:指定输入音频文件。
      • output.mp3:指定输出音频文件。
  12. 视频加速和音频保持同步:

    • 命令: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:指定输出文件。
  13. 视频画面模糊效果:

    • 命令: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:指定输出文件。
  14. 视频拼接:

    • 命令: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:指定输出文件。
  15. 视频画面修复:

    • 命令:ffmpeg -i input.mp4 -vf "deshake" output.mp4
    • 参数:
      • -vf "deshake":指定应用抖动修复滤镜,用于减少视频中的抖动。
      • output.mp4:指定输出文件。
  16. 视频转换为黑白:

    • 命令:ffmpeg -i input.mp4 -vf "hue=s=0" output.mp4
    • 参数:
      • -vf "hue=s=0":指定将视频转换为黑白效果。
      • output.mp4:指定输出文件。
  17. 调整音频音调:

    • 命令:ffmpeg -i input.mp3 -af "asetrate=48000,atempo=1.5" output.mp3
    • 参数:
      • -af "asetrate=48000,atempo=1.5":指定将音频采样率设为 48000,并将音频速度加快为原来的 1.5 倍。
      • output.mp3:指定输出文件。
  18. 视频倒放:

    • 命令:ffmpeg -i input.mp4 -vf "reverse" -af "areverse" output.mp4
    • 参数:
      • -vf "reverse":指定反转视频帧的顺序。
      • -af "areverse":指定反转音频帧的顺序。
      • output.mp4:指定输出文件
  19. 视频加密:

    • 命令: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:指定输出文件。
  20. 视频添加字幕:

    • 命令:ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4
    • 参数:
      • -vf "subtitles=subtitles.srt":指定在视频上添加字幕,subtitles.srt 是字幕文件。
      • output.mp4:指定输出文件。
  21. 视频去噪:

    • 命令:ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4
    • 参数:
      • -vf "hqdn3d":指定应用去噪滤镜,用于减少视频中的噪点。
      • output.mp4:指定输出文件。
  22. 音频分离:

    • 命令:ffmpeg -i input.mp4 -vn -acodec copy audio.mp3
    • 参数:
      • -vn:禁用视频流。
      • -acodec copy:保持原始音频编码方式。
      • audio.mp3:指定输出音频文件。
  23. 视频加入背景音乐:

    • 命令: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:指定输出文件。
  24. 视频画面裁剪:

    • 命令:ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4
    • 参数:
      • -vf "crop=w:h:x:y":指定裁剪视频画面,w 和 h 是裁剪后的宽度和高度,x 和 y 是裁剪的起始点坐标。
      • output.mp4:指定输出文件
  25. 视频画面旋转:

    • 命令:ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
    • 参数:
      • -vf "transpose=1":指定将视频画面逆时针旋转 90 度。
      • output.mp4:指定输出文件。
  26. 视频加入特效:

    • 命令:ffmpeg -i input.mp4 -vf "eq=brightness=0.2" output.mp4
    • 参数:
      • -vf "eq=brightness=0.2":指定应用特效滤镜,这里是调整视频亮度为 0.2。
      • output.mp4:指定输出文件。
  27. 视频转换为动画图像序列:

    • 命令:ffmpeg -i input.mp4 -vf "fps=10" output_%03d.png
    • 参数:
      • -vf "fps=10":指定设置输出帧率为 10 帧每秒。
      • output_%03d.png:指定输出图像序列的文件名格式,其中 %03d 表示帧序号。
  28. 视频加入背景模糊效果:

    • 命令: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:指定输出文件。
  29. 音频剪辑:

    • 命令: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)

你可能感兴趣的:(音视频处理,音视频,开源软件,经验分享,笔记)