MediaPlayerState.PLAYBACK_ERROR для VideoDisplay с использованием AIR на OSX
Я установил небольшое приложение, которое просто показывает искровой элемент управления videoDisplay, загружающий локальный файл. Видео воспроизводится нормально, как AIR в Windows, и нормально воспроизводится в браузере поверх osx, если приложение flex является веб-приложением, но всякий раз, когда я пытаюсь запустить приложение Mac AIR на Mac, VideoDisplay проходит через:
- MediaPlayerState.LOADING
- MEdiaPlayerState.READY
- MediaPlayerState.PLAYBACK_ERROR
Я не могу найти никакой подсказки о том, что происходит или причина этой ошибки воспроизведения. Видео файл, конечно, одинаков во всех случаях.
Я использую Flex SDK 4.6 (поставляется с AIR 3.1) из Flash Builder 4
Вот код, который я использую для теста:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import org.osmf.events.MediaPlayerStateChangeEvent;
protected function mediaPlayerStateChangeHandler(event:MediaPlayerStateChangeEvent):void
{
trace(event.state);
}
]]>
</fx:Script>
<s:VideoDisplay width="100%" height="100%" source="/somepath/video.mp4"
mediaPlayerStateChange="mediaPlayerStateChangeHandler(event)"/>
</s:WindowedApplication>
1 ответ
Проблема была такой же, как указано в этом вопросе: AIR: securityError в OSX (но не в Windows) с URLStream() По какой-то причине AIR в OSX не использует изолированную программную среду безопасности, и путь к исходному файлу для видео должен быть указан как URL.
Так что код должен выглядеть так:
<s:VideoDisplay width="100%" height="100%" source="{new File('/somepath/video.mp4').url}"
mediaPlayerStateChange="mediaPlayerStateChangeHandler(event)"/>
Таким образом, он работает в OSX и Windows.