C# 是否有办法在流媒体播放之前通过Expression Encoder SDK编辑从网络摄像头接收的视频?

C# 是否有办法在流媒体播放之前通过Expression Encoder SDK编辑从网络摄像头接收的视频?,c#,wpf,streaming,webcam,expression-encoder,C#,Wpf,Streaming,Webcam,Expression Encoder,我正在尝试使用WPF构建一个应用程序,该应用程序基本上需要从您的网络摄像头获取视频并进行流式传输(这一部分很像Skype,我已经完成了这一部分),但棘手的部分是,我希望用户能够播放他们的视频流。比如他们应该能够画一个小胡子(小胡子只是一个例子,它可以是任何东西..像一个虚拟白板),另一边的客户应该能够看到它,如果可能的话还可以操纵它 我知道使用silverlight可能会更容易,但WPF是必须的。我将非常感谢任何帮助!请给我指一条路。。谢谢 这里是我用来收集流的代码,如果它对你有帮助的话,但是我

我正在尝试使用WPF构建一个应用程序,该应用程序基本上需要从您的网络摄像头获取视频并进行流式传输(这一部分很像Skype,我已经完成了这一部分),但棘手的部分是,我希望用户能够播放他们的视频流。比如他们应该能够画一个小胡子(小胡子只是一个例子,它可以是任何东西..像一个虚拟白板),另一边的客户应该能够看到它,如果可能的话还可以操纵它

我知道使用silverlight可能会更容易,但WPF是必须的。我将非常感谢任何帮助!请给我指一条路。。谢谢

这里是我用来收集流的代码,如果它对你有帮助的话,但是我愿意接受任何事情,任何改变

_job = new LiveJob();
EncoderDevice videoDev = null;
foreach (EncoderDevice ved in EncoderDevices.FindDevices(EncoderDeviceType.Video))
    if (ved.Name == VideoDevices.SelectedItem.ToString())
        videoDev = ved;

EncoderDevice audioDev = null;
foreach (EncoderDevice aed in EncoderDevices.FindDevices(EncoderDeviceType.Audio))
    if (aed.Name == AudioDevices.SelectedItem.ToString())
        audioDev = aed;
LiveDeviceSource deviceSource = _job.AddDeviceSource(videoDev, audioDev);

_job.ActivateSource(deviceSource);

PullBroadcastPublishFormat outputFormat = new PullBroadcastPublishFormat();
outputFormat.BroadcastPort = 8080;
_job.PublishFormats.Add(outputFormat);

_job.StartEncoding();

我的建议是构建一组绘制/操作命令,让这些命令分别发送到视频,然后在另一端重建,覆盖结果。这将允许简单的双向交互,因为他们都将分别发送更改,他们可以轻松地“撤消”操作,执行非位图操作等


这样的命令可以是:;使用此笔刷沿这些点绘制贝塞尔曲线,在此处应用扭曲变换,使用这些参数,在此处绘制圆,在此处调用胡须等。

我的建议是创建一组绘制/操作命令,让这些命令分别发送到视频,并在另一端重建,覆盖结果。这将允许简单的双向交互,因为他们都将分别发送更改,他们可以轻松地“撤消”操作,执行非位图操作等


这样的命令可以是:;使用此笔刷沿这些点绘制贝塞尔曲线,在此处应用扭曲变换,使用这些参数,在此处绘制圆,在此处调用胡子等。

当您说客户可以操纵它时,您的意思是“移动胡子”(即,它被视为一个独特的对象,与视频提要分离),还是你只是想让他们也能画画?谢谢你的回复!我希望他们都能活跃在白板上,这样他们就能画画了。但你的回答似乎足够令人满意,并且让我在听到其他人的回答后改变了想法。当你说客户可以操纵它时,你的意思是“移动胡子”(即,它被视为一个不同的对象,与视频源分开),还是你只是想让他们也能画画?谢谢你的回答!我希望他们都能活跃在白板上,这样他们就能画画了。但是你的回答似乎足够让我满足,并且让我在听到别人的回答后改变了想法。谢谢你的回答!我也在考虑做同样的事情,但把它们都包装在同一条流中似乎是另一种选择,我无法决定。但现在想想重做,撤销的可能性似乎更符合逻辑。谢谢你的回答!我也在考虑做同样的事情,但把它们都包装在同一条流中似乎是另一种选择,我无法决定。但现在想想重做,撤销的可能性似乎更符合逻辑。