使用FFmpeg压缩MP3格式音频

news2024/11/17 19:50:48

FFmpeg简介

FFmpeg 是一个开源的多媒体框架,能够录制、转换数字音频和视频,并将其转码到流行的格式。它被广泛应用于音视频处理领域,支持几乎所有的音视频格式和编解码器。以下是 FFmpeg 的一些关键特点和功能:

主要特点

  1. 跨平台支持

    • FFmpeg 可以在多个操作系统上运行,包括 Windows、macOS 和 Linux,使其成为一个灵活的选择。
  2. 强大的编解码功能

    • 支持几乎所有音频和视频编码格式,如 MP3、AAC、H.264、H.265、MPEG、AVI、MOV、MKV 等。
  3. 多功能性

    • 提供了一系列工具和库,用于音视频处理,如 ffmpeg(命令行工具)、ffplay(用于播放多媒体文件的工具)和 libavcodeclibavformatlibavutil 等库。
  4. 支持流媒体

    • 能够处理实时流媒体,包括从网络流中抓取和播放视频。
  5. 灵活的命令行界面

    • FFmpeg 的命令行工具允许用户通过简单的命令完成复杂的音视频转换和处理任务。
  6. 脚本化支持

    • 可以通过脚本实现批量处理和自动化任务,适合开发人员和媒体专业人士。

常用功能

  1. 转换格式

    • 可以将音频和视频文件转换为不同的格式。例如,将 MP4 文件转换为 AVI 文件。
    ffmpeg -i input.mp4 output.avi
    
  2. 提取音频

    • 从视频文件中提取音频。
    ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3
    
  3. 压缩和调整比特率

    • 可以调整文件的比特率和大小,以减小文件体积。
    ffmpeg -i input.mp3 -b:a 64k output.mp3
    
  4. 裁剪和合并视频

    • 支持对视频进行裁剪、合并和编辑。
    # 裁剪视频
    ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c copy output.mp4
    
    # 合并视频
    ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4
    
  5. 添加水印和滤镜

    • 可以在视频中添加图像水印或应用各种滤镜效果。
    ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
    
  6. 生成缩略图

    • 从视频中生成缩略图。
    ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 thumbnail.png
    

FFmpeg 是一个功能强大且灵活的工具,适合各种音视频处理任务,从简单的格式转换到复杂的音视频编辑。由于其强大的社区支持和广泛的文档,用户可以轻松找到解决方案和示例以满足他们的需求。

安装FFmpeg

Mac电脑安装ffmpeg

在Mac上安装FFmpeg有几种方法,以下是通过Homebrew安装的最简单方法:

1. 使用Homebrew安装FFmpeg

如果你已经安装了Homebrew,可以通过以下命令来安装FFmpeg:

  1. 打开终端 (Terminal)。
  2. 更新Homebrew:
    brew update
    
  3. 安装FFmpeg:
    brew install ffmpeg
    

这将下载并安装FFmpeg以及其所有必要的依赖项。

2. 检查安装

安装完成后,你可以通过运行以下命令来验证FFmpeg是否正确安装:

ffmpeg -version

这将显示FFmpeg的版本信息,表明它已经成功安装。

3. 安装带有特定编解码器支持的FFmpeg(可选)

FFmpeg可以使用许多不同的编解码器,有时你可能需要特定的编解码器。你可以使用Homebrew来安装带有某些选项的FFmpeg。例如:

brew install ffmpeg --with-opus --with-libvpx
4. 没有Homebrew?

如果没有Homebrew,你可以从FFmpeg官网下载预编译的二进制文件,但Homebrew是推荐的方法,因为它简化了安装和依赖管理。

卸载FFmpeg

要在Mac上卸载FFmpeg,可以使用Homebrew执行以下步骤:

1. 使用Homebrew卸载FFmpeg

如果你是通过Homebrew安装的FFmpeg,可以使用以下命令卸载它:

  1. 打开终端 (Terminal)。
  2. 输入以下命令来卸载FFmpeg:
    brew uninstall ffmpeg
    

这将卸载FFmpeg及其关联的软件包。

2. 检查卸载是否成功

你可以运行以下命令来确认FFmpeg是否被卸载:

ffmpeg

如果显示command not found,则说明FFmpeg已成功卸载。

3. 移除关联的依赖项(可选)

