我试图在视频对象上使用BitmapData.draw(),但是使用OSMF框架。
我的托管服务已设置以下内容,以便我可以访问我的rtmp视频:
<VideoSampleAccess enabled="true">/</VideoSampleAccess>
简化代码如下:
_videoURL = "my-url-here"
resource = new StreamingURLResource(_videoURL);
videoElement = new VideoElement(resource);
_player.media = videoElement;
container.addMediaElement(videoElement);
_player.autoPlay = true;
_player.play();
// later on, pause the player at the end
_player.pause();
// get the Video object
videoObj = _player.displayObject as Video;
// detach the netstream
videoObj.attachNetStream(null);
// get the bitmap from the Video object and draw on it..
bmpdata:BitmapData = new BitmapData(videoObj);
bmpdata.draw()
但是,我收到以下错误消息:
SecurityError: Error #2135: Security sandbox violation: BitmapData.draw: ...
答案 0 :(得分:2)
如果您从Adobe Media Server流式传输,则需要在服务器端设置参数 http://www.shell-tips.com/2009/08/30/flash-how-to-fix-the-security-sandbox-violation-bitmapdata-draw/ 当我试图在视频播放器下创建视频流的反射时,我偶然发现了这一点。大多数CDN都允许您自定义媒体服务器应用程序代码...如果不是,您需要更改CDN或切换到渐进式播放
答案 1 :(得分:0)
您可以尝试绘制容器而不是视频对象本身。 draw方法的源可以是Bitmap或DisplayObject类型,因此添加视频的任何MovieClip或Sprite都应该是可绘制的。
编辑: 你是对的,不是真的在想,如果有安全问题,绘制容器不会有太大变化......
你可以试试这个:
import flash.system.Security; Security.loadPolicyFile('policyfileURL');