用于将文件转换为 MP3 并设置其质量的 Python 库

问题描述 投票:0回答:7

我正在尝试找到一个 Python 库,它可以获取音频文件(例如 .ogg、.wav)并将其转换为 mp3 以在网页上播放。

此外,任何有关设置播放质量的想法都很棒。

谢谢你。

python audio compression
7个回答
76
投票

我写了一个库,旨在做到这一点=D

from pydub import AudioSegment
AudioSegment.from_file("/input/file").export("/output/file", format="mp3")

简单!

要指定比特率,只需使用

bitrate
kwarg...

from pydub import AudioSegment
sound = AudioSegment.from_file("/input/file")
sound.export("/output/file", format="mp3", bitrate="128k")

4
投票

我使用 gstreamer 的 Python 绑定。开始有点难,但一旦开始,几乎一切皆有可能。

从命令行(来自gstreamer的文档):

gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! lame bitrate=192 ! id3v2mux ! filesink location=music.mp3

输入

filesrc location=...
可以是 gstreamer 可以播放的任何内容,而不仅仅是 .wav。您可以添加称为 caps 过滤器的东西,以在编码之前重新采样到特定速率。

在 Python 程序中,您将使用

gst.parse_launch(...)
,获取 filesrc 和 filesink 元素,并调用 setter 来更改输入和输出文件名。


3
投票

看起来 PyMedia 是这样做的:

http://pymedia.org/

以及有关转换为各种格式以及设置比特率的更多信息:

http://pymedia.org/tut/recode_audio.html

例如

params= {
'id': acodec.getCodecId('mp3'),
'bitrate': r.bitrate,
'sample_rate': r.sample_rate,
'ext': 'mp3',
'channels': r.channels }
enc= acodec.Encoder( params )

3
投票

此外,Python 音频工具 应该能够在不需要其他库的情况下完成这项工作,如果您在共享网络托管帐户上执行此操作可能会更容易。 (但不可否认,我还没有尝试过,所以我无法确认它有多有用。)


2
投票

您可以使用ctypes模块直接从动态库调用函数。它不需要您安装外部Python库,并且比命令行工具具有更好的性能,但通常更难实现(当然还需要提供外部库)。


1
投票

避免为这个简单任务安装 Python 模块的另一个选择是从 Python 脚本中执行“lame”或其他命令行编码器(使用 popen 模块)


0
投票

%运行/mnt/data/add_libraries_py 从 ai_song_maker 导入 Song_maker

abc_notation_meta = """ 中号:4/4 长:1/4 问:1/4=100 公斤 ”””

abc_notation_guitar_verse = """V:1 谱号=高音 name="吉他" snm="G" | G2 D2 | Em2 C2 | G2 D2 | Em2 C2 | |:G2 D2 | Em2 C2 :| ”””

abc_notation_piano_verse = """V:2 谱号=高音 name="钢琴" snm="P" | [G、B、D]2 [D、F#、A]2 | [E、G、B]2 [C、E、G]2 | [G、B、D]2 [D、F#、A]2 | [E、G、B]2 [C、E、G]2 | |: [G,B,D]2 [D,F#,A]2 | [E、G、B]2 [C、E、G]2 :| ”””

abc_notation_drum_verse = """V:3 谱号=打击乐器名称=“鼓” snm=“D” | C2 C2 | C2 D2 D2 | C2 C2 | C2 D2 D2 | |: C2 C2 | D2 D2 :| ”””

abc_notation_guitar_chorus = """V:1 谱号=高音 name="吉他" snm="G" | G2 C2 | G2 D2 | G2 C2 | G2 D2 | |:G2 C2 | G2 D2 :| ”””

abc_notation_piano_chorus = """V:2 谱号=高音 name="钢琴" snm="P" | [G、B、D]2 [C、E、G]2 | [G、B、D]2 [D、F#、A]2 | [G、B、D]2 [C、E、G]2 | [G、B、D]2 [D、F#、A]2 | |: [G,B,D]2 [C,E,G]2 | [G、B、D]2 [D、F#、A]2 :| ”””

abc_notation_drum_chorus = """V:3 谱号=打击乐器名称=“鼓” snm=“D” | C2 C2 | C2 D2 D2 | C2 C2 | C2 D2 D2 | |: C2 C2 | D2 D2 :| ”””

abc_notation = abc_notation_meta + abc_notation_guitar_verse + abc_notation_piano_verse + abc_notation_drum_verse + abc_notation_guitar_chorus + abc_notation_piano_chorus + abc_notation_drum_chorus order_part_instrument = {'吉他': '吉他', '钢琴': '钢琴', '鼓': '鼓'}

musicxml_path = '/mnt/data/song_musicxml.xml' midi_path = '/mnt/data/song_midi.mid' parts_data、score_data = Song_maker.process_abc(abc_notation、ordered_part_instrument、musicxml_path、midi_path) musicxml_path,midi_path

© www.soinside.com 2019 - 2024. All rights reserved.