0

我需要制作flash swf来播放加密的 flv/MP4视频。我试过这个.. HTTP://www.veryinteractivepeople.com/?p=525

这里我们要将flv文件放入swf并加密。但我想单独加密 flv/MP4 并从主 swf 播放

我不是关于 Action script 3 的专家。但我会尝试。请告诉我一些解决方案。

4

2 回答 2

1

您需要使用空网络连接和网络流在“数据生成模式”下准备视频。然后使用 URLRequest 加载加密字节,解密它们,并将字节附加到网络流中。

var nc = new NetConnection(null);
var ns = new NetStream(nc);

var encryptedBytes = .. get encrypted bytes from URLRequest ...

var decryptedBytes = .. your decryption function ..

ns.appendBytes(decryptedBytes);
var video = new Video();
addChild(video);
video.attachNetStream(ns);
ns.play(null);
于 2013-08-25T18:20:41.717 回答
0

我试过这段代码.... http://www.veryinteractivepeople.com/?p=525

package
{
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;

    import flash.utils.ByteArray;

    [SWF(width="770", height="490", frameRate="31", backgroundColor="#FFFFFF")]
    public class ProtectedSWF extends Sprite
    {
        //replace "encrypted.swf" to the name of your encrypted SWF file 
        [Embed(source="encrypted.swf", mimeType="application/octet-stream")]
        private const EmbeddedSWF:Class;

        //put your encryption key here
        private static const KEY:String="WRITE_YOUR_OWN_CODE!";

        public function ProtectedSWF()
        {
            var binaryData:ByteArray = new EmbeddedSWF();
            if(binaryData.length != 0)
            {
                XOR(binaryData,KEY);
                var animationLoader:Loader = new Loader();
                animationLoader.loadBytes(binaryData);
                addChild(animationLoader);
            }
        }
        private static function  XOR(binaryData:ByteArray, key:String):void{
            var keyIndex:Number=0;
            for(var i:Number=0;i<binaryData.length;i++){
                binaryData[i]=binaryData[i]^key.charCodeAt(keyIndex);
                keyIndex++;
                if(keyIndex>=key.length)
                    keyIndex=0;
            }
        }
    }
}
于 2013-08-26T03:21:12.860 回答