首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android多媒体之SoundPool+pcm流音频操作

零、前言 今天比较简单,先理一下录制和播放四位大将 再说一下SoundPool使用和pcm转wav 讲一下C++文件如何在Android中使用,也就是传说中JNI 最后讲一下变速播放和变调播放....mp3,.3gp,.aac,.mp4,.webm) 操作简单,不须自己处理字节流,传入文件即可 缺点: 无法实现实时处理音频,输出音频格式少。...音频编码方式.png ---- 3.AudioTrack AudioTrack只能播放已经解码PCM流(wav音频格式文件) ---- 3.1:流类型:int streamType ?...sampleId, status) -> { }); ---- 三、pcm与wav 两者区别:pcm是无法播放播放wav可以被播放播放 但它们实质几乎一样,wav相当于披了件衣服...pcm转wav.png ---- 四、变速播放 0.回顾一下第一天对声音介绍:声音三要素 [1] 音量 :(响度)声波震动幅度---A--分贝 [2] 音调 : 声音频率(高音--频率快--声音尖 低音

2.7K20

Android多媒体应用使用SoundPool播放音频

由于MediaPlayer占用资源较多,且不支持同时播放多个音频,所以Android还提供了另一个播放音频类—–SoundPool。...SoundPool即音频池,可以同时播放多个短小音频,而且占用资源较少。SoundPool适合在应用程序中播放按键音或消息提示音等,在游戏中播放密集而短暂声音,如多个飞机爆炸声音等。...,用来创建SoundPool对象,该构造方法语法格式如下: SoundPool(int maxStreams,int streamType,int srcQuality); 其中,参数maxStreams...(this,R.raw.ding,1); 3.播放音频 调用SoundPool对象play()方法可以播放指定音频。...1,最低为0.5,最高为2 例如,要播放音频资源中保存音频文件notify.wav,可以使用下面的代码: soundpool.play(soundpool.load(Manactivity.this

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Android开发中播放声音两种方法分析

本文实例讲述了Android开发中播放声音两种方法。分享给大家供大家参考,具体如下: 在Android中,音频、视频等多媒体元素加入,使得应用程序用户体验更好。...Android提供了另外一种,叫做SoundPool,它适合播放那些需要反复播放,但时间较短音效。...第二行将soundPool实例化,第一个参数为soundPool可以支持声音数量,这决定了Android为其开设多大缓冲区,第二个参数为声音类型,在这里标识为系统声音,除此之外还有AudioManager.STREAM_RING...第三个参数为声音优先级,当多个声音冲突而无法同时播放时,系统会优先播放优先级高。...第四行就是播放了,第一个参数为id,id即为放入到soundPool顺序,比如现在collide.wav是第一个,因此它id就是1。第二个和第三个参数为左右声道音量控制。

3.7K20

android使用SoundPool播放音效方法

SoundPoolandroid.media.SoundPool),顾名思义是声音意思,主要用于播放一些较短声音片段,支持从程序资源或文件系统加载。...与MediaPlayer相比,SoundPool优势在于CPU资源占用量低和反应延迟小。另外,SoundPool还支持自行设置声音品质、音量、播放比率等参数,支持通过ID对多个音频流进行管理。...SoundPool最大只能申请1M内存空间,这就意味着我们只能用一些很短声音片段,而不是用它来播放歌曲或者做游戏背景音乐。   2....建议使用这两个方法时候尽可能多做测试工作,还有些朋友反映它们不会立即中止播放声音,而是把缓冲区里数据播放完才会停下来,也许会多播放一秒钟。   3. SoundPool效率问题。...loop:指定是否循环:-1表示无限循环,0表示不循环,其他值表示要重复播放次数 rate:指定播放速率:1.0播放率可以使声音按照其原始频率,而2.0播放速率,可以使声音按照其 原始频率两倍播放

2.1K10

Android开发(44) 使用了 SoundPool 播放提示音

概述 SoundPool 一个声音播放辅助类,从名字可以看出,它具有 “池”能力(缓存),它先加载声音文件到内存,以支持多次播放声音文件。...特点 SoundPool适合 短小 声音文件 SoundPool适合播放 “需要多次播放提示音”,比如在 一些常用 请登录,请点击什么 相比mediaPlayer,耗用资源更少 支持 同时 播放多个声音...(); //这里我创建一个 hash 表,用于记录加载过声音ID,一般我们会定义一个常量作为检索该声音KEY 加载声音文件 soundPoolMap.put..., 1)); soundPoolMap.put(KEY_SOUND_A2, mSoundPool.load(this, R.raw.a2, 1));//注意,这里 hash表里 记录 播放声音文件...; import android.media.AudioManager; import android.media.SoundPool; import android.support.v7.app.AppCompatActivity

1.3K00

Android使用SoundPool播放音效

本文实例为大家分享了Android使用SoundPool播放音效具体代码,供大家参考,具体内容如下 SoundPool(int maxStreams, int streamType, int srcQuality...) 参数依次是: ①指定支持多少个声音SoundPool对象中允许同时存在最大流数量。...priority:指定播放声音优先级,数值越高,优先级越大。...loop:指定是否循环:-1表示无限循环,0表示不循环,其他值表示要重复播放次数 rate:指定播放速率:1.0播放率可以使声音按照其原始频率,而2.0播放速率,可以使声音按照其 原始频率两倍播放...源码下载:Android使用SoundPool播放音效 以上就是本文全部内容,希望对大家学习有所帮助。

1.3K30

Android开发笔记(一百二十六)自定义音乐播放

MediaRecorder录制音频格式有amr、aac等,MediaPlayer支持播放音频格式除了amr、aac之外,还支持常见mp3、wav、mid、ogg等经过压缩编码音频。...pcm格式有个缺点,在播放过程中不能直接暂停,因为二进制流;但pcm格式有个好处,就是iOS不能播放amr音频,但能播放pcm音频;所以如果Android手机录制音乐需要传给iOS手机播放,还是得采用...因此,我们需要一个短声音专用播放器,这个播放器在Android中就是SoundPool。...1M内存,这意味着它只能播放一些很短声音片段,不能用于播放歌曲或者游戏背景音乐; 2、虽然SoundPool提供了pause和stop方法,但是轻易不要使用这两个方法,因为它们可能会让你App异常或崩溃...; 3、SoundPool播放音频格式建议使用ogg格式,据说它对wav格式支持不太好; 4、待播放音频要提前加载进SoundPool,不要等到要播放时候才加载。

2.7K30

Android SoundPool 音效播放

如果有多个流具有相同低优先级,它将选择最旧流停止。在新流优先级低于所有活动流情况下,新声音将不会播放,play()函数将返回streamID为零。...以上信息来源于 Android-32 android\media\SoundPool.java 源码中注释 总而言之就是: 使用SoundPool 可以播放多种音频,甚至可以混音播放。...使用 老版本SoundPool是可以直接new SoundPool()进行创建,但是自从Android-API 21 之后就被废弃了。...播放成功后会返回streamId,我们之后可以通过该streamId进行暂停,恢复,停止,修改循环次数,修改优先级,修改声音等。 界面关闭时,调用soundPool.release()释放资源。...小结 这里只是介绍了我们如何正确使用SoundPool以及相关api。如果你看完了整个内容,我相信你在使用SoundPool进行播放音频时,就不会出现无法播放播放失败等情况了。

48640

使用 AudioTrack 播放音频轨道

量化深度大小影响到声音质量,显然,位数越多,量化后波形越接近原始波形,声音质量越高,而需要存储空间也越多;位数越少,声音质量越低,需要存储空间越少。...另外,WAV 文件其实就是 PCM 格式,因为播放 PCM 裸流时,我们需要知道 PCM 采样率, 声道数, 位宽等信息,WAV 只是在文件头前添加了这部分描述信息,所以 WAV 文件可以直接播放。...「WAV 文件头/图片来自Google」 PCM 是音频处理中频繁接触格式,通常我们对音频处理都是基于 PCM 流,如常见音量调节, 变声, 变调等特性。...03 AudioTrack API 介绍 在 Android 中,如果你想要播放一个音频文件,我们一般优先选用 MediaPlayer,使用 MediaPlayer 时你不需要关心文件具体格式,也不需要对文件进行解码...AudioTrack 是播放音频另外一种方式 「如果你感兴趣还可以了解下 SoundPool」, 并且只能用于播放 PCM 数据。 AudioTrack API 概述 : 1.

2K31

AndroidSoundPool使用步骤实例

大家知道MediaPlayer占用资源比较多,且不可以同时支持播放多个音频,所以我们有一种叫做SoundPool,比如我们常见按键音或者是手机提示音,还比如我们在游戏开发中会有大量音效效果等,下边介绍一下她用法...streamType 指定声音类型,通过AudioManager类提供常量进行指定 * @param srcQuality 指定音频质量,默认为0 * @return a SoundPool...= new SoundPool(5, AudioManager.STREAM_SYSTEM, 0); //创建一个SoundPool对象,该对象可以容纳5个音频流 //将要播放音频流保存到...public void onClick(View v) { soundpool.play(soundmap.get(3), 1, 1, 0, 0, 1);//播放指定音频...(soundmap.get(4), 1, 1, 0, 0, 1);//播放指定音频 soundpool.play(soundpool.load(MainActivity.this, R.raw.notify

68220

基于Android引入IjkPlayer无法播放mkv格式视频解决方法

写在前面 项目中直接引用或者直接编译源码得到ijkplayer在播放mkv文件时出现(-10000)错误,去项目github查看了才知道,默认是不支持mkv和rmvb格式视频播放。...第二步 进行源码下拉 在终端内输入以下命令: git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android cd ijkplayer-android.../init-android.sh 第三步 修改编译ffmpeg用脚本文件 这个就是主要地方了,其实官方已经写了 cd config rm module.sh ln -s module-default.sh.../compile-ijk.sh all 第五步 项目中加入对应so库和引用 编译完成后我们在ijkplayer-android/android/ijkplayer文件夹就能看到对应不同架构ijkplayer...以上这篇基于Android引入IjkPlayer无法播放mkv格式视频解决方法就是小编分享给大家全部内容了,希望能给大家一个参考。

1.5K30

Android 应用开发】Android游戏音效实现

游戏音效SoundPool 游戏中会根据不同动作 , 产生各种音效 , 这些音效特点是短暂(叫声,爆炸声可能持续不到一秒) , 重复(一个文件不断重复播放) , 并且同时播放(比如打怪时怪叫声 ,...和技能释放声音需要同时播放) , 即时(技能用处之后声音马上随着玩家操作发出,不能有延迟)....MediaPlayer会占用大量系统资源 , 并且不能同时播放 , 并且无法实现即时音效 , 这里引入了一个新类 -- SoundPool , 这个类完全满足上面提出四点要求 , 可以无延时播放游戏中短暂音效...); 参数streamId : 这个参数是play()方法执行完之后返回值 , 这个返回值是正在播放音效一个标识 , 对正在播放音效进行操作时候 , 就需要这个标识来对其进行操作; 通知音效播放方法...SoundPool播放音效要小于7秒 , 否则会出现加载失败现象; 在Android平台上使用即时文件越小越好 , 必要时候可以降低采样频率或者将立体声改为单声道;

60220

Android使用SoundPool实现播放音频

最近做一个播放音频小功能,使用毛坯界面简单记录下(点击上边ImageButton播放,下边ImageView请无视) ? activity_picture.xml页面: <?...; import android.media.SoundPool; import android.support.v7.app.AppCompatActivity; import android.os.Bundle...(3, AudioManager.STREAM_MUSIC,0); //创建音频对象,参数为(可容纳音频个数,声音类型,音频品质默认为0) map.put(1,mSoundPool.load(this.../*点击事件*/ @Override public void onClick(View v) { mSoundPool.play(map.get(1),1,1,100,0,1); //参数为(要播放音频...AndroidStudio添加raw方法: ? ? 点击OK,然后把音频文件拖入即可。 (get一个软件,可以使用格式工厂进行截取音频,超级方便!!!)

81430

Android 音频PCM数据采集和播放,读写音频wav文件

本文目的:使用 AudioRecord 和 AudioTrack 完成音频PCM数据采集和播放,并读写音频wav文件 准备工作 Android提供了AudioRecord和MediaRecord。...PCM表示是音频文件中随着时间流逝一段音频振幅。AndroidWAV文件中支持PCM音频数据。 WAV WAV,MP3等比较常见音频格式,不同编码格式对应不通过原始音频。...为了辨别出音频格式,每种格式有特定头文件(header)。 WAV以RIFF为标准。RIFF是一种资源交换档案标准。RIFF将文件存储在每一个标记块中。...PCM打包成WAV PCM是原始音频数据,WAV是windows中常见音频格式,只是在pcm数据中添加了一个文件头。...2CH 不定 量化数据 AudioRecord AudioRecord可实现从音频输入设备记录声音功能。得到PCM格式音频。

3.1K30

android实现小音频频繁播放

android中多媒体文件(音乐和视频)播放是用MediaPlayer方式是大家比较熟悉,但是现在要来说一下另外一种音乐文件播放方式SoundPool,相比较而言,用MediaPlayer来播放音乐的话...,占用系统资源是很多,加载资源也需要时间,所以它不适合用来频繁播放小音频文件,比如控件焦点、点击时需要播放小音频文件,这个时候用SoundPool播放音频文件,比用MediaPlayer来播放效率要高很多...这里也来说说,如果用MediaPlayer来播放小音频文件的话,会出现延时,点击了之后等会儿才出现声音。所以,SoundPool比MediaPlayer更轻量级,适合用于频繁播放小音频文件。...// 在界面上需要这样调用 // 初始化 mMusic = MusicPlayer.getInstance(MainActivity.this) ; // 在onClick中播放click时声音 mMusic.play...(MusicPlayer.Type.MUSIC_CLICK) ; // 在onFocusChange中聚焦状态播放聚焦声音 mMusic.play(MusicPlayer.Type.MUSIC_FOCUSED

74020

音视频入门之音频采集、编码、播放

今天我们学习音频采集、编码、生成文件、转码等操作,我们生成三种格式文件格式,pcm、wav、aac 三种格式,并且我们用 AudioStack 来播放音频,最后我们播放这个音频。...他是一种专为声音数据设计文件压缩格式,与Mp3类似。利用AAC格式,可使声音文件明显减小,而不会让人感觉声音质量有所降低 。...wav 文件,我们用用本机自带播放器打开此时就能正常播放,但是我们发现他大小比较大,我们看到就是几分钟就这么大,我们平时用是 mp3 、aac 格式,我们如何办到呢,这里我们继续看一下 mp3...虽然都可以播放声音,但两者还是有很大区别的,其中最大区别是MediaPlayer可以播放多种格式声音文件,例如MP3,AAC,WAV,OGG,MIDI等。...而AudioTrack只能播放已经解码PCM流,如果对比支持文件格式的话则是AudioTrack只支持wav格式音频文件,因为wav格式音频文件大部分都是PCM流。

3.5K00
领券