视频会议系统是一个实时的多媒体应用系统,其主要功能包括实时音视频、文档共享、屏幕共享、电子白板、流媒体协同播放等功能,而在流媒体播放功能中,除了需要之前的音、视频编解码、传输等作为保障,也需要对传输的数据进行协同实时播放,因此流媒体协同播放在视频会议系统的开发过程中,难度要比其他的模块要大。
首先我们先要了解在视频会议系统开发当中的流媒体协同播放的整个过程。一般的情况下,流媒体协同播放是在主席端进行控制,如主席打开一个影片共享给其他的客户端,其他的客户端可以实时收看到主席播放的影片的音视频,从而实现主席端协同播放影片的功能。
流媒体数据是指一些音、视频数据通过流式的结构保存到存储设备上,这些流媒体数据可以通过我们常用的播放器进行播放,如暴风影音等,在我们视频会议系统的应用中,我们还可以把流媒体数据进行协同共享,就像我们平时使用的文档协同浏览一样。在视频会议系统的流媒体协同播放功能可以通过多种方式实现,我们总结了几个常用的方式:重编码模式、分帧传输模式、PIN接口传输模式。
1、重编码模式
一般的情况下,在视频会议系统里面不能直接把流媒体数据在没有进行处理情况下,直接对流媒体数据进行传输。重编码模式顾名思义就是把流媒体数据重新编码,首先我们要对流媒体数据进行解码,然后对解码后的数据再按照自己定义的方式进行压缩编码,然后接收方再进行解码和播放,该方式可以对不同的流媒体进行操作。但该方式需要对流媒体的数据进行压缩和重新的编码,因此效率不高。
2、数据分帧传输模式
数据分帧传输模式是我们流媒体协同播放开发常见模式,首先我们要对流媒体数据进行分析,进而把流媒体的数据分成不同类型的数据帧,然后通过视频会议系统的传输信道进行传输,客户端接收到一帧完整的数据后,就可以对数据进行解码处理,从而就可以实时的播放流媒体数据。该方式的主要难点在怎样把流媒体数据进行分帧处理,而不同格式的流媒体数据其数据格式都不尽相同,因此我们对不同的数据格式的流媒体采用不同的数据分帧处理。该方式的优点是效率较高,不需要进行解码和重新编码就可以进行实时地播放。
3、PIN接口传输模式
在视频会议系统的播放流媒体的时候,一般都是通过DirectShow的PIN接口获取流媒体的数据类型及数据,这些数据其实可以通过DirectShow的POUT接口进行播放,因此我们在PIN接口获取这些数据,然后把这些数据传输到接收方,进行播放。该方式是目前最完美的流媒体协同播放的开发的模式,不仅可以支持几乎全部的流媒体格式,而且不需要进行额外的音视频解码和编码,因此处理效率和传输效率都非常高。
综上所述,视频会议系统中的流媒体协同播放的开发,可以通过以上三种方式来实现,这三种方式最佳是利用DirectShow的PIN接口进行数据的截取和传输的模式。