如果你想删除任何与FFmpeg相关的依赖项,可以使用以下命令清理Homebrew中的未使用包:

brew cleanup

这将清理Homebrew中不再需要的依赖项和缓存文件。

MP3格式音频压缩

要对MP3格式音频进行压缩,你可以通过以下几种方法来减少文件大小:

  1. 降低比特率 (Bitrate): MP3 文件的大小与比特率直接相关。标准比特率为 128 kbps 或 192 kbps,但你可以将其降低到 96 kbps 或更低来压缩文件。不过,降低比特率也会影响音质,所以在压缩时需要找到音质和文件大小之间的平衡。

    • 常用工具:FFmpeg
      ffmpeg -i input.mp3 -b:a 96k output.mp3
      
      这条命令将比特率降低到 96 kbps。
  2. 转换为单声道 (Mono): 如果音频是双声道立体声(stereo),你可以将其转换为单声道(mono),这将大幅减少文件大小,但音频的空间感可能会减弱。

    • 使用 FFmpeg:
      ffmpeg -i input.mp3 -ac 1 output.mp3
      
  3. 减少采样率 (Sample Rate): MP3 文件的采样率通常为 44.1 kHz 或 48 kHz,降低采样率可以减少文件大小,例如将其降低到 22.05 kHz,但这也会影响音质。

    • 使用 FFmpeg:
      ffmpeg -i input.mp3 -ar 22050 output.mp3
      
  4. 使用高效编码 (Variable Bitrate, VBR): VBR 是一种根据音频内容动态调整比特率的编码方式。相比固定比特率(CBR),VBR 在相同音质的情况下可以生成较小的文件。

    • 使用 FFmpeg:
      ffmpeg -i input.mp3 -qscale:a 2 output.mp3
      
      其中 -qscale:a 参数控制 VBR 的质量,值越低文件质量越高(1-5 通常是合理范围)。

通过这些方法,你可以有效地压缩 MP3 文件的大小,同时尽量保持音质。

如何查看MP3的各类信息?

要查看 MP3 文件的各种信息(如比特率、采样率、声道数、时长等),你可以使用多种工具。以下是几种常见的方法:

1. 使用 FFmpeg

FFmpeg 是一个强大的多媒体处理工具,可以轻松查看 MP3 文件的详细信息。

  • 查看 MP3 文件的基本信息:

    ffmpeg -i input.mp3
    

    输出结果将显示 MP3 的比特率、采样率、声道数、编码格式、时长等信息。

  • 如果你只想要显示文件信息而不生成任何输出文件,可以使用 ffprobe(FFmpeg 的子工具):

    ffprobe input.mp3
    

2. 使用 VLC 媒体播放器

VLC 不仅是一个播放器,还可以查看音频文件的详细信息。

  • 打开 MP3 文件。
  • 点击菜单中的 “工具” -> “媒体信息”
  • “编解码” 标签中可以查看比特率、采样率、声道等详细信息。

3. 使用 MediaInfo

MediaInfo 是一个开源软件,可以显示音频和视频文件的元数据。它支持多种格式,操作简单。

  • 安装 MediaInfo 后,右键点击 MP3 文件,选择 “MediaInfo”,即可查看文件的详细信息。
  • 也可以通过命令行查看:
    mediainfo input.mp3
    

4. 使用 MP3Tag

MP3Tag 是一个常用的 MP3 标签编辑工具,但也可以显示音频文件的详细信息,尤其是标签和元数据。

5. 使用 Windows 和 macOS 系统自带功能

Windows:
  • 右键点击 MP3 文件,选择 “属性”
  • “详细信息” 标签页,可以看到文件的比特率、采样率、声道数等信息。
macOS:
  • 右键点击 MP3 文件,选择 “显示简介”
  • “更多信息”“编码” 部分,可以看到文件的基本信息。

6. 使用 Python (Mutagen 库)

如果你想在编程环境中处理和提取 MP3 文件的元数据,可以使用 Python 的 mutagen 库。

pip install mutagen

示例代码:

from mutagen.mp3 import MP3

audio = MP3("input.mp3")
print(f"Duration: {audio.info.length} seconds")
print(f"Bitrate: {audio.info.bitrate} bps")
print(f"Sample rate: {audio.info.sample_rate} Hz")
print(f"Channels: {audio.info.channels}")

