Воспроизвести видео из локального файла с помощью Adobe AIR - PullRequest
4 голосов
/ 16 января 2009

Я бы хотел воспроизвести видео, а также отобразить изображения и, возможно, другой флэш-контент с использованием Adobe Air и чтения из локальной файловой системы. Я искал API, и мне пока не удалось соединить точки.

Я знаю flash.filesystem.File и flash.filesystem.FileStream и экспериментировал с загрузкой и чтением файлов. Я верю, что могу загружать изображения таким образом, но не пробовал.

Что касается видео:

mx.controls.VideoDisplay - кажется, принимает файл: // URI для источника, но я не могу заставить его работать.

flash.media.Video - принимает NetStream или может загружать видео напрямую с видеовхода, не может найти способ сослаться на локальный файл

Может кто-нибудь помочь мне здесь? Я специально хочу загружать и воспроизводить видео непосредственно с локального диска, а не с веб-сервера или потокового файлового сервера ... предположим, что нет сетевого подключения.

Слегка связанный вопрос: Загрузка видео из локальной файловой системы… (но мой вопрос не касается веб-браузера)

Ответы [ 2 ]

11 голосов
/ 16 января 2009

Использование, которое я имею в виду, должно быть программным. Я искал способ сделать это напрямую с помощью ActionScript.

В конце концов я наткнулся на решение, на которое я надеялся ... используя объект NetStream, но (не интуитивно) вы также можете использовать это для доступа к локальным файлам:

private function playVideo():void {
  var nc:NetConnection = new NetConnection();
  nc.connect(null);

  var ns:NetStream = new NetStream(nc);

  # onMetaData listener is required otherwise you get a ReferenceError
  var client:Object = new Object();
  client.onMetaData = function(metadata:Object):void {
    trace(metadata.duration);
  }
  ns.client = client;

  var v:Video = new Video();
  v.attachNetStream(ns);
  stage.addChild(v);

  var f:File = new File("/tmp/test.flv");
  ns.play(f.url);
}
0 голосов
/ 16 января 2009

Попробуйте добавить «-use-network = false» в настройки своего компилятора Flex. Это даст вам доступ для загрузки локальных ресурсов, которые могут быть источником проблемы; правила песочницы несколько чувствительны, поэтому, если вы уверены, что вам не понадобится подключение к сети, настройка этого параметра может немного смягчить ситуацию.

Также наткнулся на это, что также может быть связано:

http://soenkerohde.com/2008/06/playing-local-files-with-air/

В моем случае, однако, просто короткое тестирование, обе из следующих работ в сборках отладки и выпуска без изменения настроек компилятора, в случае, если это просто литералы, которые вы используете для ссылки на FLV:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:VideoDisplay source="D:\Data\Projects\Flex 3\AirLocalVideo\bin-debug\NightSky.flv" />
</mx:WindowedApplication>

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:VideoDisplay source="file://D:/Data/Projects/Flex 3/AirLocalVideo/bin-debug/NightSky.flv" />
</mx:WindowedApplication>

... поэтому я думаю, что, возможно, трудно диагностировать без дополнительной информации. Надеюсь, что это поможет - я буду следить за комментариями, если вы захотите поделиться немного больше информации.

...