傲瑞组件开发手册(05) -- 语音视频播放组件 MPlayer

       在多媒体系统中,一般都会涉及到语音数据、视频数据的播放问题,比如播放采集到的麦克风数据、摄像头数据,或播放wav文件等。

  MPlayer 是傲瑞实用组件之一,可用于播放声音数据、视频图像数据。

一.MPlayer 简介

  当前版本的MPlayer组件支持:

(1)播放声音:直接播放PCM声音数据,播放WAV文件。播放时,可指定扬声器索引、声音数据的采样率、采样深度、声道数。

(2)播放图像:该功能暂不支持。 

二.MPlayer 结构

  对于使用者而言,MPlayer组件中的主要类的结构图如下所示:

      

(1)IAudioPlayer是声音播放器。

(2)我们可以通过调用PlayerFactory的CreateAudioPlayer方法来创建声音播放器实例。

(3)得到播放器实例后,使用声音数据调用其Play方法,就会播放传入的数据;不再使用播放器时,调用其Dispose方法将其释放。 

三.使用接口详细定义

1.各播放器接口

     /// <summary>
    /// 声音播放器。用于播放PCM声音数据。
    /// </summary>
    public interface IAudioPlayer :IDisposable
    {       
        /// <summary>
        /// 将声音数据放到播放队列中,进行播放。
        /// </summary>
        /// <param name="audioData">声音数据</param>
        void Play(byte[] audioData);

        /// <summary>
        /// 清除缓冲区中尚未播放的数据。
        /// </summary>
        void Clear();
    }

  要特别提醒的是:

(1)声音播放器IAudioPlayer内部使用了缓存队列,缓存的大小可在创建时进行设置。如果缓存中的数据尚未播放完,此时调用Play传入的数据将会在后面排队。

(2)如果调用Play传入的数据的量大于缓存中剩下的空间,则会自动丢弃缓存中最老的数据。 

(3)调用Clear方法,可以立即情况缓存中尚未播放的数据。  

2.播放器工厂

     /// <summary>
    /// 播放器工厂。
    /// </summary>
    public static class PlayerFactory
    {
        /// <summary>
        /// 创建声音播放器。用于播放PCM声音数据。默认采样位数:16,默认缓存大小:10秒。
        /// </summary>
        /// <param name="speakerIndex">使用的扬声器设备的索引。</param>
        /// <param name="sampleRate">声音数据的采样率。</param>       
        /// <param name="channelCount">声道数。</param>
        public static IAudioPlayer CreateAudioPlayer(int speakerIndex, int sampleRate, int channelCount);        
         /// <summary>
        /// 创建声音播放器。用于播放PCM声音数据。
        /// </summary>
        /// <param name="speakerIndex">使用的扬声器设备的索引。</param>
        /// <param name="sampleRate">声音数据的采样率。</param>
        /// <param name="channelCount">声道数。</param>
        /// <param name="bitsNumber">声音数据的采样位数。一般为16。</param>        
        /// <param name="bufferSizeInSecs">缓冲区的大小:最多存储几秒钟的声音数据。默认值为10秒。</param>
        public static IAudioPlayer CreateAudioPlayer(int speakerIndex, int sampleRate, int channelCount, int bitsNumber, int bufferSizeInSecs);
        /// <summary>
        /// 解析WAV文件。
        /// </summary>        
        public static AudioInformation ParseWaveFile(string filePath);       
    }

(1)在创建声音播放器时,我们必须要清楚接下来所播放的声音数据的性质:采样率、采样位数、声道数。

(2)关于CreateAudioPlayer方法的bufferSizeInSecs参数的取值:

         如果是播放实时采集的数据(比如实时的聊天系统),则bufferSizeInSecs设为2~5秒即可。

         如果是播放从文件中(如WAV文件)提取出来的大块声音数据,则bufferSizeInSecs就设置为比要播放的声音时长大1秒即可。

(3)ParseWaveFile方法用于解析WAV文件,在该方法的支持下,我们就很容易使用IAudioPlayer来播放wav文件了。 

四.MPlayer Demo 

      下面是一个最简单的使用MPlayer组件的Demo,这个demo演示了两个功能:(1)使用MCapture采集麦克风的声音,然后使用MPlayer播放出来;(2)播放wav声音文件。

       Demo 运行的截图如下所示:      

       

      MPlayer Demo 源码:Oraycn.MPlayerDemo.rar

      注:如果采集麦克风并播放,没有听到声音,则可能原因是:

(1)麦克风或扬声器的index设置的不正确。

(2)检查麦克风设备的音量是否调为0了?

           

 

-----------------------------------------------------------------------------------------------------------------------------------------------   

下载 更多傲瑞组件以及Demo源码 

阅读 更多傲瑞组件开发手册系列文章 

Q Q:168757008 

官网:http://www.oraycn.com/ 

导航

首页

官方网站

联系我们

立即咨询 

站内搜索

OrayTalk 企业即时通讯系统

傲瑞通官网

详细说明

客户端下载

OrayMeeting 视频会议系统

详细说明

客户端下载

ESFramework 通信框架

详细说明

SDK与Demo下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK与Demo下载

OMCS FAQ

版本变更记录

OVCS 视频会议Demo

详细说明

源码下载

傲瑞实用组件

SDK下载

H5Media 纯网页音视频交互

NPusher 推流组件

MCapture 语音视频采集组件

MFile 语音视频录制组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

StriveEngine 轻量级的通信引擎

傲瑞组件 FAQ

授权

授权流程

产品选购指南

授权方案说明

授权SDK使用说明

其它

支持信创国产化

SDK使用技巧

联系我们