gpt4 book ai didi

android - 如何将音频可视化器实现到 exoplayer

转载 作者:行者123 更新时间:2023-12-04 09:24:56 24 4
gpt4 key购买 nike

我正在开发一个广播应用程序。我在我的项目中使用 exoplayer 作为播放器,我想在我的 playeractivity 上添加音频可视化器。但我找不到任何教程或示例。我刚刚制作了一个 customerRenderfactory 并将其添加到我的 player 中。但我不知道我应该多做些什么?任何帮助或建议?我应该提到我的播放器现在工作正常,我只需要找到一个解决方案来添加可视化器。
渲染工厂类:

public class RenderFactory extends DefaultRenderersFactory {
private TeeAudioProcessor.AudioBufferSink listener;
private AudioProcessor[] aMProcessors;
private TeeAudioProcessor teeAudioProcessor;
private AudioRendererEventListener eventListener;

public RenderFactory(Context context, TeeAudioProcessor.AudioBufferSink myListener) {
super(context);
this.listener = myListener;
teeAudioProcessor = new TeeAudioProcessor(this.listener);
}

@Override
protected void buildAudioRenderers(Context context, int extensionRendererMode, MediaCodecSelector mediaCodecSelector, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager, boolean playClearSamplesWithoutKeys, boolean enableDecoderFallback, AudioProcessor[] audioProcessors, Handler eventHandler, AudioRendererEventListener eventListener, ArrayList<Renderer> out) {

aMProcessors = new AudioProcessor[]{teeAudioProcessor};
super.buildAudioRenderers(context, extensionRendererMode, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys, enableDecoderFallback, aMProcessors, eventHandler, eventListener, out);
}
}
在我的 playerActivity 中,我添加了此代码并将渲染工厂设置为我的播放器,但什么也没发生。
   RenderFactory renderFactory = new RenderFactory(this, new TeeAudioProcessor.AudioBufferSink() {
@Override
public void flush(int sampleRateHz, int channelCount, int encoding) {
// what should I add here?
}

@Override
public void handleBuffer(ByteBuffer buffer) {
// what should I add here?
}
});
我尝试按照本教程进行操作,但没有成功。
tutorial

最佳答案

直接回答你的问题:

@Override
public void flush(int sampleRateHz, int channelCount, int encoding) {
// you dont have to do anything here
}

@Override
public void handleBuffer(ByteBuffer buffer) {
// This will give you the bytes from the sound that is going to be played
// here you apply FFT so the audio move to the frequency domain instead of time based
}
您可以了解更多关于 FFT here
FFT 是一种众所周知的算法,因此您可能会发现它在许多操作系统站点上实现。你可以用这个 library如果你愿意,但周围有独立的代码。
一旦有了 FFT 数组,就可以在 View 中绘制值。
你可以用这个人的代码为例: https://github.com/dzolnai/ExoVisualizer
他还发表了一篇博文: https://www.egeniq.com/blog/alternative-android-visualizer

关于android - 如何将音频可视化器实现到 exoplayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63031132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com