3

我正在尝试获取在我的客户端上播放的 Wowza 视频流的位图​​/快照,如下所示:

var bitmapData:BitmapData = new BitmapData(view.videoPlayerComponent.width, view.videoPlayerComponent.height);
bitmapData.draw(view.videoPlayerComponent);

当我这样做时,我收到以下错误消息:

SecurityError:错误 #2123:安全沙箱违规:BitmapData.draw:http://localhost:51150/Resources/WRemoteWebCam.swf无法访问 rtmp://localhost/videochat/smithkl42._default/。没有策略文件被授予访问权限。

我认为错误来自无法找到适当的 crossdomain.xml 文件。我不太确定它在哪里寻找它,wireshark 嗅探也没有定论,所以我尝试在以下每个地方放置一个:

http://localhost/crossdomain.xml
http://localhost:1935/crossdomain.xml
http://localhost:51150/crossdomain.xml

我可以从这三个位置中的每一个位置成功检索文件。(我很确定最后一个不会有任何影响,因为它只是托管 .swf 文件的页面所在的网站的位置,但机会不大......)

这些是它在每个实例中抓取的文件的内容:

<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*" /> 
</cross-domain-policy>

它仍然抛出同样的错误信息。

我还按照Wowza 论坛上的说明,在 [install]\conf[appname]\Application.xml 中打开 StreamVideoSampleAccess,但并不高兴:

<Client>
    <IdleFrequency>-1</IdleFrequency>
    <Access>
        <StreamReadAccess>*</StreamReadAccess>
        <StreamWriteAccess>*</StreamWriteAccess>
        <StreamAudioSampleAccess>*</StreamAudioSampleAccess>
        <StreamVideoSampleAccess>*</StreamVideoSampleAccess>
        <SharedObjectReadAccess>*</SharedObjectReadAccess>
        <SharedObjectWriteAccess>*</SharedObjectWriteAccess>
    </Access>
</Client>

有什么想法吗?

4

2 回答 2

1

这不是 crossdomain.xml 问题:这是相关的 Adob​​e 文档。我认为这篇文章也可能会有所帮助。

于 2009-07-31T23:43:19.040 回答
1

我也在使用Wowza,我遇到了和你一样的问题,我做了什么:

  1. 更改了 Application.xml 配置,为 client > Access > 添加了 * ...

  2. 加载一个 crossDomain.xml 文件,这里是我用来加载 http 或流文件的代码:

                var url:String = this.vVideos.selectedItem.url;
                var protocol:String = URLUtil.getProtocol(url).toLowerCase();
                var crossDomainXmlUrl:String;
    
                if (protocol == 'rtmp' || protocol == 'rtmpt')
                {
                    crossDomainXmlUrl = 'http://' + URLUtil.getServerName(url) + ':1935/crossdomain.xml';
                }
                else
                {
                    crossDomainXmlUrl = 'http://' + URLUtil.getServerName(url) + '/crossdomain.xml';
                }
    
                Security.loadPolicyFile(crossDomainXmlUrl);
    
                this.videoMedia.source = url;
                this.videoMedia.visible = true;
    
                setTimeout(this.play,1000);
    

eBuildy,Adobe Flex 专家

于 2010-06-16T12:20:05.613 回答