Frage

Ich baue eine einfache Javascript-Jukebox der neueste SoundManager2 für die Audiowiedergabe verwenden, mit lokalen MP3-Dateien die Quelle zu sein. Ich habe das Laden der Datei bekam und das Spielen sortiert und im Moment versuche ich Zugriff auf die ID3-Informationen dieser MP3-Dateien zu erhalten, aber die onID3 () Rückruf feuert nicht. Ich bin mit Flash und haben bestätigt, dass ID3 Informationen in den Dateien vorhanden ist. Im Folgenden finden Sie meine Implementierung von onID3 ():

function playNextSongInQueue()
{
    // Get the first element of the songQueue array
    var nextSongInQueue = songQueue.shift();

    // Start playback from the queue
    var jukeboxTune = soundManager.createSound({
        id: 'currentTune',
        url: 'audio/' + nextSongInQueue.name,
        onload: function() {
            this.play();
        },
        onid3: function() {
            alert('ID3 present!');
        },
        onfinish: function() {
            this.destruct();    // Destroy this sound on finish
            songFinish();       // Run the songFinish() function, so decide what to do next
        }
    });

    jukeboxTune.load();
    //jukeboxTune.play();           // The jukebox running!

    songPlaying = true;             // Set songPlaying flag
    updateSongQueueDisplay();       // Refresh the song queue display (for debug)

    return nextSongInQueue.name;
}

Die andere Rückrufe Arbeit in Ordnung, aber der onID3 () Alarm kommt nie auf. Ich trennte auch die Last und Spiel Teile der Audio-Wiedergabe zu sehen, ob das geholfen. Soundmanager-Spots, dass onID3 () gibt es, weil es usePolicyFile auf true schaltet -. Da die MP3-Dateien sind Lokal ich ich mach dir keine Sorgen über die Cross-Domain-XML-Datei benötigen gehe davon aus

Schuppen Licht kann jemand auf, warum dies nicht funktioniert? Ich habe Google für Implementierungen, die Arbeit suchen abgekocht haben aber kommen mit nichts hilfreich. Ich habe Jacob Seidelin des gesehen reine Javascript umgehen würde aber lieber Stick mit Soundmanagern, wenn möglich, und würde lieber nicht eine PHP-Lösung verwenden.

Danke,

Adam

War es hilfreich?

Lösung

Dieses Problem ist wahrscheinlich zu esoterisch für irgendwelche festen Antworten, so dass ich möglich Javascript Lösungen außerhalb der SM2-Bibliothek untersuchen entschieden.

Ich begann mit Nihilogic Bibliothek zum Lesen von ID3v1-Tags ( http://blog.nihilogic.dk/2008/08/reading-id3-tags-with-javascript.html ), sondern auf antimatter15 js-iD3v2-Bibliothek ( https://github.com/antimatter15/js-id3v2 ), wie es ID3v2-Tags lesen. Die Anpassung Code aus dem bereitgestellten Beispiel habe ich es geschafft, erfolgreich die wichtigsten Tags parsen erforderlich, wenn die MP3-Dateien über die <input> Steuerung geladen werden.

Andere Tipps

Für lokale Dateien, ich spreche von "user lokale Dateien" (nicht "Server" lokale Dateien) i einen gewissen Erfolg erhalten mit id3v2.js

ID3 zu erhalten, mußte SM2 eine Cross-Domain auf der MP3-Host, wenn es eine andere Domäne ist. Außerdem habe ich Schwierigkeiten mit Soundcloud, wie sie MP3 dynamische Amazon S3 Speicher umleiten ... so habe ich ein PHP-Skript zu Gast endgültige URL zu tun und dann kann SM2 richtige crossdomain.xml erhalten (überprüfen https://getsatisfaction.com/schillmania/topics/displaying_waveformdata_of_soundcloud_hosted_track_prompts_securityerror_error_2122 )

Das Problem ist, beide S3 Links und lokale Benutzerdateien (blob) zu tun haben eine kurze Verfall Verzögerung.

Viel Glück!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top