小编Eri*_*ric的帖子

Java音频可视化器 - 如何捕获扬声器的实时声音输出?

tl; dr对于未来的读者,使用Java或C#无法(现在)录制实时音频.使用C++,因为它提供了大量的音频api.


我的目标是获得在Windows机器上播放的当前声音,并像图形音频可视化器一样分析声音(获得音量属性和Hz(基数和高音)).当我说当前声音时,我的意思是如果要播放Youtube视频或Spotify歌曲,这个程序会读取该音频输出.我无意播放声音,但实时捕捉它并将其可视化.

在尝试这样做时,我阅读了如何构建音频波形显示,并探讨了如何将音频文件转换为字节数组(一行).这没有用,因为它不会得到当前的声音.我还阅读了如何捕获音频,以及这个java访问声音教程,这些都没有回答我的问题,因为它们都需要加载歌曲文件.

我根本就不理解这一点.我完全无能为力,任何帮助都会受到赞赏.

编辑:我做了一些更多的环顾四周,这个来源第二个答案让我得出结论:我可以找到所有的音频设备,看看哪一个产生声音.我不知道在那之后该怎么办.

编辑2(再次编辑):从实验和环顾四周,我在下面编写了这段代码.我认为这让我朝着我想要的方向前进,但我不知道如何完成它.

    Mixer.Info[] mixers = AudioSystem.getMixerInfo();
    for (Mixer.Info mixerInfo : mixers) {
        Mixer mixer = AudioSystem.getMixer(mixerInfo);
        try {
            mixer.open();
            Line.Info[] lines = mixer.getTargetLineInfo();
            for (Line.Info linfo : lines) {

                Line line = AudioSystem.getLine(linfo);

                //here I'm opening the line, but I don't know how to grab data
                line.open();

            }
        } catch (LineUnavailableException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
Run Code Online (Sandbox Code Playgroud)

我使用了这个来源:在混音器行中检查音频播放的级别 …

java audio javasound output

15
推荐指数
1
解决办法
2747
查看次数

Monogame、SharpDX 和 XNA 有什么关系?

我一直在研究用于创建游戏的好工具,我遇到了 Monogame、Sharpx 和 XNA。我对每个问题都有一些疑问:

  1. 当我创建一个新的 Windows 项目(它宣传它使用 DirectX 12)时,代码模板如下所示:

    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    
    Run Code Online (Sandbox Code Playgroud)

我知道 Monogame 是 XNA 的重新实现,但“重新”部分在哪里?这段代码显示了使用 Microsoft 的 XNA 的 Monogame,甚至没有暗示 DirectX 12 的使用。

  1. SharpDX 具有使用 WinRT 的优势(所以我听说过),但这对我来说到底意味着什么?我知道 SharpDX 是一个位于 DirectX 之上的层,允许它在 C# 中使用,自然应该使用 WinRT。Monogame有什么理由不用WinRT?

我觉得我对某些事情感到困惑并想要清楚。请记住,我对这些东西完全是个菜鸟,任何事情都有帮助!

c# xna monogame sharpdx

3
推荐指数
1
解决办法
2052
查看次数

标签 统计

audio ×1

c# ×1

java ×1

javasound ×1

monogame ×1

output ×1

sharpdx ×1

xna ×1