SharpStreaming项目开发纪实:概述

    从本月开始,笔者将利用工作之余使用C#开发一套基于流媒体技术的服务器与客户端。之所以有这个想法,主要是基于以下几点原因:

    1、半年多以前,笔者开始致力于流媒体技术的研究,并充分了解了开源流媒体服务器live555的架构及若干开发细节,同时在其基础上使用C++进行了二次开发。经过这半年多来的艰苦努力,笔者虽不敢说对流媒体技术有全面的了解或掌握,但亦对流媒体的基本流程有了相对清晰的认识,并能够将其运用于实际的项目开发当中。为此,编写一个小型项目,对进一步理清流媒体的开发思路应该大有裨益。

    2、一直以来,笔者对C#的学习从未放弃过。在C#与C++的选择中,笔者一直较青睐于前者,如果非要说有什么理由,我想首当其冲的应该是对编程语言的感觉吧。当然,C++开发的复杂及繁琐也是其中的因素之一。使用C#开发一个小型项目,或许对编程能力和经验的提升应该是有百利而无一害吧。

    3、最近几个月以来,笔者的工作处于相对宽松的状态,利用这段时间来进行充电或许又是一个不错的选择吧。

    于是乎,在理解流媒体基本处理流程的基础上,加之曾利用空闲时间阅读过的一些开源项目,如live555(使用C++编写)、conferencexp(使用C#编写)等等,便产生了利用C#开发一个服务器和客户端项目的想法。

    要完成这样一个工作量相对庞大的项目开发,还是要费一番周折的。为此,本人将充分借鉴live555开源流媒体项目的基本实现思路,以加快开发进度。同时,将该项目初步划分为以下四个部分进行:

    1、构建基本的服务器及客户端应用;

    2、构建基于RTSP协议的服务器及客户端应用;

    3、构建基于RTP/RTCP协议的服务器及客户端应用;

    4、构建可用于播放特定格式的客户端应用。

    上述每一部分都需要准备相关知识,包括但不限于Socket编程、多线程编程、TCP协议、UDP协议、RTSP协议、SDP协议、RTP/RTCP协议、文件操作等等。特别是对于构建可用于播放特定格式的客户端应用,笔者仍然是空白一片,也许需要从DirectShow技术开始,从音视频编解码技术开始,未知数。

    在这里,笔者初步将本项目命名为SharpStreaming项目,包括服务器(SharpStreamingServer)和配套的客户端(SharpStreamingClient)两个部分。在项目进度的管理上,因为该项目属于业余项目,故采用松散的管理方式。同时,笔者将乐于与各位朋友、开发爱好者分享个人的开发心得体会,并适当公布一些源代码或实现思路。

    这将是一个具有挑战性的开发工作,这将是一个开发周期相对漫长的工作,期间也可能会出现各种各样的从未遇过的问题。但只有敢于接受挑战,勤于学习,重于实践,才能在软件开发这条道路上更快地成长起来。Just do it!

你可能感兴趣的:(程序开发,流媒体)