【问题标题】:Recording using Flex/Flash使用 Flex/Flash 录制
【发布时间】:2015-06-12 01:16:58
【问题描述】:

我知道我们无法从 Flash Player 录制/访问任何内容,因为它是安全沙盒。 相反,我们可以在将视频流式传输到服务器时录制视频。 喜欢

   netStream.publish("YourFileName.flv","record");

但是在记录文件中,我只会得到一个由网络摄像头发布到服务器的视频文件,我想记录整个会话。

有没有办法在本地录制,或者我可以录制窗口吗??

附言: 我没有尝试访问 Flash 播放器之外的任何内容。

提前谢谢...

【问题讨论】:

  • 当你说“记录窗口”时,你到底是什么意思?整个屏幕?浏览器窗口?桌面上的空气?还是 swf 本身的全部内容?
  • @Jason Reeves :我想记录 swf 本身的全部内容。

标签: actionscript-3 flash apache-flex record


【解决方案1】:

好的,你可以像这样记录swf的全部内容:

首先,创建一个容器对象(扩展 DisplayObject 并实现 IBitmapDrawable 的任何对象),然后放置您想要捕获的所有内容(视频视图和“会话”中的所有其他内容),然后使用 ENTER_FRAME 事件或计时器(最好控制捕获fps),使用 BitmapData.draw(container) 将容器绘制到 BitmapData。使用它的 addFrame() 方法将 BitmapData 传递给FLV encode library found here(文档和示例随该库一起提供......超级简单),就是这样!完成后,您将获得一个 flv 视频,其中包含您的 swf 中发生的逐帧“屏幕截图”!只要确保一切都在容器中!如果您愿意,该库也可以接受捕获的音频。

private function startCapturing():void{
    flvEncoder.start(); // see the libs docs and examples

    var timer:Timer = new Timer(1000/15); //capture at 15 fps
    timer.addEventListener(TimerEvent.Timer, onTimer);
    timer.start();
}

private function onTimer(event:TimerEvent):void{
    var screenCap:BitmapData = new BitmapData(container.width, container.height);
    screenCap.draw(container);

    flvEncoder.addFrame(screenCap); // see the libs docs and examples
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多