当前位置: 首页 > news >正文

app制作网站网站建设与管理课程的目标

app制作网站,网站建设与管理课程的目标,品牌设计案例,华夏集团网站建设AudioTrack主要是用来播放声音的#xff0c;AudioTrack贯穿了JAVA层,JNI层和Native层。 AudioTrack JAVA层#xff1a; framework\base\media\java\android\media\AudioTrack.java 以AudioTrack的使用方法举例#xff1a;pp] // 得到一个满足最小要求的缓冲区的大小 int b… AudioTrack主要是用来播放声音的AudioTrack贯穿了JAVA层,JNI层和Native层。 AudioTrack JAVA层 framework\base\media\java\android\media\AudioTrack.java 以AudioTrack的使用方法举例pp] // 得到一个满足最小要求的缓冲区的大小 int bufsize AudioTrack.getMinBufferSize(8000,//采样率 每秒8K个点 AudioFormat.CHANNEL_CONFIGURATION_STEREO,//双声道 AudioFormat.ENCODING_PCM_16BIT);//采样精度 一个采样点16比特 2个字节 //创建AudioTrack AudioTrack trackplayer new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_ STEREO, AudioFormat.ENCODING_PCM_16BIT, bufsize, AudioTrack.MODE_STREAM);// trackplayer.play() ;//开始 trackplayer.write(bytes_pkg, 0, bytes_pkg.length) ;//往track中写数据 //... trackplayer.stop();//停止播放 trackplayer.release();//释放底层资源 AudioTrack Native层// 得到一个满足最小要求的缓冲区的大小 int bufsize AudioTrack.getMinBufferSize(8000,//采样率 每秒8K个点 AudioFormat.CHANNEL_CONFIGURATION_STEREO,//双声道 AudioFormat.ENCODING_PCM_16BIT);//采样精度 一个采样点16比特 2个字节 getMinBufferSize实际调用了JNI通过Native代码来实现。framework/base/core/jni/android_media_track.cpp static jint android_media_AudioTrack_get_min_buff_size(JNIEnv *env, jobject thiz, jint sampleRateInHertz, jint nbChannels, jint audioFormat) {//注意我们传入的参数是 //sampleRateInHertz 8000 //nbChannels 2 //audioFormat AudioFormat.ENCODING_PCM_16BIT int afSamplingRate; int afFrameCount; uint32_t afLatency; if (AudioSystem::getOutputSamplingRate(afSamplingRate) ! NO_ERROR) { return -1; } if (AudioSystem::getOutputFrameCount(afFrameCount) ! NO_ERROR) { return -1; } if (AudioSystem::getOutputLatency(afLatency) ! NO_ERROR) { return -1; } //音频中最常见的是frame解释一个frame就是1个采样点的字节数*声道。 // Ensure that buffer depth covers at least audio hardware latency uint32_t minBufCount afLatency / ((1000 * afFrameCount)/afSamplingRate); if (minBufCount 2) minBufCount 2; uint32_t minFrameCount (afFrameCount*sampleRateInHertz*minBufCount)/afSamplingRate; //下面根据最小的framecount计算最小的buffersize int minBuffSize minFrameCount * (audioFormat javaAudioTrackFields.PCM16 ? 2 : 1) * nbChannels; return minBuffSize; } MODE_STREAM和MODE_STATIC STREAM的意思是由用户在应用程序通过write方式把数据一次一次得写到audiotrack中。这个和我们在socket中发送数据一样应用层从某个地方获取数据例如通过编解码得到PCM数据然后write到audiotrack。这种方式的坏处就是总是在JAVA层和Native层交互效率损失较大。 In Streaming mode, the application writes a continuous stream of data to the AudioTrack, using one of thewrite() methods. These are blocking and return when the data has been transferred from the Java layer to the native layer and queued for playback. MODE_STREAM模式终使用Write方法该方法是阻塞的当数据从Java层到Native层执行播放完毕后才返回。 而STATIC的意思是一开始创建的时候就把音频数据放到一个固定的buffer然后直接传给audiotrack后续就不用一次次得write了。AudioTrack会自己播放这个buffer中的数据。这种方法对于铃声等内存占用较小延时要求较高的声音来说很适用。 AudioTrack的构造函数 public AudioTrack (int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode) AudioTrack的构造函数中有一个变量用来指定buffer的大小bufferSizeInBytes。  AudioTrack在Native层会对这个变量的值进行有效性判断。首先它至少要等于或者大于getMinBufferSize返回的值然后它必须是frame大小的整数倍。 举例说明MODE_STREAM模式下在JAVA层构造AudioTrack时bufferSizeInBytes的大小设定为9600在Native层调用Write方法拷贝数据至Hardware进行回放每次拷贝的大小为320.则需要拷贝到30次声卡才发出声音。即需要将数据填满缓冲区才进行播放。320*309600 view plaicopy
http://www.pierceye.com/news/340959/

相关文章:

  • wordpress後台建站flash美食网站论文
  • 网站服务器ip地址在哪里看用记事本做电影介绍的网站
  • 重庆企业建站公司沧浪企业建设网站价格
  • 免费建单页网站厂房出租做推广什么网站好
  • jquery网站模板下载做的网站显示不了背景图片
  • 图书管理系统网站开发教程怎么创建自己的网址
  • 网站网站是怎么做的专业app开发制作团队
  • 平顺网站建设应届生在淮北招的网站建设类型岗位
  • 手机网站模板尺寸wordpress5.1更新
  • 微网站设计教育培训机构官网
  • 搭建论坛网站福州工程网站建设团队
  • 易语言跳到指定网站怎么做商业网站建设方案
  • 专业的饰品行业网站开发杭州市建设厅网站
  • 做仿站如何获取网站源码鞍山网站建设优化
  • 网站建设模拟实验报告wordpress表excel插件
  • 苏州企业网站建设电话包头网站制作公司
  • 邓州微网站建设上海十大广告公司排名
  • 深圳装修公司报价网络优化公司排名
  • 互联网建设网站的的好处中国建盏大师排名2021
  • 商城网站建设新闻制作一个网站需要多久
  • 为什么要创建网站子目录泰安网信科技
  • 住房和城乡建设部网站质保金企业手机网站建设效果
  • 网站建设制作鸿运通邯郸网络运营中心电话号码
  • 辽阳企业网站建设价格中国交通建设股份有限公司官网
  • 企业网站域名后缀手机网站设计规格
  • 网页制作成品模板网站中国兰州网首页
  • 企业展示型网站php批量外链工具
  • 网站公司做网站dede查看网站
  • 网站软件大全免费下品牌网站策划
  • 网站解析密码网站被收录后又被提出了