3 Stimmen

Wie kann ich eine mp3-Datei bearbeiten, die mit der Methode fileReference.browse() in Flash geladen wurde?

Ich frage mich, wie kann ich mit mp3 arbeiten, die zu Flash über fileReference.browse() Methode geladen wurde?

Derzeit habe ich eine Lash-Anwendung, die mp3-Datei von der lokalen Festplatte auf Flash laden kann und bieten eine Option zum Speichern mp3-Datei, die zurück auf die Festplatte geladen wurde. Aber ich kann nicht finden, den Weg, um mit mp3, die geladen wurde arbeiten. Ich habe von einem Flash-basierten Editor gehört, der in Aviary verfügbar sein wird (http://aviary.com/blog/posts/aviary-acquires-digimix), es gibt also eine Möglichkeit, mit mp3 in Flash zu arbeiten, aber wie?

Hier ist mein Code:

import flash.net.FileReference;      
import flash.net.FileFilter;
import flash.utils.ByteArray;
import flash.display.MovieClip;
import flash.net.*;
import flash.events.*;
import flash.media.Sound;
import flash.media.SoundChannel;

var fileReference:FileReference;
var myChannel:SoundChannel;
var mySound:Sound;
var mySprite:Sprite;
var mySprite2:Sprite;

mySound=new Sound();
myChannel=new SoundChannel();

load_btn.addEventListener (MouseEvent.CLICK, onLoadClick);
unload_btn.addEventListener (MouseEvent.CLICK, onUnloadClick);

function onLoadClick ( event:MouseEvent):void

{
    fileReference=new FileReference();
    var allTypeFilter:FileFilter = new FileFilter("mp3: (*.mp3)","*.mp3");
    fileReference.browse([allTypeFilter]);
    fileReference.addEventListener(Event.SELECT, selectHandler);

}

function selectHandler(event:Event):void
        {
            fileReference.removeEventListener(Event.SELECT, selectHandler);
            fileReference.addEventListener(Event.COMPLETE, loadCompleteHandler);
            fileReference.load();
        }

function loadCompleteHandler(event:Event):void
        {
            fileReference.removeEventListener(Event.COMPLETE, loadCompleteHandler);

            var loader:Loader = new Loader();
            //loader.contentLoaderInfo.addEventListener(Event.COMPLETE, startPlay);
            loader.loadBytes(fileReference.data);
        }

function onUnloadClick (event:MouseEvent)

{
    trace(fileReference.data);
    fileReference.save(fileReference.data, "done.mp3");

}

Vielen Dank im Voraus.

0voto

also Punkte 964

Es ist seltsam kompliziert. Aus irgendeinem Grund gibt es keine API, um ein Sound-Objekt aus einer FileReference oder einem ByteArray zu erstellen. Sie müssen also die MP3-Datei parsen (nicht dekodieren) und eine SWF-Datei erstellen, die über flash.display.Loader.loadBytes geladen werden kann.

Überprüfen Sie Blog-Beitrag für Einzelheiten und eine Bibliothek zu diesem Zweck. Sobald Sie das Sound-Objekt geladen haben, können Sie die Methode extract() verwenden, um die PCM-Audiodaten zu erhalten, die Sie in Ihrem Editor verwenden können.

Um eine MP3-Datei aus der bearbeiteten PCM-Datei zu erzeugen, gibt es anscheinend einige Flash mp3-Encoder aber ich habe sie nicht benutzt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X