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

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

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>

Есть предположения?


person Ken Smith    schedule 31.07.2009    source источник


Ответы (2)


person Vinay Sajip    schedule 31.07.2009
comment
Я понял. Ваш ответ был частью решения; другой бит, вызвавший мою проблему, заключался в том, что я пытался захватить растровое изображение в несуществующем потоке. Я добавил немного более умную попытку / поймать, и мы в порядке. Спасибо. - person Ken Smith; 01.08.2009

Я тоже использую 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

person eBuildy    schedule 16.06.2010