【Python】pydub按一定比特率、采样率压缩音频文件

news/2025/2/22 1:17:45/

使用Python第三方库pydub按一定bitrate,frame_rate压缩音频文件

安装pydub

pip install pydub

注: pydub支持wav格式音频读取,本文处理的是MP3格式,所以需要安装ffmpeg.

Linux下安装ffmpeg

sudo apt install ffmpeg

读取、压缩MP3格式文件

from pydub import AudioSegment
# 音频文件路径
path = "file's path"
# 读取音频文件,设置采样率<default=44100>
song = AudioSegment.from_mp3(path).set_frame_rate(22050)
# 按32k的bitrate导出文件到指定路径,这里是直接覆盖原文件
song.export(path, format='mp3', bitrate='32k')

扩展

"""
pydub提供了对mp3, wav, ogg, flv等格式的音频文件的支持,
对应有from_mp3, from_wav, from_ogg, from_flv等Classmethod;
支持设置sample_width, frame_rate, channels,
值得注意的是在AudioSegment初始化时,不可设置单个特征值,否则会报以下错误:
pydub.exceptions.MissingAudioParameter: Either all audio parameters or no parameter must be specified
对应的提供了设置单个特征值的方法:set_frame_rate, set_sample_width, set_channels;
"""
# pydub的源码相对简单, 下面是此次运用的两个方法的源代码:def export(self, out_f=None, format='mp3', codec=None, bitrate=None,parameters=None, tags=None, id3v2_version='4', cover=None):"""Export an AudioSegment to a file with given optionsout_f (string):Path to destination audio file. Also accepts os.PathLike objects onpython >= 3.6format (string)Format for destination audio file.('mp3', 'wav', 'raw', 'ogg' or other ffmpeg/avconv supported files)codec (string)Codec used to encoding for the destination.bitrate (string)Bitrate used when encoding destination file. (64, 92, 128, 256, 312k...)Each codec accepts different bitrate arguments so take a look at theffmpeg documentation for details (bitrate usually shown as -b, -ba or-a:b).parameters (string)Aditional ffmpeg/avconv parameterstags (dict)Set metadata information to destination filesusually used as tags. ({title='Song Title', artist='Song Artist'})id3v2_version (string)Set ID3v2 version for tags. (default: '4')cover (file)Set cover for audio file from image file. (png or jpg)"""passdef set_frame_rate(self, frame_rate):  # default: frame_rate=44100if frame_rate == self.frame_rate:return selfif self._data:converted, _ = audioop.ratecv(self._data, self.sample_width,self.channels, self.frame_rate,frame_rate, None)else:converted = self._datareturn self._spawn(data=converted,overrides={'frame_rate': frame_rate})

pydub对音频文件的处理是是磁盘IO操作,耗时较长,在web应用中建议做异步后台处理,笔者使用的是django框架做后台开发, django提供有django-rq和django_celery支持异步操作,关于celery和django_rq的使用在笔者其他文章中有所介绍。


http://www.ppmy.cn/news/900654.html

相关文章

格式工厂 wav 比特率_鸡娃常用工具系列一格式工厂(音频转换软件)

光光发发资料已经满足不了群众的需求了&#xff0c;因为好多人发现下载的文件是M4A&#xff0c;不知道怎么办&#xff0c;倾听者又播放不了&#xff0c;干着急。 倾听者支持的格式是官方的断句音频 lis&#xff0c;mp3/wma/wav格式&#xff0c;如是其它格式识别不了。我们一般常…

音频的比特率,码率

比特率 是指 每秒传送的比特&#xff08;bit&#xff09;数。单位bps(Bit per Second),比特率越高&#xff0c;传送数据速度越快。 声音中的比特率是指将模拟声音信号转换成数字声音信号后&#xff0c;单位时间内的二进制数据量&#xff0c;是间接衡量音频质量的一个指标。 比…

FFMPEG音频视频开发: 视频转码、合并、修改分辨率、比特率

一、环境介绍 操作系统介绍:win10 64位 FFMPEG版本: 4.4.2 QT版本: 5.12.6 二、FFMPEG下载 ubuntu系统下编译安装ffmpeg: https://blog.csdn.net/xiaolong1126626497/article/details/104919095 windos系统下安装ffmpeg: https://blog.csdn.net/xiaolong1126626497/arti…

音频相关知识:声道、采样率、采样位数、样本格式、比特率

目录 声道 采样率 采样位数 帧 样本的组合方式 样本格式 比特率 采样率、采样位数、比特率三者之间的关系 参考链接&#xff1a; 声道 当人听到声音时&#xff0c;能对声源进行定位&#xff0c;那么通过在不同的位置设置声源&#xff0c;就可以造就出更好的听觉感受&…

html5 录制mp3音频,支持采样率和比特率设置

13年的时候做过html5录音,一个问题是保存的wav格式文件很大,当初用了一个迂回的方式,上传到服务器后调用 lame 编码器转换,但由于文件大,上传较慢。不得不说,前端技术发展真是日新月异,有人实现了js版本的lame编码器,可以直接在浏览器端录制MP3音频。 lamejs介绍 最初有…

ffmpeg 比特率_为什么即使使用FFmpeg更改比特率,我的MP3文件大小也一样?

ffmpeg 比特率 If you are new to the process of converting audio files, then many of the details and how they work can be a bit confusing when you get unexpected results. So what do you do to fix the problem? Today’s SuperUser Q&A post has the answer …

PHP执行mpg123,关于 mpg123 获取音频文件比特率的问题

啊啦 作为小白 实在扛不住了 还是决定到论坛上来咨询一下了 涉及 gem&#xff1a;audite , mpg123 , portaudio 事件描述&#xff1a; 我最近在练习 ruby &#xff0c;决定把虾米猜电台写个 ruby 版。我想把 下载进度 和 播放进度 以进度条的形式展现出来&#xff0c;所以我至少…

高比特率音频格式兼容性较差

问题描述&#xff1a; mtk的项目播放高比特率的音频杂音&#xff0c;这个问题的本质是播放IEEE的float型32位pcm数据有噪音。 根本原因分析&#xff1a; mtk原始组件无法处理32位浮点数据&#xff0c;因此需要在提取器上进行。 解决方案&#xff1a; 在提取器上将32位浮点…