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

做个ppt模板网站开发外贸新手怎样用谷歌找客户

做个ppt模板网站开发,外贸新手怎样用谷歌找客户,f006网站建设,哈尔滨网站建设制作费用目录 一、背景 二、方案 三、代码实现 3.1 初始化OpenSL 3.2 设置播放回掉 3.3 使用FFmpeg计算出转换后的样本数目 一、背景 FFmpeg不能够操作Android的硬件设备,所以要在Android系统上面播放音频的话需要另找办法 二、方案 Android 环境下音频播放通常有两…

目录

一、背景

二、方案

三、代码实现

3.1 初始化OpenSL

3.2 设置播放回掉

3.3 使用FFmpeg计算出转换后的样本数目

 


一、背景

FFmpeg不能够操作Android的硬件设备,所以要在Android系统上面播放音频的话需要另找办法

二、方案

Android 环境下音频播放通常有两种方式—— AudioTrack 和 OpenSLES。AudioTrack 本身是Java实现,另外一种实现方式就是OpenSL ES 播放音频。


三、代码实现

3.1 初始化OpenSL

void AudioChannel::initOpenSL() {//创建引擎SLresult result;// 创建引擎engineObjectresult = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);if (SL_RESULT_SUCCESS != result) {return;}// 初始化引擎engineObjectresult = (*engineObject)->Realize(engineObject, SL_BOOLEAN_FALSE);if (SL_RESULT_SUCCESS != result) {return;}// 获取引擎接口engineEngineresult = (*engineObject)->GetInterface(engineObject, SL_IID_ENGINE,&engineInterface);if (SL_RESULT_SUCCESS != result) {return;}// 创建混音器outputMixObjectresult = (*engineInterface)->CreateOutputMix(engineInterface, &outputMixObject, 0, 0, 0);if (SL_RESULT_SUCCESS != result) {return;}// 初始化混音器outputMixObjectresult = (*outputMixObject)->Realize(outputMixObject, SL_BOOLEAN_FALSE);if (SL_RESULT_SUCCESS != result) {return;}/*** 配置输入声音信息*///创建buffer缓冲类型的队列 2个队列SLDataLocator_AndroidSimpleBufferQueue android_queue = {SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE,2};//pcm数据格式SLDataFormat_PCM pcm = {SL_DATAFORMAT_PCM, 2, SL_SAMPLINGRATE_44_1, SL_PCMSAMPLEFORMAT_FIXED_16,SL_PCMSAMPLEFORMAT_FIXED_16,SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT,SL_BYTEORDER_LITTLEENDIAN};//数据源 将上述配置信息放到这个数据源中SLDataSource slDataSource = {&android_queue, &pcm};//设置混音器SLDataLocator_OutputMix outputMix = {SL_DATALOCATOR_OUTPUTMIX, outputMixObject};SLDataSink audioSnk = {&outputMix, NULL};//需要的接口const SLInterfaceID ids[1] = {SL_IID_BUFFERQUEUE};const SLboolean req[1] = {SL_BOOLEAN_TRUE};//创建播放器(*engineInterface)->CreateAudioPlayer(engineInterface, &bqPlayerObject, &slDataSource,&audioSnk, 1,ids, req);//初始化播放器(*bqPlayerObject)->Realize(bqPlayerObject, SL_BOOLEAN_FALSE);//    得到接口后调用  获取Player接口(*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_PLAY, &bqPlayerInterface);//    获得播放器接口(*bqPlayerObject)->GetInterface(bqPlayerObject, SL_IID_BUFFERQUEUE,&bqPlayerBufferQueue);//设置回调(*bqPlayerBufferQueue)->RegisterCallback(bqPlayerBufferQueue, bqPlayerCallback, this);
//    设置播放状态(*bqPlayerInterface)->SetPlayState(bqPlayerInterface, SL_PLAYSTATE_PLAYING);bqPlayerCallback(bqPlayerBufferQueue, this);
}

3.2 设置播放回掉

//第一次主动调用在调用线程
//之后在新线程中回调
void bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void *context) {AudioChannel *audioChannel = static_cast<AudioChannel *>(context);int datalen = audioChannel->getPcm();if (datalen > 0) {(*bq)->Enqueue(bq, audioChannel->buffer, datalen);}
}

3.3 使用FFmpeg计算出转换后的样本数目

uint64_t dst_nb_samples = av_rescale_rnd(swr_get_delay(swr_ctx, frame->sample_rate) + frame->nb_samples,out_sample_rate,frame->sample_rate,AV_ROUND_UP);// 转换,返回值为转换后的sample个数int nb = swr_convert(swr_ctx, &buffer, dst_nb_samples,(const uint8_t **) frame->data, frame->nb_samples);//转换后多少数据data_size = nb * out_channels * out_samplesize;//音频的时间clock = frame->best_effort_timestamp * av_q2d(time_base);if (javaCallHelper) {javaCallHelper->onProgress(THREAD_CHILD, clock);}



 

http://www.dtcms.com/wzjs/130820.html

相关文章:

  • 网站建设插入图片代码湖南网站设计外包服务
  • asp.net做网站打开百度一下网页版
  • 资源型网站建设 需要多大硬盘百度seo分析工具
  • 关键词与网站标题网上国网app推广
  • 淘宝网站的内容建设百度浏览器官网
  • 网站建设狼雨网络营销热点事件案例分析
  • 东莞网站seo方法免费seo提交工具
  • 线报网站如何做海口关键词优化报价
  • 北京整站线上推广优化网页广告怎么投放
  • 量化交易网站开发外链提交
  • 做最好言情网站游戏推广员到底犯不犯法
  • wordpress如何加数据库名武汉网络推广seo
  • 长沙网站备案拍照点金华百度推广公司
  • 什么网站能免费做公众号封面谷歌搜索引擎免费
  • 广州手机网站建设哪家好seo排名优化方式
  • 卡盟怎么网站怎么做网络媒体有哪些
  • 安徽工程建设网软件优化
  • 海尔公司的网站建设广东短视频seo营销
  • 相城建设监理有限公司网站seo服务
  • 小白怎么做淘宝客网站seowhy教研室
  • 国内做设计的网站有哪些方面上海网站设计公司
  • 做推广的免费的济宁网站有哪些百度网盘客户端
  • 模板手机网站建设价格明细表可以发外链的平台
  • 传奇私服广告网站怎么做南宁seo专员
  • 网站做推广页需要什么专业做网站建设的公司
  • 优秀的个人网站研究生培训机构排名
  • 佛山网站制作好处免费自助建站网站
  • wordpress需要php版本移动端关键词优化
  • b2b网站推广方法app推广30元一单平台
  • 做网站 前端seo网站培训优化怎么做