Ich verwende NetStream.appendBytes (), um ein lokales Video (kein Server) in Adobe AIR abzuspielen. Ich möchte BitmapData.draw()
verwenden, um ein Bild von der Videoausgabe zu machen, aber ich erhalte diesen Fehler:
Fehler # 2123: Sicherheits-Sandbox-Verletzung: BitmapData.draw: kann nicht auf Null zugreifen. Keine Richtliniendateien gewährt Zugriff.
Hier ist ein Beispielcode:
%Vor% Dies ist nur der Beispielcode, der für eine Erklärung verwendet wird. Der Fehler tritt auf, wenn die getImage-Methode aufgerufen wird, während das Video abgespielt wird. Der Fehler erwähnt eine nicht gefundene Richtliniendatei. Da die Datei lokal geladen wird, gibt es nicht wirklich einen Platz für eine Richtliniendatei. Gibt es irgendwo eine Richtlinieneinstellung, die gesetzt werden muss oder ist das Feature BitmapData.draw
bei Verwendung von appendBytes
? Nicht verfügbar?
Versuchen Sie, NetStream.checkPolicyFile = true
zu setzen, bevor Sie die Funktion play()
aufrufen.
So:
%Vor% Was das checkPolicyFile
-Flag tut, ist, dass es dem Host-SWF mitteilt, eine Richtliniendatei vom Server des geladenen SWF zu laden. Wenn Sie dieses Flag zum Ladezeitpunkt nicht angegeben haben, erhalten Sie SecurityError
, wenn Sie versuchen, Pixeldaten aus dem geladenen Stream durch BitmapData.draw()
zu erhalten.
Link zur Adobe-Ressource: Ссылка
Ich habe eine Lösung, um den Sandbox-Fehler loszuwerden, wenn ich versuche, einen netstream.appendByte()
Inhalt zu zeichnen.
Die SWF ruft eine Sandbox ab, weil sie nach einer Crossdomain-Datei an der von Ihnen angegebenen Adresse sucht :netstream.play(null)
. Er sucht nach etwas, das es nicht gibt.
Nun, die Lösung besteht darin, eine gefälschte Video-URL wie " netstream.play(http://myserv.com/video.flv)
" mit einer echten crossdomain-Datei abzuspielen und danach das gewünschte Video dank der appendBytes-Funktion zu laden.
Die SWF wird getäuscht!
So seltsam es klingt, es funktioniert für mich :-)
Sie können keinen Snapshot von Video oder Audio aus einem rtmp-Stream erstellen, es sei denn, die serverseitigen Einstellungen StreamVideoSampleAccess oder StreamAudioSampleAccess sind auf true festgelegt oder wie dieser StreamVideoSampleAccess / StramVideoSampleAccess festgelegt. Ich habe keine Möglichkeit gefunden, dies zu tun, ohne Zugriff auf die Seite des FMS-Servers zu haben.
Ich weiß, dass diese Frage wirklich alt ist ... aber es ist immer noch ein Problem, dem ich gerade gegenübergestanden habe und ich weiß, dass andere das auch tun werden ... Also wollte ich den Link zu der anderen Stack-Frage veröffentlichen, wo ich den Bug veröffentlicht habe Adobe und der Workaround, um es zum Laufen zu bringen.
Problemumgehung für einen Fehler bei einer doppelten Stack-Frage
Es sieht so aus, als ob Sie versuchen, die BitmapData.draw () -Methode für ein Video aufzurufen, das nicht geladen ist oder wenn das NetStream-Objekt null ist.
mögliche Fehlerbehebung: Warten Sie, bis NetStream.Buffer.Full NetStatus ausgelöst wird, bevor Sie draw ()
aufrufenTags und Links flash actionscript-3 adobe air flash-video