通过这些工具和方法,你可以轻松获取 MP3 文件的详细信息。

批量压缩MP3音频

你可以使用批处理的方法对多个 MP3 文件进行压缩。以下是几种不同方式来批量压缩 MP3 文件的方法:

1. 使用 Bash 脚本和 FFmpeg

如果你使用的是 Linux 或 macOS 系统,或者在 Windows 上通过 WSL 运行 Linux 环境,你可以编写一个简单的 Bash 脚本来批量处理 MP3 文件。

示例脚本:
#!/bin/bash

# 设置目标比特率
bitrate="96k"

# 创建输出文件夹
output_dir="compressed_mp3s"
mkdir -p "$output_dir"

# 遍历当前目录中的所有 MP3 文件
for file in *.mp3; do
  # 获取文件名,不包含扩展名
  filename=$(basename "$file" .mp3)
  
  # 压缩并输出到目标文件夹
  ffmpeg -i "$file" -b:a $bitrate "$output_dir/${filename}_compressed.mp3"
  
  echo "压缩完成: $file"
done

echo "所有文件压缩完成,保存在 $output_dir 文件夹中。"
  • 将此脚本保存为 compress_mp3.sh,然后给它执行权限:

    chmod +x compress_mp3.sh
    
  • 运行脚本:

    ./compress_mp3.sh
    

这个脚本会将当前目录中的所有 MP3 文件压缩到 96kbps,并将压缩后的文件保存在 compressed_mp3s 文件夹中。

2. 使用 Windows 批处理文件和 FFmpeg

在 Windows 系统中,你可以使用批处理文件(.bat)来实现批量压缩。

示例批处理文件:
@echo off
set bitrate=96k
set output_dir=compressed_mp3s
mkdir %output_dir%

for %%f in (*.mp3) do (
  ffmpeg -i "%%f" -b:a %bitrate% "%output_dir%\%%~nf_compressed.mp3"
  echo 压缩完成: %%f
)

echo 所有文件压缩完成,保存在 %output_dir% 文件夹中。
pause
  • 将以上代码保存为 compress_mp3.bat 文件。
  • 双击运行该文件即可批量压缩当前目录中的所有 MP3 文件。

3. 使用 Python 和 FFmpeg

你也可以使用 Python 脚本来批量压缩 MP3 文件,结合 os 模块来遍历目录,并调用 FFmpeg 命令行。

示例 Python 代码:
import os
import subprocess

# 设置目标比特率
bitrate = "96k"
output_dir = "compressed_mp3s"

# 创建输出文件夹
if not os.path.exists(output_dir):
    os.makedirs(output_dir)

# 遍历当前目录中的所有 MP3 文件
for file in os.listdir():
    if file.endswith(".mp3"):
        # 获取文件名,不包含扩展名
        filename = os.path.splitext(file)[0]
        
        # 构建 FFmpeg 命令
        output_file = f"{output_dir}/{filename}_compressed.mp3"
        cmd = ["ffmpeg", "-i", file, "-b:a", bitrate, output_file]
        
        # 执行命令
        subprocess.run(cmd)
        print(f"压缩完成: {file}")

print(f"所有文件压缩完成,保存在 {output_dir} 文件夹中。")
  • 保存并运行此 Python 脚本,将压缩当前目录下的所有 MP3 文件。

4. 批量处理工具

如果你更喜欢图形界面,以下是一些支持批量 MP3 文件压缩的工具:

  • Audacity: 一款免费的音频编辑工具,支持批量处理音频文件,通过“链”或“宏”功能进行批处理。
  • MP3 Quality Modifier: 专门用于 MP3 压缩和批量处理的工具,操作简单。

通过这些方法,你可以批量压缩多个 MP3 文件,并根据需求选择合适的比特率和其他参数。

多参数压缩音频

你可以使用以下 FFmpeg 命令来压缩音频,同时降低比特率、转换为单声道、减少采样率,并使用高效编码(例如 AAC)。以下是优化后的脚本:

ffmpeg -i 4.mp3 -ac 1 -ar 22050 -b:a 96k -codec:a aac compressed_4.m4a

