【问题标题】:How to apply Filters on publishing stream如何在发布流上应用过滤器
【发布时间】:2011-05-20 22:58:13
【问题描述】:

我开发了一个 Flash 视频录像机(使用 AS3、Flex),它可以捕捉实时网络摄像头并将流传输到 Wowza 媒体服务器。

我正在尝试对正在捕获的实时视频应用锐度、对比度、饱和度和锐度滤镜。

我可以对屏幕上捕获的视频应用滤镜效果。我们如何应用过滤器以使其反映在正在发布的流中?

提前谢谢你 拉杰什

【问题讨论】:

  • afaik 只有在客户端才有可能。但是您可以通过 NetStream.send() 传递所有过滤器设置并将它们应用到另一端
  • 感谢您的及时回复。
  • 能否请您参考任何媒体服务器的示例?
  • 例如,如何使用闪存媒体服务器来实现。
  • 我没有在服务器端处理它的任何经验:从来没有机会尝试它。但是据我所知,FMS 使用动作脚本,所以它并不难。我将通过 adobe stratus(2 个连接 p2p 的 Flash 应用程序)以 NetStream.send() 示例发布答案

标签: apache-flex flash actionscript-3 recorder


【解决方案1】:

此代码来自用于研究 adobe stratus 功能的测试应用程序,它重复了 Skype 的基本功能

这是处理类:

public class RecievingObject extends Object
    {        
        public function RecievingObject(){

        }        
        public function message(str: String):void {
            ChatWindow.addText('>> ' + str);
        }
    }

以及它如何附加到流(除了NetStatusEvent 什么都不做的处理程序之外的整个类):

    public final class Streams
    {

        private static var streamOut: NetStream;
        private static var streamIn: NetStream;

        public static function initIn(id: String): void {
            streamIn = new NetStream(Main.connection, id);
            streamIn.client = new RecievingObject();
            streamIn.addEventListener(NetStatusEvent.NET_STATUS, onInStatus);
            streamIn.receiveVideo(true);
            streamIn.receiveAudio(true); 
            streamIn.play('media');
            VideoWindow.initIn(streamIn);
            Mixer.initSound(streamIn);
        }

        public static function initOut(): void {
            streamOut = new NetStream(Main.connection, NetStream.DIRECT_CONNECTIONS);
            var peerConnected:Object = new Object();
                peerConnected.onPeerConnect = function(subscriberStream : NetStream) : Boolean {
                    var oo:RecievingObject = new RecievingObject();
                    subscriberStream.client = oo;
                    if(!streamIn){ initIn((subscriberStream as NetStream).farID); }                    
                    return true;
                }
            streamOut.client = peerConnected;            
            streamOut.addEventListener(NetStatusEvent.NET_STATUS, onOutStatus);            
            streamOut.attachCamera(Camera.getCamera());
            streamOut.attachAudio(Microphone.getMicrophone());
            streamOut.publish('media'); 
        }


        public static function send(data: String): void {
            if(streamOut) { streamOut.send('message', data); }
            ChatWindow.addText('<< ' + data);
        }
   }

【讨论】:

  • 嗨,有人可以通过 Wowza 媒体服务器帮助解决这个问题吗?
  • 在这方面需要紧急帮助,等待有人帮助。帮助!救命!
  • 当然,在传递参数后我们需要在服务器端做什么。
  • @Rajesh : 有没有某个播放器播放你的流?如果是,有两种方法: 1. 找到一种方法为每个连接的客户端调用NetStream.send() 并在NetStream.client 中处理它 2. 将过滤器设置放入服务器上的某个 xml 文件中,并让客户端在启动时读取它(或者可能每隔一段时间 - 如果您要在运行时更改过滤器)
  • 1) 视频将以flv格式保存在媒体服务器上。 2)我们将方便用户检索这个flv文件。 3) 用户可以对该文件进行转码,并可以在他们拥有的任何播放器中播放。 3)因此,过滤器必须应用于视频流,并且不能单独存储并在播放时应用(没有限制用户想要播放视频的位置)。
猜你喜欢
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
相关资源
最近更新 更多