您的位置:华清远见教育科技集团 >> Android资料 >> Android Stagefright多媒体框架  
 
Android Stagefright多媒体框架
分享到:

Stagefright框架是Android 2.3正式引入的多媒体框架,其在Android 2.0中就已经添加到Android的代码库中。Stagefright框架的引入对上层应用没有影响,其接口在原生的多媒体服务中引入。

static sp< MediaPlayerBase> createPlayer(player_type playerType, void* cookie,notify_callback_f notifyFunc)
    {
        ……
        case STAGEFRIGHT_PLAYER:
        LOGV("create StagefrightPlayer");
        p = new StagefrightPlayer;
        break;
        ……
    }

Stagefright框架和OpenCORE框架切换非常简单,目前Stagefright已经成为默认的媒体播放器。

static player_type getDefaultPlayerType()
    {
        return STAGEFRIGHT_PLAYER;
    }

Stagefright框架并没有完全抛弃openCORE框架的内容,而是封装了一个OMX层用于引用openCORE的OMX组件部分。

Stagefright框架本身同样比较复杂,下面分播放框架和记录框架两部分进行简要说明。

1.播放框架

Stagefright的播放主要是围绕着AwesomePlayer进行的, Stagefright播放框架的类图如图1-1所示。

图1-1  Stagefright播放框架的类图
图1-1 Stagefright播放框架的类图

在Stagefright播放框架中,AwesomePlayer是重要的一个类,如果支持硬件视频渲染,则需要对VideoRenderer进行实现,在Qualcomm平台上,相应的类为QComHardwareRenderer。如果不支持硬件视频渲染,系统将采取软件渲染的方式,相应的渲染类为SoftwareRenderer。当然软件渲染会会造成系统性能的下降。也不支持高清视频。

解析器的封装是通过MediaExtractor类进行的,对于不同的多媒体格式,针对MediaExtractor进行实现即可,目前Stagefright支持的媒体播放格式包括WAV、OGG、MP4、AMR、MP3等。

AwesomePlayer通过AwesomeEvent事件来驱动整个播放过程。

具体的解码过程通过OMXCodec根据文件格式调用不同的解码器进行解码,Stagefright播放框架提供的解码器包括AMRNBDecoder、AMRWBDecoder、AACDecoder、AVCDecoder、G711Decoder、M4vH263Decoder、VorbisDecoder、VPXDecoder等。

2.记录框架

在Stagefright记录框架中,StagefrightRecorder是重要的一个类。Stagefright记录框架的类图如图1-2所示。

图1-22  Stagefright记录框架的类图
图1-22 Stagefright记录框架的类图

Stagefright记录框架的音频数据源通过AudioSource配置,视频数据源通过CameraSource配置。针对不同多媒体格式的记录过程,Stagefright记录框架提供了AMRWriter、MPEG2TSWriter、MPEG4Writer等类进行支持。

具体的编码过程通过OMXCodec根据文件格式调用不同的编码器进行编码,Stagefright记录框架提供的编码器包括AMRNBEncoder、AMRWBEncoder、AACEncoder、AVCEncoder、M4vH263Encoder等。

 更多相关文章

·Android PVPlayer引擎A/V同步技术
·Android OSCL底层移植
·OpenCORE文件解析和组合处理
·Android OpenCORE多媒体引擎
·Android PVPlayer引擎的实现