netstream 无法在 adobe air - amazon s3 - signed cloudfront 上运行

netstream no working on adobe air - amazon s3 - signed cloudfront

我似乎无法让 net stream 在我的 adobe air 应用程序上运行。 Android 或桌面。

这是有效的代码link。 link 适用于 VLC。

有什么建议吗?

   public function Main() {
        url = "rtmp://s1p2w2yhnipjkt.cloudfront.net/cfx/st/mp4:demo.mp4?Expires=1594281188&Signature=AW0M39xRqX5bjhlw4EPMvdPzum8~gbK6Wsl7vkI3av6cWDXQ36lCfTlnpOXse6qiP9RSbuT-jhor84DHvZg7yPmvnnlPgAEQlndtgsBvzwUj~kGXES~~VWvHGVuUHTDnK~rAWcOmzpbRi-jWPpN71Ks2wnJeri596lqh2dOkUcg_&Key-Pair-Id=APKAI7XWAS4L22TVE3HA";
    _netConnection = new NetConnection();
    _netConnection.addEventListener(NetStatusEvent.NET_STATUS, onConnect);
    _netConnection.client = {onBWDone:onNetConnectionBWDone};


    _netConnection.connect(url);
    _netConnection.connect("rtmp://s1p2w2yhnipjkt.cloudfront.net/cfx/st");

    trace("connect")


}

private function onConnect(event:NetStatusEvent):void {

    trace(event.info.code);
    if(event.info.code == "NetConnection.Connect.Success")
    {
        _netStream = new NetStream(_netConnection);
        _netStream.client = {onMetaData:onMetaData, onPlayStatus :onPlayStatus};
        var video:Video = new Video();
        video.attachNetStream(_netStream)
        _netStream.play("mp4:demo.mp4");
        addChild(video);

    }

}

我在我的 android 设备上测试了你的流,它工作正常,我认为你忘记在你的流中使用参数,所以你可以这样做:

var url:String = 'rtmp://s1p2w2yhnipjkt.cloudfront.net/cfx/st',
            // or rtmp://s1p2w2yhnipjkt.cloudfront.net:80/cfx/st
    stream:String = 'mp4:demo.mp4?Expires=1594281188&Signature=AW0M39xRqX5bjhlw4EPMvdPzum8~gbK6Wsl7vkI3av6cWDXQ36lCfTlnpOXse6qiP9RSbuT-jhor84DHvZg7yPmvnnlPgAEQlndtgsBvzwUj~kGXES~~VWvHGVuUHTDnK~rAWcOmzpbRi-jWPpN71Ks2wnJeri596lqh2dOkUcg_&Key-Pair-Id=APKAI7XWAS4L22TVE3HA';

// ...

_netConnection.connect(url);

// ...

_netStream.play(stream);

当然你必须给你的应用程序添加INTERNET权限才能获取流,并确保你的设备可以通过端口 1935 或 80 (在最坏的情况下)。

希望能帮到你。