将现有视频文件提供给来自C#的Skype呼叫的最简单方法是什么?

时间:2013-02-20 22:10:16

标签: c# webcam skype

我在SO和其他地方看过很多地方,但似乎没有什么能直接回答我的问题(至少没有使用我熟悉的术语)。

  

注意:我们意识到让视频自动应答器顺利工作并且看起来很好的挑战,但这个问题与此无关。现在我正专注于向Skype提供视频文件的直接技术问题。

背景
我被要求创建一个Skype“自动应答器”,用于支持音频和视频呼叫以及IM聊天的演示环境。

问题
为此创建IM聊天“bot”相对容易,并且看起来存在用于通过呼叫播放音频文件的现有Skype API,但是没有用于播放视频文件的API。

做我的家庭作业
在Skype API中,还有另一个名为SkypeKit的版本,据称它提供了一些与标准Desktop API不同的功能。我已经提交了访问SkypeKit但尚未收到回复的请求。

除了Skype API的支持之外,我们的下一个想法是必须有可供下载/购买的虚拟网络摄像头组件,以便我们播放视频,以便Skype认为它来自网络摄像头。我在stackoverflow上找到的一个比较接近的问题是:

  

How to transmit with a virtual webcam driver in .NET

然而,该帖子的作者限制了他对免费/开源解决方案的要求,而我可以选择使用商业组件(在合理范围内)。此外,对它的唯一响应意味着使用DirectShow构建您自己的虚拟网络摄像头。

在SO和其他网站上,有很多关于使用DirectShow构建自己的虚拟网络摄像头的讨论,但这似乎比仅购买少数几美元的东西要贵得多。我没有使用DirectShow或任何相关的经验,只需要时间来理解概念和术语。我可以花时间学习所有这些,但如果有的话,更简单的解决方案是首选。

就现有组件而言,我唯一能找到的是Virtual Camera SDK,但它似乎专注于捕获视频(来自屏幕或真实网络摄像头),而不是冒充其他应用程序的网络摄像头。他们的网站信息也相当模糊,这让我有点谨慎。

我找到了很多其他的产品和讨论,但在这里列出它们将会很乏味且无法提供信息。

问题
我的实际问题有两个部分:

  1. 将视频文件流式传输到Skype通话的最佳方式是什么?
  2. 如果答案是通过虚拟网络摄像头,最简单的方法是什么(即现成好的组件,示例代码等)。
  3.   

    顺便说一句,有人甚至建议只在屏幕上播放视频,并设置一个真正的网络摄像头,将图像流式传输到Skype。可以想象,完全程序化的解决方案会更好。

    提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:1)

使用当前的技术,我会说最好的选择是使用虚拟网络摄像头实现。

有多种解决方案可供选择(快速Google搜索 - www.google.com/search?q=virtual+webcam - 返回了很多选项)。完整的POC解决方案将涉及:

  • 初始化虚拟网络摄像头并准备好播放视频;
  • 确保Skype正在使用虚拟网络摄像头作为视频源;
  • 使用Skype API检测Skype传入的视频通话;
  • 使用Skype API接听电话,并使用虚拟设备作为目标开始视频播放。
  • 清理:在视频结束时挂断,或者如果远程呼叫者挂断,则停止播放。