获取android手机当前正在播放的歌曲的PCM数据

发布于 2025-01-06 11:30:43 字数 113 浏览 0 评论 0原文

我打算获取当前播放的解码 PCM 数据 Android 手机中的歌曲。我们可以从应用层来做吗? 同时,如果你们中的任何一个人能提出建议,那将会非常有帮助 我是java中的音频解码器。

问候 阿尔宾

I am planning to fetch the decoded PCM data of a currently playing
song in the android phone. Can we do it from the application layer?
Meanwhile it would be really helpful if any one of you could suggest
me an audio decoder in java.

Regards
Albin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妳是的陽光 2025-01-13 11:30:43

试试这个。它将帮助您获取当前播放歌曲的 PCM 数据:

mVisualizer = new Visualizer(mPlayer.getAudioSessionId());
        mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);

    Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener()
    {
        @Override
        public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
                int samplingRate)
        {
            //PCM DATA 
        }

        @Override
        public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
                int samplingRate)
        {

        }
    };

    mVisualizer.setDataCaptureListener(captureListener,
            Visualizer.getMaxCaptureRate() / 2, true, false);

    // Enabled Visualizer and disable when we're done with the stream
    mVisualizer.setEnabled(true);
    mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer)
        {
            mVisualizer.setEnabled(false);
        }
    });

Try out this. It will help you to get PCM data for currently playing song :

mVisualizer = new Visualizer(mPlayer.getAudioSessionId());
        mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);

    Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener()
    {
        @Override
        public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes,
                int samplingRate)
        {
            //PCM DATA 
        }

        @Override
        public void onFftDataCapture(Visualizer visualizer, byte[] bytes,
                int samplingRate)
        {

        }
    };

    mVisualizer.setDataCaptureListener(captureListener,
            Visualizer.getMaxCaptureRate() / 2, true, false);

    // Enabled Visualizer and disable when we're done with the stream
    mVisualizer.setEnabled(true);
    mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
    {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer)
        {
            mVisualizer.setEnabled(false);
        }
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文