-1

有时我会遇到实时流媒体服务故障。

所有人都束手无策,直播突然结束。

如果我可以在一个播放器中收听多个源,它就可以播放新的源。

我不打算一次玩两个,只有一个或多个备份,如果一个坏了我可以开始使用。

我以这个随机 FMS URL RTMP 直播链接为例:

rtmp://81.177.35.218/rtp/2

这里有更多可用的 FMS URL 。

此外,如果代码看起来很糟糕,尤其是在 下public function onMetaData(data),请随时修复和编辑它。

这是一个模板,也是我自己编辑的少数部分之一。

如果回复包含相同的代码但已编辑,我将不胜感激。我不知道我在做什么。

package
{
        import flash.accessibility.Accessibility;
        import flash.display.Sprite;
        import flash.events.*;
        import flash.net.NetConnection;
        import flash.net.NetStream;
        import flash.media.Video;

        public class nsLive10_7castwesttigerss extends Sprite
        {
                private var nc:NetConnection;
                private var ns:NetStream;
                private var video:Video;

                public function nsLive10_7castwesttigerss()
                {
                        video = new Video();
                        addChild(video);       

                        nc = new NetConnection();
                        nc.objectEncoding = 0;
                        nc.client=this;
                        nc.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
                        nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onError);
                        nc.connect('rtmp://81.177.35.218/rtp');
                }

                private function startStreaming()
                {
                        ns = new NetStream(nc);
                        ns.client = this;
                        ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
                        ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onError);
                        ns.play("2");

                        video.attachNetStream(ns);
                }

                private function onNetStatus(event:NetStatusEvent):void
                {
                        switch(event.info.code)
                        {
                                case 'NetConnection.Connect.Success':
                                trace('NetConnection.Connect.Success');
                                startStreaming();
                                break;

                                default:
                                trace(event.info.code);
                        }
                }
                private function onError(event:AsyncErrorEvent):void
                {
                        trace(event);
                }
                public function onMetaData(data)
                {
                        for(var i in data){ trace(i + " = " + data[i])}
                        video.width = data.width;
                        video.height = data.height;
                        video.width = stage.stageWidth;
                        video.height = stage.stageHeight;
                        video.x = (stage.stageWidth - video.width)/2;
                        video.y = (stage.stageHeight - video.height)/2;
                }
                public function onBWDone ()
                {
                        trace("on Bandwidth Done ");
                }
        }
}

tl;博士

在 AS3 直播中,如何让它能够播放来自不同来源和 URL 的直播?

4

1 回答 1

1

制作一个播放列表(带有 rtmp url 的简单数组)并监听 NetStream 和 NetConnection 的状态。如果您的状态不佳,只需切换到下一个网址,依此类推。

您可以在此处找到可用状态的完整列表:对于 NetStream 和 NetConnection

于 2013-08-08T10:05:44.370 回答