Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Welcher Mediaplayer (https://www.delphipraxis.net/211873-welcher-mediaplayer.html)

josef-b 14. Nov 2022 19:25

Welcher Mediaplayer
 
Ich möchte in meiner Delphi-Anwendung einen Media-Player integrieren. Er soll Mp3 und Mp4 Files abspielen.

Ein wenig habe ich was ausprobiert.

Zuerst TMediaplayer, ging insoweit aber kommt (mit einigen (neueren?) MP3-Files nicht klar.

Dann VLC-Player installiert und wollte die ActiveX Library nutzen. Allerdings sehe ich die in meiner Delphi-Typbibliothek nicht.

Dann habe ich den WindowsMediaPlayer per ActiveX probiert. Er geht so lala...Zum Beispiel muss ich beim ersten Starten immer zwei Mal controls.play ausführen, so als sei er vorher nicht bereit. Habe aber nichts gefunden, dass man den starten oder inizialisieren kann..

Mich würde interessieren, wie ihr es macht bzw. mit welchem Player

Vielleicht noch wichtig. Ich nutze Delphi 11

juergen 14. Nov 2022 21:56

AW: Welcher Mediaplayer
 
Ich nutze Bass.Dll und für das jeweilige Audioformat die passende Dll

HolgerX 15. Nov 2022 03:27

AW: Welcher Mediaplayer
 
Hmm..

Wenn Du einen Mediaplayer direkt in deine Applikation einbauen möchtest, dann kannst Du auch DirectShow, sprich die Windows-API verwenden.
Hierzu kann immer noch das DSPack (V2009) verwendet werden.

Welche Video-Formate (MP4 / DivX / Mov ..) abgespielt werden können hat dann weniger mit dem Player, als mit installierten Video-Codecs zu tun.
Viele Player (Windows-Mediaplayer, VLC...) liefern diese einfach bei der Installation mit aus.

Generell kann über das DSPack alle Viedeo-Formate verwendet werden, welche auch auf dem jeweiligen PC per VLC/Mediaplayer angezeigt werden können.

Ich habe mir für meine Applikation eine DLL gebastelt, welche einen einfachen Videoplayer mit DSPack enthält. Läuft auf XP bis Win11.

josef-b 15. Nov 2022 11:54

AW: Welcher Mediaplayer
 
wobei BASS.DLL nur Audio spielt, keine Videos, oder?

BASS is an audio library for use in software on several platforms. Its purpose is to provide developers with powerful and efficient sample, stream (MP3, MP2, MP1, OGG, WAV, AIFF, custom generated, and more via OS codecs and add-ons), MOD music (XM, IT, S3M, MOD, MTM, UMX), MO3 music (MP3/OGG compressed MODs), and recording functions. All in a compact DLL that won't bloat your distribution.

C/C++, Delphi, and Visual Basic APIs are provided, with several examples to get you started. .NET and other APIs are also available.

Bernhard Geyer 15. Nov 2022 12:53

AW: Welcher Mediaplayer
 
Was spricht dagegen das über den Windows-Browser zu machen?
Also MP3 bzw. MP4 in "einfachen html-Seite" einbedden und dann mit TEdgeBrowser (oder TWebbrowser auf Edge gestellt) zu laden und abspielen zu lassen?

CHackbart 15. Nov 2022 19:04

AW: Welcher Mediaplayer
 
Aus Erfahrung weiß ich, wenn es nur um Audio geht, ist Bass die beste Wahl. Die Bibliothek läuft auf allen Plattformen, ist extrem klein und sehr performant. Für Media allgemein würde ich Directshow empfehlen, oder FFmpeg. Ich hatte mal eine Erweiterung für Alcinoe geschrieben: https://github.com/MagicFoundation/Alcinoe/issues/164.
Du kannst auch das hier mal probieren: https://github.com/FactoryXCode/MfPack
Ich hatte damals kein Glück mit PlayReady - deswegen bin ich dann auf die von Bernhard vorgeschlagene Variante umgestiegen. Einen Webbrowser mit einem Javascript bei dem ich den Shakaplayer lade und meinen Stream im Browserfenster abspiele.

Code:
<html xmlns="http://www.w3.org/1999/xhtml">
  <body style="margin:0;padding:0;background-color:0">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/shaka-player/4.3.0/shaka-player.compiled.js"></script>
    <div id="videodiv" style="position:absolute;width:100%;height:100%;z-index=0">
      <video width=100% height=100% id="video" autoplay></video>
    </div>
    <script>
      async function loadMedia(FileName, Widevine) {
        try {
          window.player.configure({
            drm: {
              servers: {
                "com.widevine.alpha": Widevine,
              },
              advanced: {
                "com.widevine.alpha": {
                  "videoRobustness": "SW_SECURE_CRYPTO",
                  "audioRobustness": "SW_SECURE_CRYPTO",
                }
              },
            },
          });
          window.player.configure("manifest.dash.ignoreMinBufferTime", true);
          window.player.configure("streaming.rebufferingGoal", 1);
          window.player.configure({
            manifest: {
              dash: {
                ignoreMinBufferTime: true
              }
            },
            streaming: {
              rebufferingGoal: 1,
            }
          });
          await window.player.load(FileName);
        } catch (e) {
          onError(e);
        }
      }

      function initApp() {
        shaka.polyfill.installAll();
        if (shaka.Player.isBrowserSupported()) {
          initPlayer();
        } else {
          console.error("Browser not supported!");
        }
      }
      async function initPlayer() {
        const video = document.getElementById("video");
        const player = new shaka.Player(video);
        video.onloadeddata = function() {
          setTimeout(function() {
            video.muted = false;
            video.play()
          }, 250);
        };
        window.player = player;
        player.addEventListener("error", onErrorEvent);
      }

      function onErrorEvent(event) {
        onError(event.detail);
      }

      function onError(error) {
        console.error("Error code", error.code, "object", error);
      }
      document.addEventListener("DOMContentLoaded", initApp);
    </script>
  </body>
</html>
Da die Browserkomponente Javascript Befehle ausführen kann, kann man loadMedia einfach laden mit der gewünschten URL und schon spielt das ganze in dem Browserfenster ab.

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz