Ffmpeg安装和简单使用

Ffmpeg安装

下载并解压

进入官网 (https://ffmpeg.org/download.html),选择 Window

image-20240606132009520

然后再打开的页面中下滑找到 release builds,点击 zip 文件下载

image-20240606132116466

环境变量配置

下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件

image-20240606132416557

image-20240606132445125

然后复制这个 bin 目录地址

image-20240606132543962

然后再环境变量中的 Path 中添加保存即可

image-20240606132700052

测试运行

打开cmd,输入 ffmpeg -version 测试

image-20240606132806315

mp4转ts文件

命令

ffmpeg -y -i 你的视频地址.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb ts文件输出地址.ts

参数解释

  1. ffmpeg:
    • 命令行工具的名称,用于处理多媒体文件。
  2. -y:
    • 这个选项告诉 ffmpeg 在输出文件已存在时,无需提示直接覆盖目标文件。
  3. -i 你的视频地址.mp4:
    • -i 表示输入文件。
    • 你的视频地址.mp4 是输入视频文件的路径或文件名。
  4. -vcodec copy:
    • -vcodec-c:v 指定视频编解码器。
    • copy 表示直接复制视频流而不重新编码。
  5. -acodec copy:
    • -acodec-c:a 指定音频编解码器。
    • copy 表示直接复制音频流而不重新编码。
  6. -bsf:v h264_mp4toannexb:
    • -bsf:v 表示对视频流应用位流过滤器(Bitstream Filter)。
    • h264_mp4toannexb 是具体的位流过滤器,作用是将 H.264 内容从 MP4 的格式转换为 TS 中使用的 Annex B 格式。这是因为 MP4 中 H.264 使用的是一种不同的封装格式,不适合直接存储在 TS 容器中。
  7. ts文件输出地址.ts:
    • 指定输出文件的路径或文件名,这里是一个 TS 格式文件。

示例

ffmpeg -y -i D:\javaLogs\filePan\files\114\大屏视频.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb D:\javaLogs\filePan\files\114\大屏视频.ts

image-20240606133638014

运行结果

image-20240606133724706

生成索引文件.m3u8和切片.ts

在处理视频在线播放时可以将一个大的ts视频文件切成多个小的ts文件,并生成一个m3u8索引文件

命令

ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_list list.m3u8 -segment_time 60 output_dir/output_%04d.ts
  • input.mp4: 输入文件。
  • -c copy: 对视频和音频流进行无损复制。
  • -map 0: 映射所有流。
  • -f segment: 使用 segment 多路复用器。
  • -segment_list list.m3u8: 生成包含所有片段文件名的播放列表文件,这里用 m3u8 格式。
  • -segment_time 60: 每个片段的时长为 60 秒。
  • output_dir/output_%04d.ts: 输出的片段文件(存放在 output_dir 目录,命名为 output_0000.ts, output_0001.ts 等)。

示例

mkdir D:\javaLogs\filePan\files\114\大屏视频

ffmpeg -i D:\javaLogs\filePan\files\114\大屏视频.mp4 -c copy -map 0 -f segment -segment_list D:\javaLogs\filePan\files\114\大屏视频\index.m3u8 -segment_time 60 D:\javaLogs\filePan\files\114\大屏视频\output_%04d.ts

image-20240606134846828

输出的内容

image-20240606134901650

image-20240606134917844

生成视频缩略图

使用 ffmpeg 生成视频缩略图是一项常见任务。在下面的例子中,我将向你展示如何从视频中生成一张或多张缩略图。

生成单个缩略图

假设你希望从视频的特定时间帧生成一张缩略图,例如在视频的第 30 秒生成缩略图,命令如下:

ffmpeg -i 你的视频地址.mp4 -ss 00:00:30 -vframes 1 -q:v 2 缩略图输出路径.jpg

参数解释

  • -i 你的视频地址.mp4: 输入视频文件。
  • -ss 00:00:30: 定位到视频的第 30 秒。也可以使用更精确的时间格式,比如 00:01:30.500 表示 1 分 30 秒之后的第 500 毫秒。
  • -vframes 1: 指定只输出一帧图片。
  • -q:v 2: 设置输出图片的质量。数值范围为 1-31,数值越小质量越高,2 是一个常用的高质量值。
  • 缩略图输出路径.jpg: 输出图片的路径和文件名。

生成多张缩略图

如果你希望从视频中定时生成多张缩略图,例如每隔 10 秒生成一张,命令如下:

ffmpeg -i 你的视频地址.mp4 -vf "fps=1/10" 缩略图输出路径_%03d.jpg

参数解释

  • -i 你的视频地址.mp4: 输入视频文件。
  • -vf "fps=1/10": 使用视频过滤器,每 10 秒生成一帧图片(1/10 表示每 1/10 秒生成一帧)。
  • 缩略图输出路径_%03d.jpg: 输出图片的路径和文件名,%03d 会被替换为当前帧号,生成一系列的图片如 缩略图输出路径_001.jpg缩略图输出路径_002.jpg 等。

示例

以下是示例命令:

生成单个缩略图

ffmpeg -i video.mp4 -ss 00:00:30 -vframes 1 -q:v 2 thumbnail.jpg

image-20240606135440862

image-20240606135505526

生成多张缩略图,每30秒生成一张

ffmpeg -i video.mp4 -vf "fps=1/30" thumbnails_%03d.jpg

image-20240606135729964

image-20240606135754971

视频压缩

使用 ffmpeg 压缩视频是一项常见任务,尤其是在需要减小文件大小以便于存储或传输时。以下是几个基本的例子,涵盖常见的压缩场景。

  1. 使用 H.264 编码器压缩视频

H.264 是一种常用的高效视频压缩标准。你可以使用如下命令将视频压缩为 H.264 格式:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

参数解释

  • -i input.mp4: 输入视频文件。
  • -vcodec libx264: 使用 H.264 编码器。
  • -crf 23: 恒定质量因子,范围为 0(无损)到 51(最差),默认值是 23。数值越小,质量越好,文件越大。数值越大,文件越小,质量越低。
  • -preset medium: 预设参数,决定编码速度与压缩率之间的平衡。常用预设有 ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowmedium 是默认值。
  1. 压缩视频并降低分辨率

如果你不仅想要压缩视频文件大小,还希望降低分辨率,可以使用下面的命令:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

参数解释

  • -vf scale=1280:720: 调整视频分辨率为 1280x720。你可以根据需要设置其他分辨率。
  1. 压缩视频并降低比特率

如果你希望控制视频的比特率,可以使用如下命令:

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

参数解释

  • -b:v 1000k: 设置视频比特率为 1000 kbps。你可以根据需要调整这个值。
  1. 压缩视频音频

如果你希望同时压缩视频和音频,可以添加音频参数:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

参数解释

  • -acodec aac: 使用 AAC 音频编码器。
  • -b:a 128k: 设置音频比特率为 128 kbps。

示例命令

使用 H.264 编码压缩视频

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

压缩视频并降低分辨率

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

压缩视频并设置比特率

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

同时压缩视频和音频

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

运行这些命令时,请确保输入文件路径正确,并且你有输出目录的写入权限

图片生成缩略图

使用ffmpeg生成缩略图

以下是使用ffmpeg生成128x128像素缩略图的命令:

ffmpeg -i input.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

参数解释

  • -i input.jpg:输入图片文件。
  • -vf "thumbnail,scale=128:128":使用缩略图滤镜和缩放滤镜,将图片缩放至128x128像素。
  • -frames:v 1:仅输出一帧图像。
  • output_thumbnail.jpg:生成的缩略图文件名。

示例

ffmpeg -i ./大屏视频.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

image-20240606141411531

image-20240606141426973

更多其他用法

可参考:https://blog.csdn.net/m0_37624402/article/details/125123818

官方文档:https://ffmpeg.org/ffmpeg.html#Options

### 如何安装 FFmpeg #### Windows 系统上的安装方法 在 Windows 上安装 FFmpeg 主要分为以下几个部分: - **下载 FFmpeg**: 用户可以从官方站点获取适合于 Windows 的预编译二进制文件[^2]。访问官网链接 http://ffmpeg.org/releases/ 并选择合适的版本进行下载。 - **解压缩文件**: 将已下载的 ZIP 文件提取至指定位置,比如 `C:\ffmpeg`。 - **添加到系统路径 (可选)**: 为了能够在任何地方通过命令行调用 FFmpeg,需将其加入系统的 PATH 环境变量中。具体操作如下: - 右击“此电脑”或者“我的电脑”,进入“属性”。 - 转向“高级系统设置”,随后点击“环境变量”按钮。 - 找寻名为 “Path”的系统变量并选取之,接着按“编辑”键。 - 添加新条目指向 FFmpeg 的 bin 子目录,形如 `C:\ffmpeg\bin`。 - **验证安装情况**: 启动 CMD 终端窗口,输入指令 `ffmpeg -version` 来确认是否能正常显示软件版本号。一旦成功展示版本详情,则表明安装无误[^1]。 #### macOS 系统下的安装指导 对于 macOS 用户而言,推荐利用 Homebrew 工具简化整个流程: - 开始之前,请先确保 Mac 设备已经安装好 Homebrew 包管理器。 - 接着执行终端命令 `brew install ffmpeg` 进行自动化的安装过程[^5]。 完成上述步骤之后同样可以通过运行 `ffmpeg -version` 查看当前所使用FFmpeg 版本信息以检验成果。 ```bash $ brew install ffmpeg ``` #### Linux 发行版中的处理方式 针对主流 Linux 发布版本来说,一般都内置有包管理系统支持快速部署 FFmpeg 应用程序实例: - 对 Debian 或 Ubuntu 类型的操作系统适用APT-get 方法: ```bash sudo apt update && sudo apt install ffmpeg ``` - CentOS/RHEL 则依赖 YUM/Yum-DNF 实现相似功能: ```bash yum install epel-release yum install ffmpeg ``` 最后再次强调,在各平台均应尝试发出 `ffmpeg -version` 测试语句来核实最终状态[^3]。 ```python import subprocess def check_ffmpeg_version(): try: result = subprocess.run(['ffmpeg', '-version'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = result.stdout.decode('utf-8') if 'not found' not in output and 'FFmpeg version' in output: print("FFmpeg is installed correctly.") else: print("FFmpeg installation failed or incorrect path setup.") except Exception as e: print(f"Error occurred while checking FFmpeg version: {e}") check_ffmpeg_version() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值