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

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

<s:VideoDisplay width="100%" height="100%" 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 width="100%" height="100%" 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 播放器中来检查它,它与所需的相同。但视频流不起作用。
  • 对象或嵌入代码是什么?可以发在这里吗?
  • 已更新。

标签: html actionscript-3 apache-flex rtmp live-streaming


【解决方案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 上加载此函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多