Как да разделя аудио файл в 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