Aar*_*ron 8 air flash adobe actionscript-3 flash-video
我正在使用NetStream.appendBytes()在Adobe AIR中播放本地视频(不涉及服务器).我想BitmapData.draw()用来拍摄视频输出,但是我收到了这个错误:
错误#2123:安全沙箱冲突:BitmapData.draw:无法访问null.没有授予访问权限的策略文
以下是一些示例代码:
package
{
import flash.display.Sprite;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.NetStreamAppendBytesAction;
import flash.utils.ByteArray;
import flash.display.BitmapData;
class ByteArrayPlayer extends Sprite
{
private var _ns:NetStream;
private var _nc:NetConnection;
private var _video:Video;
public function playVideo(path:String):void
{
_nc = new NetConnection();
_nc.connect(null);
_ns = new NetStream(_nc);
_video = new Video();
addChild(_video);
_video.attachNetStream(_ns);
_ns.play(null);
_ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
var file:File = new File(path);
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var bytes:ByteArray = new ByteArray();
fileStream.readBytes(bytes);
_ns.appendBytes(bytes);
}
public function getImage(video:Video):BitmapData
{
var bit:BitmapData = new BitmapData(_video.width, _video.height);
bit.draw(_video); //This will cause the error
return bit;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这只是用于解释的示例代码.在视频播放时调用getImage方法时会发生错误.该错误提到未找到的策略文件.由于文件是在本地加载的,因此实际上没有放置策略文件的位置.是否有需要设置的策略设置或BitmapData.draw使用时功能不可用appendBytes?
NetStream.checkPolicyFile = true在调用该函数之前尝试设置play()。
像这样:
_ns.checkPolicyFile = true;
_ns.play(null);
Run Code Online (Sandbox Code Playgroud)
该checkPolicyFile标志的作用是告诉主机 swf 从已加载的 swf 服务器加载策略文件。如果您在加载时未指定该标志,则SecurityError当您尝试通过BitmapData.draw().
| 归档时间: |
|
| 查看次数: |
5114 次 |
| 最近记录: |