音视频播放 第十一章 多媒体应用开发( 五 )


最终编解码实现与相同;
只能同时播放一个声音,加载文件有一定的时间,适合文件比较大,响应时间要是那种不是非常高的场景
4.2的创建
的创建方式在不同版本中会有所不同,为了更好的兼容性,应该对API版本进行判断,再对应的进行创建 。
在5.0以前,直接使用它的构造方法即可
SoundPool (int maxStreams, int streamType, int srcQuality)
而在这之后,则需要使用模式来创建
SoundPool.Builder spb = new SoundPool.Builder().setMaxStreams(16).setAudioAttributes (audioAttributes).build();
(音频属性)
AudioAttributes {mUsagemContentTypemSourcemFlagsmTags / mFormattedTags / mBundle (key value pairs)}
使用模式来构造
AudioAttributes attr = new AudioAttributes.Builder()//设置音效相关属性?.setUsage(AudioAttributes.USAGE_GAME)// 设置音效使用场景?.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)// 设置音效的类型?.build();
4.3 加载所要播放的音频
创建对象后,可以调用load()方法来加载要播放的音频 。load()方法的语法格式有以下4种 。
上述方法都会返回一个声音的ID,后面我们可以通过这个ID来播放指定的声音
:没什么用的一个参数,建议设置为1,保持和未来的兼容性
为了更好地管理所加载的每个音频,一般使用对象来管理这些音频 。这时可以先创建一个对象,然后应用该对象的put()方法将加载的音频保存到该对象中 。例如,创建一个对象,并应用put()方法添加一个音频
4.4 播放音频
调用对象的play()方法可播放指定的音频 。
创建完后,通过tener设置监听,用来监听资源加载完毕的事件发生 。这主要是为了播放做准备.通过名字可猜测到, 当音频资源加载完成后,会回调设置的监听的方法, 在这个方法里, 可以进行播放音频
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {?@Override?public void onLoadComplete(SoundPool soundPool, int voiceId, int status) {?if (status == 0) {?soundPool.play(voiceId, 1, 1, 1, 0, 1);?}?}?});
4.5 播放控制
是对流的特定实例的引用,通过的 pause\\stop 方法, 就可以对播放进行控制 。
4.6 播放音量调节
通过的方法就可以设置指定的流的左右声道的音量值
mSoundPool.setVolume(mStreamID, mCruLeftVolume, mCurRightVolume);
4.7 资源释放
通过 方法来卸载之前load的资源 , 并通过方法释放占用的资源
4.8 注意事项
尽管使用比较简单,但是还是有许多需要注意的地方:
5、类
是主要的视频播放View,它其实是对的再次封装; 底层仍然是使用来对视频文件进行控制 。
5.1 的基本操作步骤
首先需要在布局文件中添加该组件,然后在中获取该组件,并应用其()方法或()方法加载要播放的视频,最后调用start()方法来播放视频 。另外,组件还提供了stop()和pause()方法,用于停止或暂停视频的播放 。
在布局文件中添加 组件
基本语法格式: