Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Joey2020
Thema: Audio-Peak von Anwendungen auslesen (Code inside) - Frage
Am im Forum: Grafik und Sound

Ok, danke.

Ich habs nun 9 Stunden versucht, ich hab alles gelesen und nix verstanden.
Ich denke ich bekomms nicht hin, selbst zum lesen der Doku fehlt mir zuviel Wissen...
Ich lass es jetzt, bringt ja nix jetzt nach 9 Stunden noch weiter nach einem (wahrscheinlich) 10 Zeiler zu "suchen"...:-)

Trotzdem Danke!

Thema: Audio-Peak von Anwendungen auslesen (Code inside) - Frage
Am im Forum: Grafik und Sound

Danke, ich hab das schon gesehen - aber es hilft mir nicht weiter da ich es nicht verstehe bzw. nicht verstehe wie es zu programmieren ist... ich bin Anfänger und versuche anhand von Beispielen zu verstehen wie sowas aussehen muss...

Das Peak-Meter für die Soundkarte habe ich ja hinbekommen.

Aber das Peakmeter für eine einzelne Anwendung auf der Soundkarte - das ist das Problem...:-(

Thema: Audio-Peak von Anwendungen auslesen (Code inside) - Frage
Am im Forum: Grafik und Sound

Hallo Leute,

ich nutzte NAudio zum Auslesen des Soundpeaks meiner Soundkarte...

Das klappt perfekt...

Ich möchte aber den Soundpeak einer Anwendung (zB Firefox) einzeln auslesen...

Diesen Code nutzte ich im Moment:


NAudio.CoreAudioApi.MMDeviceEnumerator enumerator = new NAudio.CoreAudioApi.MMDeviceEnumerator();
var adevice = enumerator.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All,  Audio.CoreAudioApi.DeviceState.Active);
cbDevice.Items.AddRange(adevice.ToArray());
cdDevice ist eine DropDown-Liste wo alle Devices reingeschrieben werden...

Nun kann ich das Device auswählen und lese dann den Peak mit einem Timer aus:


var adevice = (NAudio.CoreAudioApi.MMDevice) cbDevice.SelectedItem;
txtPeakLevel.Text = adevice.AudioMeterInformation.MasterPeakValue.ToString();
txtPeakLevel ist eine Textbox...

So habe ich natürlich mehrere Anwendungen laufen:
Firefox
Amazon Music
Discord

Und alle Anwendungen machen Sound...

Ich möchte aber nur den Sound von Discord "messen"...
Ich hab mich blöd gesucht, ich finde keine Möglichkeit nur die Anwendung abzufragen.
Immer wird das komplette Device (in meinem Fall eine Realtek-Soundkarte) abgefragt...

Hat jemand ein Codebeispiel wie das gehen soll?!?

Vielen Dank schonmal!
Grüße,
Joerg

Thema: Wie kann ich einen Filestream mit verschiedene Encoding öffnen (abhängig von Variable)?
Am im Forum: Grundlagen von C#

Hallo Leute,

ich habe folgenden Code:


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Encoding encoding = Encoding.GetEncoding(1252);

            if (Encoder == "other") {
                System.IO.StreamReader file1 =
                    new System.IO.StreamReader(@filename1);
            }
            else {
                System.IO.StreamReader file1 =
                    new System.IO.StreamReader(@filename1, encoding);
            }

            while ((line = file1.ReadLine()) != null)
...

Leider geht das nicht weil er in der while-Schleide dann file1 nicht kennt...

Wie kann ich denn, abhängig vom Inhalt der Variable "Encoder" ein File mit verschiedenen Encodings öffnen?
Ich habe auch versucht:


Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);


            if (Encoder == "other") {
               Encoding encoding = Encoding.GetEncoding(1252);
            }
            else {
                Encoding encoding = Encoding.GetEncoding(65001);
            }

            System.IO.StreamReader file1 = new System.IO.StreamReader(@filename1, encoding);
            while ((line = file1.ReadLine()) != null)
...
Auch das geht nicht...:-(

Jemand einen Tipp?

Danke!
Joey

Edit:
Hat sich erledigt!

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            // Encoding encoding = Encoding.GetEncoding(1252);
            Encoding encoding;

            if (Encoder == "other") {
                encoding = Encoding.GetEncoding(1252);
            }
            else {
                encoding = Encoding.GetEncoding(65001);
            }

So gehts...:-)

Thema: Textdatei hat falsche Codierung
Am im Forum: Grundlagen von C#

Ahhh, danke dir, das scheint zu gehen - ich teste es jetzt nochmal ausführlich.

