Wie füge ich in C# Musik ein, die über eine Website läuft?
Hallo zusammen,
Ich bin momentan dabei ein Programm zu machen, dass durch einen Knopfdruck Musik von einer Website abspielt. Das ganze ist Live Musik die ich (auf Auftrag) verwenden soll.
Die normale Methode mit dem .wav kenne ich schon, aber wie geht es denn mit Musik von einer Website?
LG
2 Antworten
using System;
using System.Windows.Media;
class Prog{
public static void Main(string[] args){
Console.WriteLine("MDR Jump Player");
var p1 = new System.Windows.Media.MediaPlayer();
p1.Open(new System.Uri(@"http://mdr-284320-0.cast.mdr.de/mdr/284320/0/mp3/high/stream.mp3"));
p1.Play();
Console.ReadKey();
}
}
Nicht vergessen PresentationCore.dll und WindowsBase.dll zu referenzieren:
Visual Studio:
- im Projektmappen-Explorer nach "Referenzen"
- Rechtsklick auf "Referenzen"
- Wähle "Verweis hinzufügen ..."
- Suche die Liste "Presentation.Core" und aktivieren Sie das Kontrollkästchen
- dito für Windows.Base
Kommandozeilencompiler:
- /reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationCore.dll /reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\WindowsBase.dll
(Pfade können für andere .Netversionen abweichen)
Es gibt noch andere Lösungen aber das ist die billigste, welche mit wenigen Zeilen auch OnlineURLs abspielt.
Hier noch eine kleine DemoBatch, welche mit dem Standard-Win10 C#-Kommandozeilencompiler eine kleine exe erzeugt.
Demo.cmd
/* 2>nul ||@cls
@echo off
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\Framework\*csc.exe"') do (
set "csc=%%v"
)
"%csc%" /reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationCore.dll /reference:C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\WindowsBase.dll /out:"%~n0.exe" "%~f0"
"%~n0.exe"
pause
exit /b %errorlevel%
rem Die nächste Zeile ist wichtig nicht ändern!
::::C#code */
using System;
using System.Windows.Media;
class Prog{
public static void Main(string[] args){
Console.WriteLine("Radio - Time For Friends");
var p1 = new System.Windows.Media.MediaPlayer();
p1.Open(new System.Uri(@"http://radio-tff.funk-team.de:8000/listen1"));
p1.Play();
Console.ReadKey();
}
}
Es geht um Musik, die von einer Webseite kommt (wie einem Internetradio). Nicht um das Abspielen von Musik auf einer Webseite.
Die Frage klingt für mich danach, dass die Website selber es abspielen können soll - wie ein Internet-Radio.
Aber ja, wenn es ein Client ist, dann stimmt das natürlich.
Und dennoch sollte man mit .NET 6 arbeiten - zumindest wenn man die Möglichkeit hat.
Musik ein, die über eine Website läuft
über?...also eine beliebige Url/Stream-Quelle
Praktischerweise bietet WEP nahezu die uralte Schnittstelle, welche unsereins bereits unter VBS/JS mit "WMPlayer.OCX.7" bedient hat
Entschuldige bitte, das ich auf ein universell nutzbares Beispiel gesetzt habe. und eine Referenz auf auf die stets verfügbaren net4.x Bibliotheken gesetzt habe. (Net 6 hat lediglich andere Pfade, ist aber nicht auf jedem 0815-Rechner verfügbar)
Ich hatte bereits vor Jahren in anderen Foren das Problem, das Anfänger bei using System.Windows.Media; nicht wussten, das using nicht automatisch die WEP einbindet... (deshalb die idiotensichere Variante)
Die Batch war lediglich ein Gimmick, wie man auch ohne VS compiliert und dabei die /reference: einsetzt. ( msbuild funktioniert auch über die native Kommandozeile, aber dann hätte ich ja für die Demo die ganze Struktur auf bauen müssen . ...dafür war ich zu faul, um ehrlich zu sein) .
Was habe ich doch für ein Glück, dass ich nicht auf den nativen Ansatz nach Art von C++ verwiesen habe:
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, int Callback);
(Ich hatte ja bereits oben geschrieben, das es mehrere Möglichkeiten gibt)
über?...also eine beliebige Url/Stream-Quelle
Ich meine, dass die Website es im Browser direkt abspielt und als WebAssembly läuft WPF wahrscheinlich nicht, zumindest würde es mich sehr wundern.
Wenn es sich um eine Desktop-Anwendung handeln soll (geht mMn. nicht klar aus der Frage hervor), muss natürlich auch eine Desktop-Lösung verwendet werden. Ob WPF dafür so gut geeignet ist, ist sicherlich diskussionswürdig, aber es funktioniert.
Net 6 hat lediglich andere Pfade, ist aber nicht auf jedem 0815-Rechner verfügbar
... aber sehr leicht zu installieren oder mit der Anwendung ohne Installation mitzuliefern.
Mag sein, dass das alte .NET 4.x noch funktioniert, aber es wird seit knapp zwei Jahren nicht mehr weiterentwickelt und wer weiß, ob es ein Windows 12 noch erleben wird. Und wahrscheinlich werden auch Drittanbieter-Frameworks immer weniger, da .NET Standard 2.0 auch nicht mehr weiterentwickelt wird.
Daher sollte mMn. jeder, der damit arbeitet, wissen, dass das ein sterbendes Pferd ist. Gerade Einsteiger bekommen das dank der enormen Masse an "alten" Tutorials oft nicht mit.
Gar nicht, C# läuft nicht auf dem Client. Du musst das mit JavaScript umsetzen, von C# aus lieferst Du dann nur noch den Stream zur Musik-Datei.
Anders sieht das bei mit WebAssemblies aus, da in diesem Fall doch C# auf dem Client läuft, aber eingeschränkt und mit besonderen Anforderungen. Hier musst Du dann aber auch eine dafür vorbereitetes Framework finden, denn z.B. WPF (was Erzesel zeigt), wird da vermutlich nicht laufen.
In beiden Fällen kann ich dir keinen konkreten Tipp geben, aber zumindest die Technologien, an denen Du dich orientieren musst: JavaScript oder WebAssembly
Du hast gelesen, dass es hier im eine Website geht? Da hilft WPF herzlich wenig.
Und .NET 4.x sollte nicht mehr genutzt werden, das wird nicht mehr weiterentwickelt. WPF gibt's auch für .NET 6, läuft dann bloß nicht mehr manuell über die Referenzen, sondern über die "UseWPF"-MSBuild-Property.
Und wozu man eine Batch braucht, die das zeigt ... naja, wie Du meinst.