程序大做战,萌出一脸血!

      很是开心平生所写的第一篇博客就得到了普遍的赞誉,还有幸登上了编辑推荐,看来不只是程序人生寂静欢喜,博客生涯也是岁月静好啊!在此仍是把本人的杰做高挂:《程序人生的寂静欢喜》,高调仍是要有的,万一红了呢?你说是吧?html

一. 引子

      你们眼里的程序首先是这样的:服务器

namespace OMCS.Passive
{
    // 摘要:
    // 多媒体设备管理器基础接口。用于管理本地的全部多媒体设备。 
    public interface IMultimediaManager : IDisposable
    { 
// // 摘要: // 是否根据音频反馈以及视频丢帧状况自动调整视频编码质量。 bool AutoAdjustCameraEncodeQuality { get; set; } // // 摘要: // 掉线后,是否自动重连。 bool AutoReconnect { get; set; }
//
// 摘要: // 语音视频聊天组入口。 IChatGroupEntrance ChatGroupEntrance { get; }
// // 摘要: // 是否将话筒采集到的音频输出给Guest。 bool OutputAudio { get; set; } // // 摘要: // 是否将桌面图像输出给Guest。默认值为true。 bool OutputDesktop { get; set; } // // 摘要: // 是否将摄像头集到的视频输出给Guest。 默认值为true。 bool OutputVideo { get; set; }
//
// 摘要: // 当通道繁忙时,采起的视频帧(来自摄像头)丢弃模型。默认值为DiscardWhenNeed。 FrameDisardedMode VideoFrameDisardedMode { get; set; }
//
// 摘要: // 刚刚从话筒采集的音频帧。 event CbGeneric<byte[]> AudioCaptured; // // 摘要: // 刚刚播放的音频帧。 event CbGeneric<byte[]> AudioPlayed;
// // 摘要: // 与多媒体服务器创建链接,并初始化本地多媒体管理器。 若是与服务器链接失败,将抛出网络异常。 void Initialize(string userID, string password, string serverIP, int serverPort);
// // 摘要: // 和目标用户之间是否打通了P2P通道? bool IsP2PChannelExist(string destUserID); } }

 

      但是你并不会知道他们在我眼里实际上是这样的——网络

二.程序大做战

     1.所谓的:“  OMCS 多媒体管理器,用于管理本地的全部多媒体设备。” 其实就是这个意思:ide

     

      2.所谓的布尔类型的属性,其实就是一个个开关嘛,像这样:编码

     

  2.所谓方法,其实就是一个个按钮,就像这样:spa

       

  2.所谓事件,其实就是一个个插槽,就像这样:code

    

  2.所谓的布尔类型的只读属性,其实就是一个个指示灯,就像这样:视频

   

 2.另外四个链接器能够就像这样:server

    

二.萌出一脸血

       最后,将这个零件所有组装起来,就成为了一个 OMCS 客户端了。是否是很萌呢?只要咱们调整这些开关,控制这些按钮,外接这些插槽,并观察指示灯的变化,就能够将“阿童木”胸前的多媒体链接器发射出去,链接到远程机器上的多媒体设备了!htm

  

       运用形象化的思惟,咱们能够把本来很抽象枯燥,条分缕析的代码,变得鲜活、生动而又富有趣味,你们在理解程序的时候也能够借鉴一下哦。

相关文章
相关标签/搜索