参数解释:

  • -i 4.mp3: 输入文件为 4.mp3
  • -ac 1: 将音频通道设置为 单声道(1 表示单声道)。
  • -ar 22050: 将采样率降低到 22.05 kHz,这可以减少文件大小。
  • -b:a 96k: 设置音频比特率为 96 kbps,这是一种较低的比特率,适合语音或背景音乐。
  • -codec:a aac: 使用 AAC 编码器,这是一种高效的音频编码格式,通常比 MP3 更高效。
  • compressed_4.m4a: 输出文件名为 compressed_4.m4a,使用 .m4a 扩展名,表示 AAC 编码的音频。

额外建议:

  • 如果你希望保留原 MP3 格式,但仍想实现相同的设置,可以将输出文件扩展名改为 .mp3
ffmpeg -i 4.mp3 -ac 1 -ar 22050 -b:a 96k -codec:a libmp3lame compressed_4.mp3

以上命令将输出压缩后的 MP3 文件,但 AAC 编码通常能提供更好的音质和更小的文件大小,所以推荐使用 .m4a 格式。

批量压缩脚本(推荐使用)

以下是优化后的脚本,旨在尽量减小压缩后音频文件的大小。该脚本设置了较低的比特率、单声道音频和较低的采样率,同时使用高效的 MP3 编码器:

#!/bin/bash
# 说明:此脚本为录音压缩脚本,需要放到录音所在目录执行,前提,自行安装ffmpeg

# 设置目标比特率和采样率
bitrate="64k"     # 设置较低的比特率
sample_rate="22050"  # 设置较低的采样率

# 创建输出文件夹
output_dir="compressed_mp3s"
mkdir -p "$output_dir"

# 遍历当前目录中的所有 MP3 文件
for file in *.mp3; do
  # 获取文件名,不包含扩展名
  filename=$(basename "$file" .mp3)
  
  # 压缩并输出到目标文件夹,转换为单声道,降低采样率,并使用高效 MP3 编码
  ffmpeg -i "$file" -ac 1 -ar "$sample_rate" -b:a "$bitrate" -codec:a libmp3lame "$output_dir/${filename}.mp3"
  
  echo "压缩完成: $file"
done

echo "所有文件压缩完成,保存在 $output_dir 文件夹中。"

关键参数说明:

  1. 比特率:将目标比特率设置为 64k,这通常能显著减少文件大小。
  2. 采样率:采样率设置为 22050 Hz,能够进一步减少文件大小,但请注意音质会有所下降。
  3. 声道:通过 -ac 1 将音频转换为单声道,进一步减小文件大小。
  4. 编码器:使用 libmp3lame 编码器,以便在较低比特率下获得更好的压缩效果。

注意事项:

  • 音质权衡:使用较低的比特率和采样率可能会影响音质,确保根据需要调整参数,以达到最佳的文件大小与音质平衡。
  • 测试和调整:根据音频内容的不同,文件大小的变化可能会有所不同,可以通过尝试不同的比特率来进一步优化压缩效果。例如,尝试 48k32k 等更低的比特率,看看文件大小和音质的变化。

压缩效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stable Diffusion绘画 | SDXL模型使用注意事项

注意事项 SDXL模型的使用,对电脑配置要求更高,需要 8GB 以上显存的显卡SDXL模型兼容性不太好,容易出现错误,对 Mac 电脑不友好只能选择 SDXL模型 训练的 LoRA 使用不能使用旧的 VAE文件 SDXL 专用 VAE 文件:sdxl_vae.…

CEPH的写入流程

