Frage

Gibt es eine Möglichkeit zu erkennen, ob ein Flash-Film Ton enthält oder Musik abspielt?
Es wäre schön, wenn dies in einem Webbrowser (Actionscript) möglich wäre von einem anderen Blitzobjekt, Javascript,..) und könnte gemacht werden Vor Der Flash-Film wird abgespielt.

Allerdings bezweifle ich, dass dies überhaupt möglich sein wird, daher wäre auch jede andere (programmierbare) Lösung willkommen

War es hilfreich?

Lösung

Ja, auf der Serverseite auf jeden Fall.Kundenseite?Ich weiß nicht.(Ich bin ein serverseitiger Typ.)

Auf der Serverseite müsste man die Datei analysieren, den Header lesen und/oder nach Audioframes suchen.(Ich habe selbst einen Haskel-FLV-Parser zu Indizierungszwecken nach Java portiert, und es gibt andere Parsing-Dienstprogramme.Es ist möglich.)

Die FLV-Seite von osflash.org hat die blutigen Details.Schauen Sie sich die FLV-Header-Tabelle der Abschnitte zum FLV-Format an.

FIELD       DATA TYPE      EXAMPLE                  DESCRIPTION
 Signature   byte[3]        “FLV”                    Always “FLV”
 Version     uint8          “\x01” (1)               Currently 1 for known FLV files
 Flags       uint8 bitmask  “\x05” (5, audio+video)  Bitmask: 4 is audio, 1 is video
 Offset      uint32-be      “\x00\x00\x00\x09” (9)   Total size of header (always 9 for known FLV files) 

BEARBEITEN:Meine clientseitige Codierung mit Flash ist nicht vorhanden, aber ich glaube, dass es ein onMetaDataLoad-Ereignis gibt, das Ihr Code abfangen könnte.Das kommt für Sie vielleicht etwas spät, aber vielleicht ist es ja gut genug?

Andere Tipps

Fragen Sie nach FLV-Videodateien oder Flash-„Filmen“ wie in SWF?

Nur zur Klarstellung: Ein FLV ist das Flash-Videoformat (oder was auch immer das Akronym ist), ein normaler Flash-Film/eine normale Flash-Anwendung/ein normales Flash-Banner wäre ein SWF.Das sind sehr unterschiedliche Dateiformate.

Mit dem ByteArray Sie können so ziemlich alles tun, was Sie wollen.Bevor Sie mit der Wiedergabe beginnen, können Sie die Bytes des FLV-Headers analysieren (verwenden Sie byteArray.readByte() und sehen Sie sich die Spezifikationen an), um festzustellen, ob das Audio-Flag aktiviert ist.Da der FLV-Header fast sofort geladen wird, sollte dies für den Benutzer keine unangenehme Verzögerung verursachen.

Bei SWFs ist es viel komplizierter – ich bin mir ziemlich sicher, dass es keine einfache Möglichkeit gibt, im Voraus festzustellen, ob eine SWF-Datei irgendwo Audio abspielt.Eine Möglichkeit, dies zu tun, könnte darin bestehen, sich anzusehen, welche Assets die SWF-Datei in der Bibliothek definiert hat, aber die SWF-Datei könnte dann auch einfach eine externe Audiodatei laden (oder sie sogar mit einigen Hacks oder den neuen APIs in Flash Player 10 generieren).Wenn die SWF-Dateien vom Benutzer übermittelt werden (oder etwas Ähnliches, das außerhalb Ihrer unmittelbaren Kontrolle liegt), halte ich dies für einen riskanten Weg.

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