22-07-16 19:01

前两天说的播放器已经有个雏形了,前后端已经打通了(之前代码全丢了只能重写了hhh),只不过有个坑爹地方
后端用groovy做的(主要实在懒得折腾别的),读取当前歌曲用的是javasound api。这破玩意又古董又笨又难用,还不支持把当前系统播放的声音当input读取,只能读取麦克风,所以只能把立体声混音那个驱动当成麦克风来曲线救国,这还不算完,最主要的是延迟巨高得有100ms(包含了快速傅里叶变换的计算),而且最坑爹的是这个延迟根据运行时间会增加,昨晚挂机一宿今天看延迟已经一秒多了[允悲]估计是垃圾java的GC问题

我寻思不行,于是找找有没有native方法,至少延迟得低下来吧,不能这边播放歌曲那边过一秒才出来动画效果hhhh,发现了用c++写的portaudio这玩意,好是好,但是java调用的话还得配个jni,想想都头皮发麻,反正最终找到了个别人2012年上古时候写好的binding,千辛万苦调用起来了,结果发现不能调用wasapi驱动,还是只能读麦克风不能读取电脑当前播放的声音,搜了下这个库最近实现了wasapi,但我用的binding是2012年的,除非我自己再重新造轮子,想想脑袋就大

然后冷静下来我就寻思,我为啥要用java这破玩意呢?地球上处理数据、搞这方面相关的最潮最in的语言是什么?当然是p打头的语言了hhh

于是马上搜了下python有没有portaudio的实现,结果一搜好家伙,新鲜热乎的,还支持wasapi,而且别人直接编译好pyd调用就完事了,光速建个python环境引入各种依赖写几句代码,就这么轻轻松松跑起来了,吐了[彩虹屁]

虽然是真烦python这语言,但是这要啥来啥的生态也太牛逼了,java真得稍稍了,决定后端用python重写了,这回有numpy加持算fft也更快了[彩虹屁][彩虹屁]

发布于 吉林