Radio Player kein bock Streams zuladen.

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Takafusa.

    Radio Player kein bock Streams zuladen.

    Hallo VB-Paradiese Community,
    ich habe ein Problem mit meinem Programm es will nur dein ersten Radio abspielen alle anderen nicht.

    Library’s verwendet:
    LibVLCSharp
    MaterialDesignColors/Themes
    Mono.Cecil
    Newtonsoft.Json

    Source code ist auf Github öffentlich einsehbar.
    github.com/YourEliteSystems/We-Are-One

    Und eine Frage ist es möglich von Bass.Net wegzugehen und zu CSCore gehen wegen Performance und so.
    Da ich auf LibVLCSharp gegangen bin und mein Programm Leistung schonender wurde.

    #E: Einige änderungen.

    Mit freundlichen Grüßen
    DarkEvolution

    Dateianhang und Messengerverweis entfernt. Bitte keine Kompilate außerhalb des Showrooms posten. Außerdem widerspricht es dem Sinn eines Forums, durch Verlagerung der Diskussion in nicht-öffentliche Messengerdienste, der Nachwelt den Prozess der Lösungsfindung vorzuenthalten. ~Thunderbolt

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „DarkEvolution“ ()

    Hi

    Zunächst, ich kenne mich mit der Bass.dll nicht aus. Wenn Du von der Bass.dll weg möchtest, dann kannst Du auch mit der Media Foundation einen Player basteln, der auch öffentliche WebRadio/TV-Streams wiedergeben kann. Ob CSCore alle dazu benötigten COM-Interfaces enthält, kann ich Dir auch nicht sagen. Da müsstest Dich mal hier durcharbeiten: docs.microsoft.com/de-de/windo…files?redirectedfrom=MSDN Per MF-API MFGetService(IMFMediaSource, MF_METADATA_PROVIDER_SERVICE, IID_IMFMetadataProvider, pIMFMetadataProvider) -> IMFMetadataProvider kommst Du auch an die Senderinfos wie Genre, Bitrate, Sendertitel usw. Allerdings, oder ich habe es noch nicht herausgefunden, keine laufende Songinfos. Also welcher Song gerade läuft.

    Wenn Du die Senderinfos nicht benötigst und nur einen einfachen Player brauchst, kannst Du auch die COM-Interfaces IMFMediaEngineClassFactory, IMFMediaEngine/IMFMediaEngineEx, IMFAttributes, IMFMediaEngineNotify + die MF-APIs MFStartup, MFShutdown und MFCreateAttributes verwenden. Die sind in CSCore, soweit ich das das letzte mal eingesehen habe, nicht alle vorhanden.
    Mfg -Franky-
    @Thunderbolt
    Ich entschuldige mich vielmals bei dir und es war nicht meiner Absicht dies hier mit rein zu posten oder etwaige andere Sachen hier reinzuschreiben.

    @-Franky-
    Ist nett aber ich will so wenig wie möglich Windows Media Player drin haben.
    Da der Windows Media Player unter einigen Windows Versionen nicht funktioniert oder gar Angreifbar ist.

    Mit freundlichen Grüßen,
    DarkEvolution
    en.wikipedia.org/wiki/Media_Foundation hat nichts mit dem Windows Media Player zu tun !
    Recherchiere doch einfach mal selbstständig !
    @FormFollowsFunction
    Dir ist auch bewusst dass dieses Programm nicht auf c++ schreibe, sondern c# und soweit ich es weiß unterstützt kein C#
    Derzeit .net handler auch nicht existiert
    Ich revidiere meine aussage es existiert eine c# handler aber der ist nicht gerade sehr informativ.
    Hi

    Die Media Foundation läuft in einigen Programmiersprachen. Vb.Net, C#, C++, Delphi usw und ich habe das sogar mit VB6 (ohne TLB) zum laufen bekommen. Ist ja alles COM basiert. In CSCore ist ein Beispiel für einen Player vorhanden. Ob der Player die Media Foundation nutzt, musst mal nachschauen.

    Ansonsten ist die Doku zur Media Foundation recht gut und es gibt auch eine komplette Schritt für Schritt Anleitung für einen Player.
    Mfg -Franky-
    Hab es nun auf LibVLCSharp geändert und es läuft flüssiger und es wird wieder weniger RAM verbraucht.
    Aber es gibt immer noch das dass Programm immer noch nur ein Stream als Wiedergabe weiter gibt zum Mediaplayer vom VLC Lib.

    Mit freundlichen Grüßen
    DarkEvolution
    Weniger RAM? Also ich nutze auch die Bass, dazu nutze ich ein Dataset, welches gut gefüllt ist mit Daten von mehr als 50000 Musik-Titeln. Ich komme komischerweise nicht über 150 MB RAM, wobei das Dataset den Löwenanteil belegt. Wenn die RAM auslastung bei dir steigt und steigt, machst du was falsch. Wenn es nicht flüssig läuft auch.

    Wenn der Bauer nicht schwimmen kann, liegt es an der Badehose.


    Wenn du eine kleine Anwendung machst, welche den Fehler reproduziert, häng sie hier an. Werde nicht auf Github alles durchsuchen, weil dein Projekt auf Github vermutlich nicht aktuell ist. Nachdem du auf die LibVLC umgestiegen bist, sind noch Sachen der BASS drin zu finden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Takafusa“ ()

    Ich hab mal ins Projekt reingeschaut.
    Gab 2 Sachen die mich störten beim finden des Fehlers.

    1->Komischerweise schmiert VS ständig ab(wenn designer offen).
    2->Die Senderliste scheint nicht aktuell.

    Sobald ich z.B. die Url von 1Live im Webbrowser öffne, kommt

    Quellcode

    1. Access Denied
    2. You don't have permission to access "http://1live.akacast.akamaistream.net/1live" on this server.
    3. Reference #18.5d6dd58.1617596181.27943352


    Also nicht alle Urls sind aktuell. Darauf solltest du achten.

    Wenn andere schon mal schauen sollen, muss das besser Vorbereitet sein! Herauszufinden welche Urls denn funktionieren kostet unnötig Zeit. Warum VS immer abschmiert, keine Ahnung, kann ich wegen fehlender WPF-Kenntnisse vermutlich auch nicht herausfinden.

    Ich brauchte nur wenige änderungen in MainWindow.xaml.cs machen, damit es lief. Dein bool Enabled scheint dir entgangen zu sein, dieser war True, nachdem in diesen in BtnStop_Click auch wieder auf false gestellt hab, konnte ich neue Streams starten. In BtnPlay_Click fand ich komisch das du testest ob senderView.SelectedIndex == 0 ist, so könnte ja nur der erste Sender abgespielt werden. Sicher war es ähnlich mit der Bass.dll.

    Also Editiert habe ich BtnPlay_Click und BtnStop_Click, eine void zum stoppen hinzugefügt um redundanz zu vermeiden. Klappt jetzt soweit.

    C#-Quellcode

    1. private void BtnPlay_Click(object sender, RoutedEventArgs e)
    2. {
    3. StopPlay();
    4. if (senderView.SelectedIndex > -1)
    5. {
    6. RItem item = (RItem)senderView.SelectedItem;
    7. VlcControl.SourceProvider.MediaPlayer.Play(new Uri(item.Url));
    8. lblStation.Content = String.Format("Station: {0}", item.Name.ToString());
    9. Enabled = true;
    10. btnStop.IsEnabled = true;
    11. IsPlaying = true;
    12. }else if (senderView.SelectedIndex < 0){
    13. MessageBox.Show("No Item Found");
    14. }
    15. }
    16. private void StopPlay()
    17. {
    18. if (Enabled == true)
    19. {
    20. if (IsPlaying == true)
    21. {
    22. VlcControl.SourceProvider.MediaPlayer.Stop();
    23. lblStation.Content = String.Format("Station: None");
    24. btnStop.IsEnabled = false;
    25. Enabled = false;
    26. }
    27. }
    28. }
    29. private void BtnStop_Click(object sender,RoutedEventArgs e)
    30. {
    31. StopPlay();
    32. }

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Takafusa“ ()