В CPAN есть два модуля. MP3::Splitter
и MP3::Cut::Gapless
, оба из которых содержат C-код и в настоящее время не компилируются под Windows. Имейте в виду, что не совсем вина Windows, MP3::Splitter
, похоже, нигде не работает с последними Perls. Сбой из-за сломанной зависимости (MPEG::Audio::Frame
), я смотрю на это, может быть, я найду исправление.
Тем временем, если вы используете Windows 10, вы можете дать подсистему Linux дляWindows (WSL) попытайтесь запустить свой сценарий оттуда.
use MP3::Cut::Gapless;
my $cut = MP3::Cut::Gapless->new(
file => 'input.mp3',
start_ms => 140000,
end_ms => 170000,
);
open my $out, '>', 'output.mp3' or die "Can't write MP3";
while ( $cut->read( my $buf, 4096 ) ) {
syswrite $out, $buf;
}
close $out;
Или вы можете установить облегченный инструмент с именем ffmpeg и выполнить оболочку для этого
`ffmpeg -ss 00:02:20 -t 00:00:30 -i input.mp3 output.mp3`
Хорошо, вот обновление .
Я посмотрел на проблему с MPEG::Audio::Frame
, и это только тесты, которые не проходят ¹!
Это означает, что сначала вы можете принудительно установить MPEG::Audio::Frame
, а затем выполнить обычную установку MP3::Splitter
. Затем вы можете запустить этот скрипт
use MP3::Splitter;
mp3split('yourfile.mp3', {verbose => 1}, [140, 30]);
Затем вы найдете новый файл "01_yourfile.mp3" в том же каталоге, что и входной файл. Это неуклюжий интерфейс, но, по крайней мере, он работает.
¹Я связался с автором. Проблема в том, что тесты читают свои данные из DATA , но автор не использовал binmode
. Таким образом, в Windows данные читаются как текст, а дерьмо идет не так.
Окончательное обновление
Мне удалось получить сопровождение MPEG::Audio::Frame
и исправить ошибку. Новая версия 0.10 теперь на CPAN. Следовательно, с этим исправлением MP3::Splitter
будет нормально работать везде.