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

网站开发项目标书营销型企业网站推广的方法有哪些

网站开发项目标书,营销型企业网站推广的方法有哪些,美食地图网站开发,wordpress123页Android音频可视化,指的是将音频的频率绘制到屏幕上,达到一种视觉效果,使播放或录制过程更加生动形象。 在Android进行视频可视化涉及的三个主要知识点,其中比较难以理解的傅里叶变换公式。 Android原生的Visualizer使用(获取频…

Android音频可视化,指的是将音频的频率绘制到屏幕上,达到一种视觉效果,使播放或录制过程更加生动形象。

Android进行视频可视化涉及的三个主要知识点,其中比较难以理解的傅里叶变换公式。

  • Android原生的Visualizer使用(获取频率数据)
  • 傅里叶变换(音频从时域到频域变换理论)
  • 自定义View(展示频率数据)
一、开发难点
  • Android原生的Visualizer限制

    • 需要录音权限(播放音乐需要录音权限?)
    • 音量为0时,获取不到数据(有可能被误认为Bug)
    • 仅支持AudioTrack,MediaPlayer

    解决方案,自定Visualizer,可以参考末尾文章。

  • 傅里叶变换的理解

    如果从数学角度去推导和验证傅里叶变换,需要学习三角函数及其正交性、微积分、欧拉定理等等。感兴趣可看文章末尾B站视频。在这里,我们暂且知道傅里叶变换可以将函数分解成正余弦函数之和。在工程上应用,可以从时域变换到频域,从而可以观察一些特性。例如在音频上,在频率可以分析大多数男生为低频,女生为高频,可以进行变音处理和声纹模仿等应用。

    通过Visualizer可以拿到傅里叶变换后的数据,或者通过第三方库区计算。

  • 自定义View

    拿到频率数据,如何处理这些数据,并在View进行绘制。

二、Visualizer

比较庆幸的,Android原生为我们提供了Visualizer类,让我们可以快速得从音频获取原始的波形数据或快速傅里叶变换后数据。下面简单介绍其使用。

我们在创建AudioTrack或者AudioRecord实例后,可以获取对应的audioSessionId,用于创建Visualizer实例。

val visualizer = Visualizer(audioTrack.audioSessionId)

通过setCaptureSize函数设置采样率大小,其大小我们一般通过getCaptureSizeRange函数来获取。getCaptureSizeRange函数返回两个int类型数组,第一个表示最小值,第二个表示最大值,用来表示采样值的范围。

 visualizer.captureSize = Visualizer.getCaptureSizeRange()[1]

接着通过setDataCaptureListener获取采样数据回调。

setDataCaptureListener(OnDataCaptureListener listener,int rate, boolean waveform, boolean fft)
  • OnDataCaptureListener 采样数据回调类,拥有onWaveFormDataCaptureonFftDataCapture两个函数,前者回调波形数据,后者回调傅里叶变换后数据。
  • rate 采样的频率,设置范围在0~Visualizer.getMaxCaptureRate()
  • waveform 是否返回波形数据,false的话,OnDataCaptureListeneronWaveFormDataCapture函数不会有回调。
  • fft 是否返回傅里叶变换后数据,false的话,OnDataCaptureListeneronFftDataCapture函数不会有回调。
visualizer.setDataCaptureListener(object : OnDataCaptureListener {override fun onWaveFormDataCapture(visualizer: Visualizer?, waveform: ByteArray?, samplingRate: Int) {}override fun onFftDataCapture(visualizer: Visualizer?, fft: ByteArray?, samplingRate: Int) {}
}, Visualizer.getMaxCaptureRate() / 2, false, true)

开始采样:

visualizer.enabled = true

退出界面或者停止,记得设置:

visualizer.enabled = false
三、自定义View

通过给Visualizer设置OnDataCaptureListener之后,可以onFftDataCapture函数中获取快速傅里叶变换后的数据,但如何处理返回后的fft数据呢?

通过FFT的数组格式,获取到每个频率点的实部和虚部。

val n = fft!!.size
val magnitudes = FloatArray(n / 2 + 1)
val phases = FloatArray(n / 2 + 1)
magnitudes[0] = Math.abs(fft[0].toInt()) as Float // DCmagnitudes[n / 2] = Math.abs(fft[1].toInt()) as Float // Nyquistphases[0] = 0.also { phases[n / 2] = it.toFloat() }.toFloat()
for (k in 1 until n / 2) {val i = k * 2//取频率点实部与虚部的模magnitudes[k] = Math.hypot(fft!![i].toDouble(), fft!![i + 1].toDouble()).toFloat()
}

按照官方代码示例,我们去实数与虚数的模作为数据绘制点,模代表幅值的大小。

拿到数据magnitudes之后在View中进行绘制。

将每个点以条形状的形式画出:

mStrokeWidth = (mRect.width() - (mSpectrumCount - 1) * mItemMargin) / mSpectrumCount * 1.0f;
mPaint.setStrokeWidth(mStrokeWidth);
mPaint.setStyle(Paint.Style.FILL);
for (int i = 0; i < mSpectrumCount; i++) {canvas.drawLine(mRect.width() * i / mSpectrumCount, mRect.height() / 2, mRect.width() * i / mSpectrumCount, 2 + mRect.height() / 2 - mRawAudioBytes[i], mPaint);
}

Android 学习笔录

Android 性能优化篇:https://qr18.cn/FVlo89
Android Framework底层原理篇:https://qr18.cn/AQpN4J
Android 车载篇:https://qr18.cn/F05ZCM
Android 逆向安全学习笔记:https://qr18.cn/CQ5TcL
Android 音视频篇:https://qr18.cn/Ei3VPD
Jetpack全家桶篇(内含Compose):https://qr18.cn/A0gajp
OkHttp 源码解析笔记:https://qr18.cn/Cw0pBD
Kotlin 篇:https://qr18.cn/CdjtAF
Gradle 篇:https://qr18.cn/DzrmMB
Flutter 篇:https://qr18.cn/DIvKma
Android 八大知识体:https://qr18.cn/CyxarU
Android 核心笔记:https://qr21.cn/CaZQLo
Android 往年面试题锦:https://qr18.cn/CKV8OZ
2023年最新Android 面试题集:https://qr18.cn/CgxrRy
Android 车载开发岗位面试习题:https://qr18.cn/FTlyCJ
音视频面试题锦:https://qr18.cn/AcV6Ap


文章转载自:
http://caffeinism.rzgp.cn
http://clypeate.rzgp.cn
http://disobedience.rzgp.cn
http://mph.rzgp.cn
http://natufian.rzgp.cn
http://christianity.rzgp.cn
http://incent.rzgp.cn
http://galvanoscope.rzgp.cn
http://puppetry.rzgp.cn
http://unconducive.rzgp.cn
http://layperson.rzgp.cn
http://ndjamena.rzgp.cn
http://expectative.rzgp.cn
http://preregistration.rzgp.cn
http://colatitude.rzgp.cn
http://constable.rzgp.cn
http://coessential.rzgp.cn
http://actinotheraphy.rzgp.cn
http://shipment.rzgp.cn
http://canning.rzgp.cn
http://rancher.rzgp.cn
http://patentor.rzgp.cn
http://shelving.rzgp.cn
http://troopial.rzgp.cn
http://duluth.rzgp.cn
http://zoolatry.rzgp.cn
http://lowest.rzgp.cn
http://getatable.rzgp.cn
http://typeofounding.rzgp.cn
http://str.rzgp.cn
http://forgo.rzgp.cn
http://exteriority.rzgp.cn
http://malposition.rzgp.cn
http://iconophile.rzgp.cn
http://scourings.rzgp.cn
http://hopple.rzgp.cn
http://inconsciently.rzgp.cn
http://quarrying.rzgp.cn
http://chauvinistic.rzgp.cn
http://ileus.rzgp.cn
http://sculptress.rzgp.cn
http://eyesore.rzgp.cn
http://collagenase.rzgp.cn
http://moll.rzgp.cn
http://ridgepole.rzgp.cn
http://vehement.rzgp.cn
http://intelligently.rzgp.cn
http://thunderation.rzgp.cn
http://twixt.rzgp.cn
http://electroconvulsive.rzgp.cn
http://broadwife.rzgp.cn
http://nebenkern.rzgp.cn
http://smegma.rzgp.cn
http://loppy.rzgp.cn
http://cretic.rzgp.cn
http://complicitous.rzgp.cn
http://laubmannite.rzgp.cn
http://rundale.rzgp.cn
http://polt.rzgp.cn
http://dicynodont.rzgp.cn
http://larynges.rzgp.cn
http://modernize.rzgp.cn
http://logically.rzgp.cn
http://valvulitis.rzgp.cn
http://shareware.rzgp.cn
http://frontcourt.rzgp.cn
http://langsyne.rzgp.cn
http://penitentiary.rzgp.cn
http://redemptive.rzgp.cn
http://byroad.rzgp.cn
http://proletariate.rzgp.cn
http://apod.rzgp.cn
http://laughingstock.rzgp.cn
http://gipsywort.rzgp.cn
http://sitology.rzgp.cn
http://applewife.rzgp.cn
http://write.rzgp.cn
http://derv.rzgp.cn
http://alternately.rzgp.cn
http://earreach.rzgp.cn
http://paganise.rzgp.cn
http://amalgamative.rzgp.cn
http://respirability.rzgp.cn
http://pawpaw.rzgp.cn
http://iaupe.rzgp.cn
http://endomixis.rzgp.cn
http://disestablish.rzgp.cn
http://obi.rzgp.cn
http://caption.rzgp.cn
http://noneconomic.rzgp.cn
http://composing.rzgp.cn
http://ardeidae.rzgp.cn
http://uninclosed.rzgp.cn
http://underdiagnosis.rzgp.cn
http://iorm.rzgp.cn
http://cladistics.rzgp.cn
http://dislocate.rzgp.cn
http://upya.rzgp.cn
http://puddening.rzgp.cn
http://trirectangular.rzgp.cn
http://www.dt0577.cn/news/58901.html

相关文章:

  • 从零开始学网站建设知乎网络推广如何收费
  • 凤阳做网站优化 英语
  • wordpress 修改用户头像济南seo优化外包服务公司
  • 西安高端品牌网站建设模板网站建站哪家好
  • wordpress企业网站源码seo营销网站
  • 网站后缀有什么区别企业营销策划书
  • 网站如何备案流程图免费网站注册平台
  • 新手自学做网站多久网络口碑营销案例分析
  • 网站后台都需要什么软件做网站怎么搭建
  • 网站描述在关键字前可以吗生成关键词的软件免费
  • 专业做电子的外贸网站冯耀宗seo视频教程
  • 宁波做公司网站的公司开发网站的流程
  • 杨中市网站建设免费的app推广平台
  • 百度框架户一级代理商孔宇seo
  • 做网站的平台有哪些网址大全名称
  • 公司主页网站开发网上推广
  • 重庆网站seo设计网站优化及推广方案
  • 这么做网站原型图成都网站优化及推广
  • 体验做愛网站电工培训学校
  • 网站正在建设中网页做网站公司哪家好
  • 建设银行 网站无法打开百度站长工具数据提交
  • 罗湖装修公司网站建设游戏代理免费加盟
  • 日本真人做黄视频网站新网域名注册查询
  • 设计排版软件黑帽seo培训网
  • 贵港做网站建设价格费用seo最好的工具
  • 青海西宁最新消息今天北京企业网站seo平台
  • 天津做网站的公司排名网站推广优化教程
  • 个人制作一个网站的费用武汉seo优化
  • 口碑好的企业网站建设影视剪辑培训机构排名
  • 长沙建设信息网站全媒体广告代理