C# Skype API 视频通话

10

我正在开发一个安全监控应用程序,我发现最好的方法是使用Skype。

当可能发生入侵事件时,该应用程序会拨打指定的Skype ID,可能是我的Android手机。我已经完成了所有图像处理工作,但我卡在了这个Skype API上。我写了这段代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SKYPE4COMLib;


namespace SkypeCall
{
    class Program
    {
        static void Main(string[] args)
        {
            Skype skype;
            skype = new Skype("Skype4COM.Skype", "Skype_");

            Call call = skype.PlaceCall(SkypeID);
            call.StartVideoSend();
        }
    }
}

这会启动一个语音呼叫,但是在调用call.StartVideoSend();时会显示错误。

 An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in SkypeCall.exe

Additional information:  CALL: Action failed

我甚至尝试了这个,但我想那是旧的API,无法从中获取任何内容。而且,即使通过发送命令也没有用。

如果有人能帮我解决问题,我将非常感激。

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
5

我认为你需要等到通话连接后再进行操作。

最简单的方法是测试通话状态(call.Status)。

class Program
    {
        static void Main(string[] args)
        {
            Skype skype;
            skype = new SKYPE4COMLib.Skype();
            string SkypeID = args[1];
            Call call = skype.PlaceCall(SkypeID);
            do
            {
                System.Threading.Thread.Sleep(1);
            } while (call.Status != TCallStatus.clsInProgress);
            call.StartVideoSend();
        }
    }

您也可以添加事件,但我认为这将在每次调用时触发,所以除非您只在此项目中使用它,否则可能太过冗余。

class Program
    {
        static string SkypeID = "";
        static void Main(string[] args)
        {
            Skype skype;
            skype = new SKYPE4COMLib.Skype();
            skype.CallStatus += new _ISkypeEvents_CallStatusEventHandler(skype_CallStatus);
            Call call = skype.PlaceCall(SkypeID);

            Console.ReadKey();
        }

        static void skype_CallStatus(Call pCall, TCallStatus Status)
        {
            if (Status == TCallStatus.clsInProgress && pCall.PartnerHandle == SkypeID) { pCall.StartVideoSend(); }
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,