Как я могу получить одинаковый битрейт входного и выходного файла в Pydub?

Я использую pydub для вывода файла (нарежьте файл на более короткий), все отлично, но битрейт изменился с 256k до 124k(почему я получу это число вместо 128k?). Я знаю, что у AudioSegment есть аргумент для установки битрейта, но я просто хочу, чтобы этот битрейт устанавливался вручную каждый раз. Есть ли способ решить эту проблему?

2 ответа

Это в основном связано с ffmpeg/avlib, но вы можете передать флаг AudioSegment().export() способ указать битрейт, который вы хотите:

from pydub import AudioSegment
from pydub.utils import mediainfo

source_file = "/path/to/sound.mp3"

original_bitrate = mediainfo(source_file)['bit_rate']
sound = AudioSegment.from_mp3(source_file)

sound.export("/path/to/output.mp3", format="mp3", bitrate=original_bitrate)

Я не смог использовать приведенный выше пример, используя mediainfo объект. Я просто нашел способ рассчитать битрейт для файлов WAV и использовал его.

Переводя его в python и pydub, и предполагая, что объект pydub называется wav Вы получите это: bitrate = str((wav.frame_rate * wav.frame_width * 8 * wav.channels) / 1000)

Затем вы можете передать его в функцию экспорта и не устанавливать его вручную. Надеюсь, поможет:)

Другие вопросы по тегам