Как указать файл междоменной политики, чтобы 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. Я не совсем уверен, где он его ищет, и прослушивание проволочной акулы было неубедительным, поэтому я попытался разместить его в каждом из следующих мест:
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 ответа
Это не проблема crossdomain.xml: вот соответствующая документация Adobe. Я думаю, что этот пост также может помочь.
Я тоже использую Wowza, у меня была та же проблема, что и у вас, вот что я сделал:
Изменена конфигурация Application.xml, добавлено * для клиента> Доступ> ...
Загрузите файл 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