首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过FLVPlayback组件播放byteArray flv

通过FLVPlayback组件播放byteArray flv
EN

Stack Overflow用户
提问于 2013-09-16 15:18:40
回答 1查看 838关注 0票数 1

有什么方法可以通过FLVPlayback组件播放byteArray吗?

我想加载一个加密的视频,解密并播放它。我可以做加载和解密部分,但我不知道如何通过FLVPlayback组件播放它。具有查找功能和播放停止按钮。

EN

回答 1

Stack Overflow用户

发布于 2013-09-16 19:11:44

有一种方法可以加载和播放ByteArray格式的FLV视频,但我不知道是否可以通过FLVPlayback组件本身将其与查找、播放和暂停功能结合起来。

在我的示例中,我添加了暂停/取消暂停功能,但查找起来很困难,因为变通方法将此ByteArray视为来自服务器的RTMP流,而不是渐进式加载的视频。

这是在舞台上具有FLVPlayback组件(实例名为flvPlayback)的FLA的文档类,它只是将本地FLV嵌入为ByteArray,在顶部引用:

代码语言:javascript
复制
package {

    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.NetStatusEvent;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.net.NetStreamAppendBytesAction;
    import flash.utils.ByteArray;
    import fl.video.FLVPlayback;

    public class VideoFromByteArray extends Sprite {

        [Embed(source="your_video.flv", mimeType="application/octet-stream")]
        private var TestVideo:Class;

        public var flvPlayback:FLVPlayback; //Instantiated on stage in FLA//
        private var _nc:NetConnection;
        private var _ns:NetStream;
        private var _ba:ByteArray;

        public function VideoFromByteArray() {
            ui_init();
        }

        private function ui_init():void {
            _nc = new NetConnection();
            _nc.connect(null);

            _ns = new NetStream(_nc);
            _ns.client = { };
            _ns.addEventListener(NetStatusEvent.NET_STATUS, ns_netStatus);
            flvPlayback.getVideoPlayer(0).attachNetStream(_ns);

            _ba = new TestVideo();
            _ns.play(null);
            _ns.appendBytes(_ba);
            _ns.send("|RtmpSampleAccess", true, true);

            stage.addEventListener(MouseEvent.CLICK, stage_click);
        }

        private function stage_click(evt:MouseEvent):void {
            _ns.togglePause();
        }

        private function ns_netStatus(event:NetStatusEvent):void {
            var code:String = event.info.code;
            switch(code) {
                case "NetStream.Buffer.Empty":
                    _ns.seek(0);
                    break;
                case "NetStream.Seek.Notify":
                    if (event.info.seekPoint == 0) ns_seekToBeginning();
                    break;
            }
        }

        private function ns_seekToBeginning():void {
            _ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
            _ns.appendBytes(_ba);
            _ns.appendBytesAction(NetStreamAppendBytesAction.END_SEQUENCE);
        }

    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18822365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档