Android视频开发基础(三)

本文探讨Android视频开发中的MediaDataSource,揭示其允许自定义数据获取方式,提高播放器灵活性。通过MediaDataSource,实现边播边存和网络请求定制,以达到文件缓存和节省带宽的效果。介绍DataSource原理,并提及在Android 6.0及以上版本的应用。

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

        接着之前两篇文章继续来讲Android视频开发这个主题。今天这篇文章,我们来聊一聊Android中MediaPlayer的DataSource。也许有的同学会觉得奇怪,DataSource有什么好讲的,我们直接调用MediaPlayer的setDataSource方法不就可以了。其实我们要讲的是更深层次的问题:怎么来干预视频播放器获取数据的过程。要解释这个问题,首先我们先来看看原生播放器的组成。下面是原生播放器的结构图。

 

       从图中我们可以看到,播放器的工作流程是:拉流线程通过播放器内的网络库去请求视频数据,然后交给解码线程进行解码,解码线程解析出的视频数据帧交给播放器的渲染线程去绘制到屏幕上。也就是说,播放器是自己去发送网络请求拉取数据的(如果是本地视频直接从本地地址读取),这个过程是完全封闭在播放器内部,用户只需要提供一个播放地址,播放器就帮我们把其他工作做掉了,这样的设计虽然简化了用户的操作,但是灵活性是比较差的,不利于功能的扩展。

       为了能够给用户提供更多的灵活性,Android新增了MediaDataSource类,通过给播放器设置MediaDataSource,我们就可以通过这个类来给播放器提供数据源。那么播放器的工作过程就变成了下图所示的样子。播放器每次读取数据都是直接从DataSource获取,至于DataSource的数据是从哪里来,是来自网络还是本地缓存,或者其他什么来源,对播

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值