非常開心生平所寫的第一篇博客就獲得了廣泛的贊譽,還有幸登上了編輯推薦,看來不僅是程序人生寂靜歡喜,博客生涯也是歲月靜好啊!在此還是把本人的傑作高掛:《程序人生的寂靜歡喜》,高調還是要有的,萬一紅了呢?你說是吧?
一. 引子
大家眼里的程序首先是這樣的:
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 多媒體管理器,用於管理本地的所有多媒體設備。” 其實就是這個意思:

2.所謂的布爾類型的屬性,其實就是一個個開關嘛,像這樣:

2.所謂方法,其實就是一個個按鈕,就像這樣:
2.所謂事件,其實就是一個個插槽,就像這樣:

2.所謂的布爾類型的只讀屬性,其實就是一個個指示燈,就像這樣:

2.另外四個連接器可以就像這樣:
二.萌出一臉血
最后,將這個零件全部組裝起來,就成為了一個 OMCS 客戶端了。是不是很萌呢?只要我們調整這些開關,控制這些按鈕,外接這些插槽,並觀察指示燈的變化,就可以將“阿童木”胸前的多媒體連接器發射出去,連接到遠程機器上的多媒體設備了!

運用形象化的思維,我們可以把原本很抽象枯燥,條分縷析的代碼,變得鮮活、生動而又富有趣味,大家在理解程序的時候也可以借鑒一下哦。
