Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

是不是不支持m4a格式的音频了? #2

Closed
protosse opened this issue Apr 26, 2019 · 7 comments
Closed

是不是不支持m4a格式的音频了? #2

protosse opened this issue Apr 26, 2019 · 7 comments

Comments

@protosse
Copy link

我用这个podcast http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_82.m4a 做了个测试,会崩在findMaxAmplitude这个函数。

@potato04
Copy link
Owner

你好,我试了一下并没有发现什么问题,动画能正常显示呢。测试环境是 Xcode 10.2.1 模拟器是 iPhone XS 12.2

@protosse
Copy link
Author

你好,我试了一下并没有发现什么问题,动画能正常显示呢。测试环境是 Xcode 10.2.1 模拟器是 iPhone XS 12.2

你好,我试了下直接播放本地文件是没问题的,我是在线播放fetch AVAudioPCMBuffer的,但是这样得到的buffer的format.sampleRate和前面的不一样,前面的是48000,后面的是32000。
我再好好看下了。

@potato04
Copy link
Owner

如果方便的话提供你的代码我们来一起研究下

@protosse
Copy link
Author

AudioSpectrum02-final.zip
大致改了下

@potato04
Copy link
Owner

potato04 commented May 7, 2019

抱歉,这么晚才回复。我下载代码并运行了,大概听了10多分钟吧,还是没能复现你所说的那个问题
不过,你在buffer的回调函数函数里面的这个语句可以删除:

buffer.frameLength = AVAudioFrameCount(2048)

因为你换了播放器之后,这里的设置肯定就没必要了。这里的buffer.frameLength都是4096,我暂时没找到这个播放器可以设置 tap 这个buffer大小的地方。

@protosse
Copy link
Author

抱歉,我也现在才看到。没崩是因为findMaxAmplitude这个函数那里的代码我已经修改了
image
怪我没先说,上面注释的代码是之前的。虽说崩溃原因是数组越界,但是我觉得这样并不是从根本解决。

@potato04
Copy link
Owner

potato04 commented May 10, 2019

你好,我看了下findMaxAmplitude修改之后的代码,你的目的是想避免 endIndex < startIndex
造成这个问题的原因呢,是因为参数bandWidth与实际的bandWidth不一致。
bandWidth = Float(buffer.format.sampleRate) / Float(self.fftSize),也就是说self.fftSize错了
总之,我们只要确保 RealtimeAnalyzer对象中的fftSize 和 传给analysebufferframeLength是一致的,就不会出问题。
以上就是根本解决的办法。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants