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.

Другие вопросы по тегам