繁体   English   中英

使用Adobe AIR从本地文件播放视频

[英]Play video from local file using Adobe AIR

我想播放视频,以及使用adobe air显示图像和可能的其他flash内容,以及从本地文件系统读取。 我一直在寻找API,我还没有能够连接点。

我知道flash.filesystem.Fileflash.filesystem.FileStream并且已经尝试过加载和读取文件。 我相信我可以用这种方式加载图像,但还没试过。

至于视频:

mx.controls.VideoDisplay - 似乎接受了一个文件://源的URI,但我无法让它工作。

flash.media.Video - 接受NetStream或者可以直接从视频输入加载视频,似乎找不到引用本地文件的方法

有人可以帮我从这里出去吗? 我特别希望直接从本地磁盘加载和播放视频,而不是从Web服务器或流式文件服务器...假设没有网络连接。

稍微相关的问题: 从本地文件系统加载视频... (但我的问题不涉及Web浏览器)

我想到的用途需要在程序上使用。 我正在寻找一种直接使用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);
}

尝试将“-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>

...所以我想如果没有更多的信息可能很难诊断。 希望这会有所帮助 - 如果您想分享更多信息,我会留意评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM