Laden...

Wie das Gerät zur Audiowiedergabe ändern?

Erstellt von LittleTester vor 2 Jahren Letzter Beitrag vor 2 Jahren 380 Views
L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor 2 Jahren
Wie das Gerät zur Audiowiedergabe ändern?

Es ist nur eine Kleinigkeit, aber es nervt mich mittlerweile doch.

Während mir tagsüber für YouTube und co die normalen Boxen genügen, höre ich abends gerne Musik mit meinem hochwertigeren Headset. Außerdem kann man da dann etwas lauter stellen ohne das die Nachbarn gestört werden.

Ich habe mir ja schon "Sound" aus der Systemsteuerung auf das Desktop gepackt, aber auch das ist mit mittlerweile zu aufwendig, weil es ja eigentlich auch schneller geht.

Ich würde mir gerne ein kleines Tool schreiben, dass ich einfach nur Doppelklicken muss und die Audiowiedergabe springt von der Realtek Onboard-Soundkarte auf mein Logitech-Headset, bzw. wieder umgekehrt. Wonach suche ich in C#, bzw. wie kann ich das anstellen? Geht doch sicher mit einer Hand voll Zeilen, oder?

Habe Visual Studio 2022 installiert.

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

4.938 Beiträge seit 2008
vor 2 Jahren

Das hat nichts mit C# oder .NET zu tun, sondern ist ein Feature von Windows.
Ich habe aber zwei Projekte dazu gefunden:

PS: Nach "Hand voll Zeilen" sieht das aber alles nicht aus 😉 Außerdem scheint es dafür keine offizielle Schnittstelle von Windows aus zu geben und ist versionsabhängig (also keine Garantie, daß es mit der neuesten Windows-Version läuft).

D
261 Beiträge seit 2015
vor 2 Jahren

Unter Windows 10 kann ich, sofern ich mehrere Geräte angeschlossen habe, unter dem Sound Icon in der Taskbar einfach das Standardgerät wechseln.
Mein privater Rechner hat jetzt leider nur eins, aber ich habe im Screenshot die Stelle markiert, bei der ich es normalerweise wechseln kann.

187 Beiträge seit 2009
vor 2 Jahren

Servus,

am einfachsten scheint mir das unter Verwendung des NuGet-Paketes CoreAudio realisierbar zu sein.
https://docs.microsoft.com/en-us/windows/win32/api/_coreaudio/ Die Dokumentation zur CoreAudioApi

Ein auf die Schnelle hingeschmierter Code:


using System;
using CoreAudio;

namespace AudioCore
{
    internal class Program
    {
        static MMDeviceCollection speakerList;
        static MMDevice activeSpeaker;


        static void Main(string[] args)
        {
            MMDeviceEnumerator deviceEnumerator = new();
            speakerList = deviceEnumerator.EnumerateAudioEndPoints(EDataFlow.eRender, DEVICE_STATE.DEVICE_STATE_ACTIVE);
            activeSpeaker = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);

            foreach (MMDevice device in speakerList)
            {
                Console.WriteLine(device.FriendlyName);
                Console.WriteLine(device.ID);
                Console.WriteLine("--");
            }

            SetDefaultAudioDevice();

            Console.ReadKey();
        }

        static void SetDefaultAudioDevice()
        {
            MMDeviceEnumerator deviceEnumerator = new();
            foreach (MMDevice device in speakerList)
            {
                if (!device.ID.Equals(activeSpeaker.ID))
                {
                    deviceEnumerator.SetDefaultAudioEndpoint(device);
                    break;
                }
            }
        }
    }
}

16.827 Beiträge seit 2008
vor 2 Jahren

Neben der Standard Windows Funktion gibt auch bereits ein Tool dafür: EarTrumpet
Gibt auch GitHub auch hunderte Projekte, wo man sich anschauen kann, wie sowas funktioniert, zB GitHub - fredemmott/StreamDeck-AudioSwitcher: StreamDeck plugin for setting active audio devices
Handvoll Zeichen ist natürlich nicht.

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor 2 Jahren

Danke euch allen. Damit sollte mir weiter geholfen sein 🙂

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6