1000 Dank!

Edit: Funktioniert! Nochmal vielen Dank, du hast mir echt geholfen!

Thema: Textdatei hat falsche Codierung
Am im Forum: Grundlagen von C#

Danke für deine Antwort.

Ich habe es nun so versucht:

Encoding wind1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);
Encoding utf8 = Encoding.UTF8;

while ((line = file1.ReadLine()) != null)
{
   byte[] wind1252Bytes = wind1252.GetBytes(line);
   byte[] utf8Bytes = Encoding.Convert(wind1252, utf8, wind1252Bytes);
   string utf8String = Encoding.UTF8.GetString(utf8Bytes);
   Console.WriteLine(utf8String);
}

Natürlich ohne Erfolg - meine Umlaute (äöü) werden in der Console als ? angezeigt...

Ich weiß echt nicht was ich noch machen soll - ich habe die Doku gelesen und sämliche Codebeispiele versucht - ich bekomme es nicht hin.

Ich habe die Textdatei mal angefügt - es muss doch ohne viel Aufwand möglich sein die mit Umlauten usw einzulesen...

Hat jemand ein Codebeispiel für mich das funkltiniert?

Vielen Dank!

Thema: Textdatei hat falsche Codierung
Am im Forum: Grundlagen von C#

Hallo Leute,

ich bin Programmieranfänger und habe ein Problem mit einer Datei die ich folgermaßen einlese:

System.IO.StreamReader file1 =
                new System.IO.StreamReader(@Datei);
while ((line = file1.ReadLine()) != null)
{
 // ...
}

Ich muss Zeile für Zeile einlesen weil ich mit jeder Zeile was mache, also möchte ich nicht die komplette Datei auf einmal einlesen.

Soweit sogut...

Der Inhalt der Datei ist:
e73e57 Pax_26.09.2019\Mex\M+U\M&U.ppt
d265d1 Pax\hdue\dwe\eew's\08Edsn_update - for ew.xls
ebb73e Pax\das dasu\ABC\121_KurzPräs.pdf
e6d6ed Pax\dsa(huuh)\~$rkeg-312HasBear 2225-04-202_UBU.doc
5fb411 Pax\dast (ds)\~Wdas764.tmp
54b429 Pax\dsds\ds- da\dsds(SAaaaawqA'S).xls
9af816a Pax\fsd - ZZZ\OK\Ea+WQW\2021Mo_K_KurzPräs.pdf
Wenn ich das File in Notepad++ öffne sagt er das die Kodierung der Datei ANSI ist.

Leider ist der Inhalt von meinem "line" in einigen Fällen "nicht korrekt".

Benutzte ich zB
System.IO.StreamReader file1 =
new System.IO.StreamReader(@Datei);
werden alle Umlaute durch so eine komische schwarze Raute mit ? ersetzt.

Benutzte ich zB
System.IO.StreamReader file1 =
new System.IO.StreamReader(@Datei, Encoding.UTF7);
werden + Zeilen durch \uBDO2 ersetzt.

usw usw

Ich habe alle Encodings die Visual Studio vorschlägt probiert, keines funktioniert so das am Ende wirklich alle "korrekt" in der Var line drinsteht.

Konvertiere ich nun die Datei mit Notepad++ vor dem Einlesen in UTF8, dann funktioniert es direkt.
Alles in line ist da, Umlaute und + Zeichen sind korrekt drin...


Ich habe mich blöd gesucht und keine Lösung gefunden, ich bin sicher es ist trivial - aber ich bekomms nicht hin...

Kann mir jemand sagen wie ich den Inhalt der Datei korrekt in einen string bekomme (inkl. Umlaute, und + (plus))?

Ich möchte die Datei nur wenn es nicht anders geht in der Software vorher konvertieren.
Am liebsten würde ich c# sagen: hey, das ist ne ANSI-datei, ließ diese bitte mit äüö und + usw ein und veränder da nix...
Nur im Notfall möchte ich das File einlesen und dann als UTF8 speichern... ich möchte das original ANSI-File also nicht verändern!

Ich wäre sehr dankbar wenn mir jemand mit einem Codebeispiel helfen könnte!

PS: Ich möchte außerdem prüfen ob das File in ANSI kodiert ist und nur dann möchte ich „was verändern“. Wenn das File nämlich UTF8 ist, funktioniert es ja ohne Probleme. Und manchmal ist das File das ich einlesen will utf8, manchmal ANSI... ich möchte das irgendwie prüfen, weiß aber auch hier nicht wie ich das prüfen kann...

Vielen Dank!
Joey