Я сам этого не делал, но я бы сделал это следующим образом:
- Загрузите файл MP3
- Декодировать файл MP3
- Извлеките нужные биты
- Кодировать извлеченные данные
Все нижеперечисленное следует рассматривать как непроверенный псевдокод.
Шаг 1: Загрузите файл MP3
Я предполагаю, что у вас уже есть способ загрузить сжатый файл MP3 в память. Если нет, то можно найти много информации об этом шаге.
Шаг 2: декодируйте файл MP3
Класс Sound
предоставляет метод loadCompressedDataFromByteArray
(docs), который принимает сжатый файл MP3 как ByteArray
и декодирует его в необработанные звуковые данные.
Пример:
var mySound:Sound = new Sound();
mySound.loadCompressedDataFromByteArray(myMP3Data, myMP3Data.length);
Шаг 3: Извлеките часть звука
Используя extract
(документы) (как описано в ссылке в вашем вопросе), вы можете извлечь необработанные звуковые данные из объекта Sound
. Вы передаете объект ByteArray
, который будет заполнен данными, указываете, где вы хотите, чтобы «вырезать», и длину клипа для извлечения.
Данные хранятся с использованием 44100 выборок в секунду (левый + правый канал), и расчеты ниже основаны на этом. Я могу ошибаться в этом, поэтому, если это не работает должным образом, пожалуйста, посмотрите это дальше.
Пример:
var sampleFrequency:int = 44100;
var startTimeInSeconds:Number = 30.0;
var lengthInSeconds:Number = 15.0;
// Calculate the position to start the clip (in samples)
var startPosition:Number = Math.round(startTimeInSeconds * sampleFrequency);
// Calculate the number of samples to extract
var samplesLength:Number = Math.round(lengthInSeconds * sampleFrequency);
var extractedBytes:ByteArray = new ByteArray();
mySound.extract(extractedBytes, samplesLength, startPosition);
Шаг 4: Закодируйте извлеченный звук обратно в MP3.
Теперь, когда у вас есть звуковые данные в виде ByteArray, есть несколько способов закодировать их обратно в формат MP3. В предыдущем ответе StackOverflow упоминается эта библиотека, но могут быть и другие библиотеки, более подходящие для ваших задач.
person
david.emilsson
schedule
26.10.2014