1、客户端程序发起对文件的读写请求,ceph前端接口(RADOS Gateway)将文件切分成多个固定大小的对象(默认大小为4MB) 2、计算文件到对象的映射 (1) 计算OID为每个对象分配一个唯一的OID(Object ID&#xff09…

构造+bfs,CF 761E - Dasha and Puzzle

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 761E - Dasha and Puzzle 二、解题报告 1、思路分析 如果一个点的度 >…

[数据集][目标检测]辣椒缺陷检测数据集VOC+YOLO格式695张5类别

重要说明:数据集图片里面都是一个辣椒,请仔细查看图片预览,确认符合要求下载 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文…

时间安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞

漏洞描述 登录--时间&安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞,黑客可以未授权等级员工信息对平台造成影响 FOFA: body"登录--时间&安全精细化管理平台" 漏洞复现 IP/iapp/mobile/facereg…

SIMETRIX 探头和测量

来源:公众号 xuyuntong 随着工作的调整仿真那是越用越多了,在做仿真的时候我们对结果往往都需要做一些测量,怎么样让我们的测量更加的高效呢? 我们也从做中学,从学中做,仿真主要还是培养对电路的直觉虽说讲的是工具还是从电路做起,在做电路过程中把工具学了。 现在我…

[Python学习日记-30] Python中数据类型与文件操作的补充(Bytes 类型、字符编码的转换、深浅 Copy)

[Python学习日记-30] Python中数据类型与文件操作的补充 Bytes 类型 字符编码的转换 深浅 Copy Bytes 类型 一、定义 Bytes 类型是指一堆字节的集合,在 Python 中以 b 开头的字符串都是 Bytes 类型。从前面学习的字符编码当中知道,数据存到硬盘当中都…

C++ day07

C笔试题合集: 1、什么是虚函数?什么是纯虚函数? 1>在类中定义函数时,在函数名前加上virtual关键字,该函数就是虚函数,虚函数可以保证在父子类中只有一个该函数。 2>当虚函数头 0;时该函…

Killing LeetCode [416] 分割等和子集

Description 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 Intro Ref Link:https://leetcode.cn/problems/partition-equal-subset-sum/description/ Difficulty:Med…

【C++报错已解决】std::ios_base::sync_with_stdio

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

CSS——边框线条动画效果

CSS——边框线条动画效果 上次我们实现了边框的线条缩放效果,今天我们来用三种方式完成边框的线条旋转动态效果。 方法一:使用伪元素 这是最普遍、最常用的方法,我们需要为边框所在的元素添加伪元素,然后旋转这个伪元素即可。本…

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …

【蓝桥杯省赛真题55】Scratch找不同游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

scratch找不同游戏 第十五届青少年蓝桥杯scratch编程选拔赛真题解析 PS:其实这题在选拔赛里面就出现过类似的题目,只是难度提升了一点,具体可以见【蓝桥杯选拔赛真题84】Scratch找不同游戏 第十五届蓝桥杯scratch图形化编程 少儿编程创意编…

newbie难度——暴力枚举

newbie难度——暴力枚举 740 - 1743A 给出的样例能够理解,如果有n个数字不能选,要排四个数字,这四个数字只有两个不同,并且这两个相同的会各自出现两次,有6种排列方式,那如果给出小于样例n的数字&#xff…

电子电路智能设计课程内容是什么?

电子电路智能设计课程通常包括一系列内容,旨在教授学生如何使用现代电子设计自动化(EDA)工具和技术来设计和分析电子电路。 1. 电子设计自动化(EDA)概述: - EDA的历史和发展 - EDA在电子设计中的作用 - …

excel统计分析(2):描述统计工具

1.什么是【描述统计】工具 Excel中的描述性统计是指用于汇总和分析数据以更好地了解其特征的工具,方便快速了解数据集的中心趋势、离散程度和形状。 2.excel中添加【数据分析】功能 点击【文件>选项>加载项】,【管理>Excel加载项>转到】&…

SAP B1 认证考试习题 - 解析版(二)

前一篇:《SAP B1 认证考试习题 - 解析版(一)》 题目纯享版合集:《SAP B1 认证考试习题 - 纯享版》 三、采购流程 30. 下列哪个凭证在采购流程中是必须要完成的 A. 采购订单 B. 收货采购订单 C. 应付发票 D. 退货 E. 应付贷…

Vue项目快速整合WangEditor富文本编辑器

Vue项目快速整合WangEditor富文本编辑器 一、安装依赖 npm i wangeditor --save //富文本编辑器 npm install highlight.js -S //代码高亮 npm install dompurify vue-dompurify-html // 防xss 库二、app.vue代码案例 已对接图片、视频接口 ,具体看如下代码…

【Spring Cloud】Spring Cloud 概述

Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…

Linux部署RabbitMQ

目录 一、环境 二、开始安装 1、安装Erlang 2、安装RabbitMQ 3、修改配置文件 先复制覆盖配置文件,根据自己的版本进行路径更改 打开配置文件,53行 去掉注释%%和逗号 4、安装插件并启动服务 web管理界面工具 重新启动 RabbitMQ 服务 查看节点…