[英]Play video from local file using Adobe AIR
我想播放视频,以及使用adobe air显示图像和可能的其他flash内容,以及从本地文件系统读取。 我一直在寻找API,我还没有能够连接点。
我知道flash.filesystem.File和flash.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.