[Qt4] MediaPlayer (*würg*) einbetten

Alles rund um die Programmierung mit Qt
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

[Qt4] MediaPlayer (*würg*) einbetten

Beitrag von Esleborn »

hi,
ich hab hier ein besch...öntes Problem.

Lange Fassung: Ich muss mich jetzt hier als Verräter outen... mein Chef (bitte kein Kommentar über ihn, ich hab mir schon selbst 'ne Sammlung von negativen Kommentaren über ihn erstellt...) hat grad kurzfristig beschlossen, dass die MP3s, die wir im aktuellen Projekt benutzen/verkaufen mit DRM geschützt werden sollen. Als Folge dessen hat sich mein Problem MP3s abzuspielen (siehe hier und hier) leicht verändert. Ich brauche nun die Möglichkeit einen Player, der DRM unterstützt, in ein Qt Projekt einzubinden. Beschränkt wird das ganze dafür (erstmal) auf Windows. Daher kam mir die "Lösung" den M$ Speicherfresser ("Media Player") zu verwenden. Ich hatte auch irgendwo gelesen, wie ich den am besten in ein Qt-Widget einbette, so dass ich ihn zum Abspielen von MP3s verwenden kann. Weiß aber nicht mehr wo, und find auch nichts... kann mir da vllt einer weiterhelfen?

Kurze Fassung: Integrieren von M$ "Media Player" in ein Qt Widget, wie?

Danke
Elgrimm Esleborn

PS: Ja ich bin Mitglied im Protect Privacy und muss trotzdem "DRM-Software" entwickeln. Tut mir ja selbst weh...
Zuletzt geändert von Esleborn am 6. November 2005 22:04, insgesamt 2-mal geändert.
Glaube an eine Lösung, nur dann kannst du auch eine finden.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Elementar. Du kannst MS Media Player als ein ActiveX Control in Qt Widget einbinden. Geht im Designer mit einem Click.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

sehr gut... danke

PS: Als Mathematik Student hasse ich das Wort "trivial" und Wörter mit ähnlicher Bedeutung zB "elementar"... *grins*
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

<verschoben>
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

mmh ich bin leider zu doof um damit klar zu kommen, könnte mir einer genauer Beschreiben, was ich machen muss um den MediaPlayer so einzubetten, dass ich MP3s abspielen kann`?

E.E.
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

kommt schon bitte...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Starte den Designer, in der Widget Toolbox in der Kategorie "Containers" wähle das "AxWidget". Beim Click auf der Form erscheint das "Select ActiveX Control"-Dialog. In diesem wählste "Windows Media Player". Fertig!
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

sry ich bin echt zu blöd zum sch....
meine Frage war komplett falsch gestellt... ich wollte eigentlich fragen, ob es möglich ist bzw wie es möglichst ist, den MediaPlayer mit "eigenen Buttons" usw auszustatten... leichter Alkoholgenuss und 2 Tage ohne Schlaf haben die Frage leider etwas umformuliert ;)... Sry, spätestens beim "kommt schon bitte" hätte ich die Frage vllt nochmal lesen sollen... sry
Glaube an eine Lösung, nur dann kannst du auch eine finden.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Das geht nicht... Kannst weiter saufen.... :)
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

schlecht... *trink*

PROST! ;)
Glaube an eine Lösung, nur dann kannst du auch eine finden.
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

wie übergeb ich dem player eine MP3 Datei die er abspielen soll oder ruf eine Funktion auf, welche Funktionen (à la start/pause/stop) gibt es?

thx für Infos
Glaube an eine Lösung, nur dann kannst du auch eine finden.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Über die Eigenschaft URL...
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag von Esleborn »

Code: Alles auswählen

QAxWidget *p_widget = new QAxWidget ( &window );
p_widget->setControl ( "{6BF52A52-394A-11d3-B153-00C04F79FAA6}" );
und wie bekomm ich jetzt ein item in die Playlist und starte/pausiere/stoppe das abspielen?

Code: Alles auswählen

IDispatch *p_result = ( IDispatch * ) p_widget->querySubObject ( "newMedia ( QString )", filePathString );
p_widget->dynamicCall ( "setCurrentMedia(IDispatch*)", p_result );
tut nicht, es kommt der Fehler: "QAxBase: Error calling IDispatch member setCurrentMedia: Type mismatch in parameter 0."...

E.E.

PS: Ich will nicht sofort das Abpsielen starten... außerdem brauch ich die Möglichkeit zum pausieren und stoppen...
Glaube an eine Lösung, nur dann kannst du auch eine finden.
tamad
Beiträge: 1
Registriert: 21. Oktober 2007 22:04

Beitrag von tamad »

Ich habe das gleiche Problem. Ich kann das WMP 11.0 ActiveX Control mit setControl() anlegen, aber um an den play(), stop() usw Methoden zu kommen, brauche ich das IWMPControls Interface. Wie kann man über das QAXWidget Objekt, das durch setControl für das WMP 11 ActiveX generiert wurde, ein Objekt mit dem IWMPControls Interface instanzieren ? Kann bitte jemand mit einem C++ Code-Sample helfen ?
Danke im voraus.
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo zusammen,
bevor es hier zu chaotisch wird eine allgemein gehaltene Anleitung...

Das folgende gilt natürlich nur für Windows und ich nehme an man braucht auch die Commercial-Version. Ich halte das ganze bewusst allgemein.

Als erstes sollte man das richtige Control finden btw die entsprechende CLSID. Persönlich nutze ich dafür am liebsten ein kleines Tool namens ActiveXHelper (download).

Hat man das Control gefunden, sollte man sich eine Doku der Interfaces erstellen lassen. Hierfür bringt Qt ein kleines Tool mit:

<IrgendeinLaufwerk>:\Qt\4.x.x\tools\activeqt\dumpdoc
Aufruf mit: dumpdoc.exe "<CLSID>" -o doku.html

Das Tool kompilieren und verwenden. Am Ende sollte ne schicke HTML-Doku bei raus kommen (Parameter -O). In der Doku findet man nun kleine Codeschnipsel, wie man die einzelnen Funktionen verwenden soll.

Mit den Codeschnipseln und ein wenig herumprobieren, bekommt man das Control dann üblicherweise zum laufen.

Alternativ kann man versuchen sich mit dem Tool "dumpcpp" Interfaceklassen erstellen zu lassen, aber ehrlich gesagt hat das bei mir bisher keinen Erfolg gebracht, wenn es jemand schafft wäre ich für ein paar Tips dankbar :-) hatte dann immer Probleme mit Namespaces und ich konnte nichts davon kompilieren.


Ciao,
Sephral
Antworten