Как указать файл политики между доменами, чтобы Flash мог получать растровое изображение из видеопотока RTMP (Wowza)? - PullRequest
3 голосов
/ 01 августа 2009

Я пытаюсь получить растровое изображение / снимок видео потока 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. Я не совсем уверен, где он его ищет, и нюх проволочной акулы был неокончательным, поэтому я попытался поместить его в каждое из следующих мест:

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 , чтобы включить StreamVideoSampleAccess в [install] \ conf [appname] \ Application.xml, без радости:

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

Есть мысли?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Я тоже пользуюсь Wowza, у меня была та же проблема, что и у вас, вот что я сделал:

  1. Изменена конфигурация Application.xml, добавлено * для клиента> Доступ> ...

  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

1 голос
/ 01 августа 2009

Это не проблема crossdomain.xml: вот соответствующая документация Adobe . Я думаю этот пост также может помочь.

...