Skip to content

Commit de97a2f

Browse files
committed
update
1 parent 808844f commit de97a2f

File tree

2 files changed

+12
-40
lines changed

2 files changed

+12
-40
lines changed

VideoDevelopment/Android音视频开发/AudioTrack简介.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ AudioTrack简介
44
Android系统提供了三种播放音频文件的方式:
55

66
- SoundPoll:适合播放短促且对反应速度要求比较高的情况(如游戏音效、按键声等)
7-
- AudioTrack:只支持播放解码后的PCM流,如果是文件的话只致辞WAV格式的音频文件,因为WAV格式的音频文件大部分都是PCM流,AudioTrack不创建解码器,所以只能播放不需要解码的WAV文件,但是CPU占用率低,内存消耗也比较小。因此如果是播放比较短时间的WAV音频文件,建议使用AudioTrack。
7+
- AudioTrack:只支持播放解码后的PCM流,如果是文件的话只支持WAV格式的音频文件,因为WAV格式的音频文件大部分都是PCM流,AudioTrack不创建解码器,所以只能播放不需要解码的WAV文件,但是CPU占用率低,内存消耗也比较小。因此如果是播放比较短时间的WAV音频文件,建议使用AudioTrack。
88
- MediaPlayer:适合比较长且时间要求不那么高的情况,支持多种文件格式,如MP3、WAV、AAC等。其实MediaPlayer是基于AudioTrack的封装,内部也是使用AudioTrack,MediaPlayer在framework层也实例化了AudioTrack,MediaPlayer在framework层进行解码后,生成PCM流,然后代理委托给AudioTrack,最后AudioTrack传递给AudioFlinger进行混音,然后才传递给硬件播放。
99

1010

VideoDevelopment/Android音视频开发/播放器性能优化.md

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
- 相比H264,编码复杂度提升4倍,更消耗系统资源
2626
- 编码时间更长
2727

28-
通过软解可以支持,但是CPU会占用较高,而且发热和好点
28+
通过软解可以支持,但是CPU会占用较高,而且发热和耗电
2929
对解码能力进行评估,来通过机型打分控制是否使用H265以及是用360p还是480p。
3030
但是H265全部切换成本较高,牵扯到转码成本以及存储成本,所以可以只对热点的视频去进行编码,这样少量的视频就可以带来可观的效果。
3131

@@ -68,15 +68,15 @@
6868

6969
### 预取策略
7070

71-
1修改AndroidVideoCache进行预加载
72-
2,线程池并发缓存并控制视频缓存优先级(线程池线程数为3,先加入的先缓存),一次预加载8个视频,item创建时开始预加载,item销毁时,取消预加载
73-
3,等待下页第一个视频预加载完成,才会进入下一页视频,保证滑到的视频都是可以立马观看的。(一页视频为8个)
74-
4,当前视频开始播放之后才会进行预加载
75-
5,区分快滑慢滑两种模式,快滑时取消当前所有预加载,慢滑不取消,因为快滑大概率滑到一个未预加载的视频,慢滑大概率滑到一个已经预加载的视频,保证滑到视频尽快播放。
76-
6,当视频播放后,根据滑动方向,会将取消的预加载进行恢复,正向滑动就恢复当前之后之后的预加载任务,反选滑动就恢复当前视频之前的预加载任务。
77-
7,限制网速,当时视频还没播放的时候,会限制预下载的网速(慢滑不会取消预加载),通过让下载线程sleep来限制网速。
78-
8,ijkplayer起播参数配置。
79-
9,视频压缩和处理(让视频参数都位于视频首部)。
71+
1. 修改AndroidVideoCache进行预加载
72+
2. 线程池并发缓存并控制视频缓存优先级(线程池线程数为3,先加入的先缓存),一次预加载8个视频,item创建时开始预加载,item销毁时,取消预加载
73+
3. 等待下页第一个视频预加载完成,才会进入下一页视频,保证滑到的视频都是可以立马观看的。(一页视频为8个)
74+
4. 当前视频开始播放之后才会进行预加载
75+
5. 区分快滑慢滑两种模式,快滑时取消当前所有预加载,慢滑不取消,因为快滑大概率滑到一个未预加载的视频,慢滑大概率滑到一个已经预加载的视频,保证滑到视频尽快播放。
76+
6. 当视频播放后,根据滑动方向,会将取消的预加载进行恢复,正向滑动就恢复当前之后之后的预加载任务,反选滑动就恢复当前视频之前的预加载任务。
77+
7. 限制网速,当时视频还没播放的时候,会限制预下载的网速(慢滑不会取消预加载),通过让下载线程sleep来限制网速。
78+
8. ijkplayer起播参数配置。
79+
9. 视频压缩和处理(让视频参数都位于视频首部)。
8080

8181

8282

@@ -135,9 +135,6 @@ Conviva在2011年的分享中提到以下观点,缓冲次数始终是最主要
135135
不断优化表现直接与收入关联的主要原因是,收入统计通常计出多门且较为滞后,可采用的替代指标包括注册用户数、活跃用户数、视频观察市场、观看次数、播放占比、付费率、留存率、分享率、满意度等。
136136

137137

138-
139-
140-
141138
### 监控
142139

143140
监控上报,肯定是不可缺少的,这是一个成熟的项目必备的要素。
@@ -152,32 +149,7 @@ Conviva在2011年的分享中提到以下观点,缓冲次数始终是最主要
152149

153150

154151

155-
156-
157-
158-
159-
160-
161-
162-
163-
164-
165-
166-
167-
168-
169-
170-
171-
172-
173-
174-
175-
176-
177-
178-
179-
180152
---
181153

182154
- 邮箱 :charon.chui@gmail.com
183-
- Good Luck!
155+
- Good Luck!

0 commit comments

Comments
 (0)