stagefright flow

本文介绍了Java多媒体框架的基本使用流程,包括MediaPlayer的初始化、数据源设置、解码器初始化及播放控制等关键步骤,并深入探讨了AwesomePlayer内部实现机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

也是草稿箱里的内容,想当年的知识:~不过还没写清楚。先放出来,然后慢慢地去完成。


在java层实用多媒体框架有下面几部:

1.  new MediaPlayer()

2. setDataSource()

3. prepare()

4. play()


每一步都做了什么:

new MediaPlayer():

native_setup(): new MediaPlayer()------>setMediaPlayer()


setDataSource():

最终在AwesomePlayer中调用setAudioSource()和setVideoSource().   这里的audio source和videosource还不具备解码功能。


prepare():

最终在AwesomePlayer中调用initAudioDecoder()和initVideoDecoder().  封装了解码功能


play():

怎么开始解码的需要详细整理一下。


在prepare()和play()过程中,触发AwesomePlayer的工作是通过发送消息来完成的:

prepare():  mQueue.postEvent(mAsyncPrepareEvent);

play():     mQueue.postEventWithDelay(mVideoEvent, delayUs < 0 ? 10000 : delayUs);//仅仅针对video的播放

               //audio的播放时通过startAudioPlayer_l()来开始的。


mQueue是TimedEventQueue类型的对象。需要先调用mQueue.start()来启动这个event queue用来接受并处理消息。postEvent和postEventWithDelay的参数在这里是一个AwesomeEvent对象。 AwesomeEvent继承自TimedEventQueue::Event类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值