将参数从 HTML 传递到 Flex 播放器不起作用

Posted

技术标签:

【中文标题】将参数从 HTML 传递到 Flex 播放器不起作用【英文标题】:Passing Parameter from HTML to Flex player not working 【发布时间】:2015-05-01 09:55:02 【问题描述】:

我正在为 Flash 播放器的 VideoDisplay 组件中的实时流传输硬编码值 rtmp url 和流名称。它运行良好,我可以在 html 页面上显示视频流。

<s:VideoDisplay   autoPlay="true" >
            <s:source>
                <s:DynamicStreamingVideoSource host="rtmp://X.X.X.X/live" streamType="live" >
                    <s:DynamicStreamingVideoItem streamName="rtmpStream"/>
                </s:DynamicStreamingVideoSource>
            </s:source>
</s:VideoDisplay>

但是当我从 HTML 页面传递参数时,它不会工作。它也没有给出任何错误,但无法在 HTML 页面上查看实时视频流。

    [Bindable]
    public var rtmpUrl:String;

    [Bindable]
    public var rtmpstreamName:String;


    /* Assign values to new properties. */
    private function initVars():void 
        rtmpUrl = FlexGlobals.topLevelApplication.parameters.rtmpUrl;
        rtmpstreamName = FlexGlobals.topLevelApplication.parameters.rtmpstreamName;

        Security.allowDomain("X.X.X.X");
    

rtmpUrl 将直播源和直播流名称传入rtmpstreamName,传递给视频显示组件。

<s:VideoDisplay   autoPlay="true" >
        <s:source>
            <s:DynamicStreamingVideoSource host="rtmpUrl" streamType="live" >
                <s:DynamicStreamingVideoItem streamName="rtmpstreamName"/>
            </s:DynamicStreamingVideoSource>
        </s:source>
</s:VideoDisplay>

HTML 嵌入代码:

var flashvars = ;
            flashvars.rtmpstreamName = "streamName";
            flashvars.rtmpUrl = "rtmp://X.X.X.X/live"; 

swfobject.embedSWF(
                "deepdemo.swf", "flashContent", 
                "320", "240", 
                swfVersionStr, xiSwfUrlStr, 
                flashvars, params, attributes);

【问题讨论】:

如果您检查返回的 HTML 页面,您会在 host="" 和 steamName="" 中看到什么值? 我对调试 flex 代码一无所知。但我通过将 Flash 变量 rtmpUrl 和 rtmpstreamName 值作为标签放在 Flash 播放器中来检查它,它与所需的相同。但视频流不起作用。 对象或嵌入代码是什么?可以发在这里吗? 已更新。 【参考方案1】:

我想你忘记了loaderInfo参数(见Application's documentation),所以initVars()函数变成了:

 /* Assign values to new properties. */
 private function initVars():void 
        rtmpUrl = FlexGlobals.topLevelApplication.loaderInfo.parameters.rtmpUrl;
        rtmpstreamName = FlexGlobals.topLevelApplication.loaderInfo.parameters.rtmpstreamName;

        Security.allowDomain("X.X.X.X");
 

如果您无权访问 loaderInfo,请在 applicationComplete 上加载此函数。

【讨论】:

以上是关于将参数从 HTML 传递到 Flex 播放器不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Flex 3和Flash播放器缓存

Django - 将变量从函数视图传递到 html 模板

将arrayCollection从flex传递给java

ActionScript 3 Flash,Flex和Html传递参数

将 JSON 从 AngularJS 传递到 Springboot RestController 不起作用

如何将参数从谷歌作曲家传递到数据流模板