AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Welcher Mediaplayer

Ein Thema von josef-b · begonnen am 14. Nov 2022 · letzter Beitrag vom 15. Nov 2022
Antwort Antwort
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
90 Beiträge
 
Delphi 11 Alexandria
 
#1

Welcher Mediaplayer

  Alt 14. Nov 2022, 20:25
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
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.104 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Welcher Mediaplayer

  Alt 14. Nov 2022, 22:56
Ich nutze Bass.Dll und für das jeweilige Audioformat die passende Dll
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
954 Beiträge
 
Delphi 6 Professional
 
#3

AW: Welcher Mediaplayer

  Alt 15. Nov 2022, 04:27
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.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
90 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Welcher Mediaplayer

  Alt 15. Nov 2022, 12:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.122 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Welcher Mediaplayer

  Alt 15. Nov 2022, 13:53
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?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
CHackbart

Registriert seit: 22. Okt 2012
258 Beiträge
 
#6

AW: Welcher Mediaplayer

  Alt 15. Nov 2022, 20:04
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf