Как разделить аудиофайл в ActionScript

Я хочу разбить mp3-файл на несколько частей, например. с 0:30 до 0:45 и с 0:45 до 1:00 в ActionScript.

Самое близкое, что я нашел, это это короткое фрагмент из документации. Я не могу найти никаких статей или библиотек, которые помогли бы мне в этом. Возможно ли вообще достичь?

Заранее спасибо за любые советы.

Пример того, что я хочу: mp3cut


person dev9    schedule 26.10.2014    source источник


Ответы (1)


Я сам этого не делал, но я бы сделал это следующим образом:

  1. Загрузите файл MP3
  2. Декодировать файл MP3
  3. Извлеките нужные биты
  4. Кодировать извлеченные данные

Все нижеперечисленное следует рассматривать как непроверенный псевдокод.

Шаг 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