Back to blog
Dec 28, 2024
3 min read

ffmpeg 简明教程

ffmpeg是一个开源的、跨平台的音视频处理工具,本文是对它使用方法的一个简明教程

FFmpeg 简明教程

1. 什么是 FFmpeg?

FFmpeg 是一个开源的、跨平台的音视频处理工具,它包含了大量的库和程序,可以用来录制、转换、编辑、播放几乎所有格式的音视频文件。简而言之,FFmpeg 是一个功能强大的音视频处理瑞士军刀。

  • 核心组件:

    • ffmpeg: 用于命令行转码、录制、处理音视频的工具。
    • ffprobe: 用于查看音视频文件的详细信息的工具。
    • ffplay: 一个简单的命令行播放器。
    • libavcodec: 音视频编解码库。
    • libavformat: 音视频封装格式库。
  • 特点:

    • 免费开源: 可以免费使用,并且可以根据需要修改和扩展。
    • 跨平台: 支持 Windows、macOS、Linux 等多种操作系统。
    • 支持格式广泛: 可以处理几乎所有主流的音视频格式。
    • 功能强大: 支持转码、剪辑、合并、水印、滤镜等多种操作。
    • 命令行工具: 所有操作都通过命令行完成,虽然有一定的学习曲线,但非常高效。

2. FFmpeg 的应用领域

FFmpeg 的应用领域非常广泛,主要包括以下几个方面:

  • 音视频转码: 将视频从一种格式转换为另一种格式(例如:MP4 转 AVI,MOV 转 MKV)。
  • 音视频剪辑: 剪切视频片段,裁剪、拼接视频,添加水印、字幕。
  • 音视频编辑: 修改音量、速度,添加滤镜,进行图像处理。
  • 录制屏幕和摄像头: 录制桌面操作过程或摄像头视频。
  • 网络流媒体: 处理在线流媒体视频,如直播、点播。
  • 视频分析: 分析视频文件,提取帧数据、音频数据等。
  • 图像处理: 处理图像文件,进行格式转换、缩放、旋转等。
  • 游戏开发: 游戏开发中使用的音视频处理。
  • 数字媒体内容创作: 视频编辑、动画制作等。

3. FFmpeg 的基础用法

FFmpeg 的核心是命令行工具 ffmpeg,以下是一些常用的基础用法示例:

  • 基本语法:

    ffmpeg [全局选项] {[输入选项] -i 输入文件} ... {[输出选项] 输出文件}
    • [全局选项]: 设置一些全局参数,如日志级别等。
    • [输入选项]: 设置输入文件的参数,如起始时间、时长等。
    • -i 输入文件: 指定输入文件的路径。
    • [输出选项]: 设置输出文件的参数,如视频编码、音频编码、分辨率等。
    • 输出文件: 指定输出文件的路径。
  • 示例:

    1. 将 MP4 文件转换为 AVI 文件:

      ffmpeg -i input.mp4 output.avi
    2. 将 MP4 文件转换为 MP3 音频:

      ffmpeg -i input.mp4 output.mp3
    3. 改变视频分辨率:

      ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
    4. 剪切视频片段(从 10 秒开始,持续 5 秒):

      ffmpeg -i input.mp4 -ss 10 -t 5 output.mp4
    5. 添加水印(logo.png 作为水印):

      ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4
    6. 合并两个视频:

      ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v] [1:v] concat=n=2:v=1:a=0 [v]" -map "[v]" output.mp4
    7. 录制屏幕(Linux):

       ffmpeg -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0 output.mp4
    8. 录制摄像头:

      ffmpeg -f v4l2 -i /dev/video0 output.mp4

      (注意:/dev/video0 是 Linux 下的摄像头设备路径,Windows 和 macOS 下需要替换)

  • 常用选项:

    • -i: 指定输入文件。
    • -ss: 指定起始时间(秒)。
    • -t: 指定持续时间(秒)。
    • -c:v: 指定视频编码器 (例如: libx264, libx265)。
    • -c:a: 指定音频编码器 (例如: aac, libmp3lame)。
    • -vf: 指定视频滤镜 (例如: scale, crop)。
    • -af: 指定音频滤镜。
    • -ar: 指定音频采样率。
    • -b:v: 指定视频码率。
    • -b:a: 指定音频码率。
    • -r: 指定帧率。
    • -pix_fmt: 指定像素格式 (例如: yuv420p)。

4. 学习资源

  • FFmpeg 官方文档: https://ffmpeg.org/documentation.html (最权威的参考资料)
  • 在线教程: 网上有大量的 FFmpeg 教程和示例,可以搜索学习。
  • 社区: 加入 FFmpeg 社区,与其他用户交流学习。

总结

FFmpeg 是一款功能强大的音视频处理工具,掌握其基本用法可以让你轻松处理各种音视频任务。 这份教程只是一个入门,建议你多加练习和学习,以便更好地掌握 FFmpeg 的强大功能。 希望这个教程对你有所帮助!