Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 23

Thema: mpg-preview in QT/KDE

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87

    mpg-preview in QT/KDE

    Hallo zusammen,

    so ist das, wenn eine Programmierneuling was eigenes zustande bringen will:

    Er hat ne Menge Fragen

    Ich arbeite mit KDevelop und QTDesigner und möchte in einem Programm mit mpg-videos arbeiten.

    In einem TreeView können einer oder mehrere Verweise zu mpg.Dateien angegeben werden.

    Ich möchte nun, dass der Nutzer, wenn er einen Eintrag auswählt in einem Vorschaufenster das Video betrachten kann.
    Die Vorschau sollte auch die wichtigsten Schaltflächen für die Steuerung enthalten (vorspulen, zurückspulen, pause, play, stopp und am besten noch einen slider)
    Ferner brauche einen Rückgabewert der aktuellen Position im Film.

    Hat irgend jemand verstanden, was ich meine ???

    Gibt es für soetwas fertige Widgets unter QT/KDE ?
    Hat jemand Erfahrungen mit soetwas?
    geht das überhaupt?

    Wenn jemand Ideen hat oder in einem anderen Programm schon soetwas ähnliches gesehen hat, bin ich für sachdeinliche Hinweise sehr dankbar.

    Vielleicht findet sich ja auch jemand, der soetwas programmiern kann und sich an meinem Projekt beteiligen möchte.

    Also, vielen Dank fürs Kopfzerbrechen
    Celindir
    May the source be with you...

    www.celindir.de

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, das gibt es schon, ist aber keine triviale Sachen.

    Da wäre der KMediaPlayer: http://developer.kde.org/documentati...r__Player.html
    Das ist ein Interface, das zB von Kaboodle implementiert ist.

    Man kann also einen KMediaPlayer mittels KPart Framework laden und einbinden.
    Du musst den KTrader nach einem Service für den ServiceTyp KMediaPlayer/Player fragen.

    Über KParts gibts hier leider noch nicht viele Beiträge.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Kriegt man das überhaupt einigermaßen schnell hin? Müsste man da nicht SDL einbetten?

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von axeljaeger
    Kriegt man das überhaupt einigermaßen schnell hin? Müsste man da nicht SDL einbetten?
    Das kann ja durchaus "unter der Haube" passieren.
    Hängt vom Player ab.
    Wenn es zB KMplayer ist und MPlayer als -vo xv hat, dann ist es ein XVideo Overlay.

    Darum muss sich die Applikation nicht kümmern.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Original geschrieben von anda_skoa
    Hmm, das gibt es schon, ist aber keine triviale Sachen.
    Hört sich nicht gerade einfach an

    Ist denn ein anderer Ansatz denkbar?

    Gibt es die Möglichkeit einfach einen vorhandenen MPG-Player aus dem Programm heraus zu starten und von dem einen Rückgabewert über die aktuelle Position zu erhalten?

    Also zum Beispiel Kaboodle oder ähnliches. Dann müsste man nur einen Button für den Start der Preview einbauen und die Ausgabe wieder einfangen, oder stell ich mir das mal wieder zu einfach vor??
    Celindir
    May the source be with you...

    www.celindir.de

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    So ähnlich läuft das ja mit KParts.

    Man fordert vom System eine Komponente mit bestimmten Eigenschaften und benutzt diese dann.

    Das sieht in etwa so aus:
    Code:
    #include <ktrader.h>
    #include <kservice.h>
    #include <klibloader.h>
    #include <player.h>
    
    KTrader::OfferList offers = KTrader::self()->query("KMediaPlayer/Player");
    if (offers.count() == 0)
        return; // no media player available
    
    KLibFactory* factory = KLibLoader->self()->factory(offers.first()->library());
    if (factory == 0)
        return; // could not load factory
    
    KMediaPlayer::Player* player = factory->create(this, "Player", "KMediaPlayer::Player");
    if (player == 0)
        return; // error creating player
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    Beispiel

    Hi,

    hab mal eine kleine Beispiel Applikation gemacht, die einen Player lädt.

    Erstellen mit
    #> make -f Makefile.dist
    #> ./configure
    #> make

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Hi anda_soka,

    hab ich das richtig verstanden?

    Deine App lädt eine Videoplayer-Auswahl, der auf dem System vorhandenen Player und öffnet den ausgewählten??

    Kann man es denn auch hinbekommen, dass der Player innerhalb der eigenen Applikation geladen wird und mit dieser kommuniziert (z.b. die aktuelle Position im Film zurückgibt)??

    Gruß
    Celindir
    May the source be with you...

    www.celindir.de

  9. #9
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    ich hab mir das von anda_skoa jetzt nicht angeguckt, aber wenn du z.b. eine klasse Player hast die videos abspielen kann, ist das ja kein problem. dann kannst du ja einfach in deine applikation ein objekt dieser klasse einfuegen und noch funktionen play() und stop() und position() und und und implementieren.

  10. #10
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von celindir
    Deine App lädt eine Videoplayer-Auswahl, der auf dem System vorhandenen Player und öffnet den ausgewählten??
    Lädt den ausgewählten.


    Kann man es denn auch hinbekommen, dass der Player innerhalb der eigenen Applikation geladen wird
    Passiert bereits. Darum gings ja eigentlich.
    Einen externen Player starten ist ein Einzeiler

    Code:
    (void*) new KRun(url);

    und mit dieser kommuniziert (z.b. die aktuelle Position im Film zurückgibt)??
    Wenn du dir das Ende der loadPlayer Methode ansiehts, steht da
    Code:
            Player* player = static_cast<Player*>(object);
    
            m_player = player;
    m_player ist auch vom Typ KMediaPlayer::Player
    http://developer.kde.org/documentati...r__Player.html

    Also hat man zB die Methode
    Code:
    virtual unsigned long  position (void) const
    zur Verfügung.

    Sieht ziemlich nach Position im Mediatrack aus

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  11. #11
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Asche auf mein Haupt,

    ich habe Dein Programm zwar gestartet, aber nicht geblickt, was da wirklich im Quellcode passiert ist. Danke für die Nachsicht!!

    Ich würde das Ganze gerne verwenden, verstehe aber das ein oder andere noch nicht ganz.

    Ich kann also mit
    Code:
    KPlayerEmbed *kplayerembed = new KPlayerEmbed();
    einen neuen Player erzeugen und den in meiner Anwendung anzeigen lassen
    Code:
      a.setMainWidget(kplayerembed);
      kplayerembed->show();
    Dann stehen mir auch die Methoden aus KMediaPlayer::Player zur Verfügung und ich könnte mit
    Code:
    unsigned long my_position = kplayerembed->position()
    die aktuelle Abspielposition bekommen.

    Aber wie übergebe ich die Datei, die abgespielt werden soll??
    Celindir
    May the source be with you...

    www.celindir.de

  12. #12
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von celindir
    Ich würde das Ganze gerne verwenden, verstehe aber das ein oder andere noch nicht ganz.
    Kein Problem, ist ja auch nicht so einfach.

    KPlayerEmbed ist die Widget Klasse meiner Beispiel Applikation.
    Die hat nix mit dem Player zu tun.

    Die ganze Player Geschichte ist in loadPlayer().
    Du machst das einfach so ähnlich in deinem Widget, nur ohne Auswahl, etc.


    Aber wie übergebe ich die Datei, die abgespielt werden soll??
    Da musste ich vorhin auch nachschaun
    Einfach der Ableitungshierachie von KMediaPlayer::Player folgen.

    Kleiner Hinweis: bei den slots suchen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  13. #13
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Leider bekomme ich immer einen Fehler beim compilieren:

    Code:
    undefined reference to `KTrader::self()'
    dabei habe ich bei dem KTrader Aufruf gar nichts verändert.
    Code:
    	// Query for media players
    	KTrader::OfferList offers = KTrader::self()->query("KMediaPlayer/Player");

    Das Beispiel von anda_soka läuft ohne zu murren.

    Die includes sind auch drin
    Code:
    // Qt includes
    #include <qinputdialog.h>
    #include <qlayout.h>
    
    // KDE includes
    #include <kmessagebox.h>
    #include <klibloader.h>
    #include <ktrader.h>
    
    // KMediaPlayer includes
    #include <kmediaplayer/player.h>
    #include <kmediaplayer/view.h>
    
    using KMediaPlayer::Player;
    using KMediaPlayer::View;
    Sorry, wenn ich so hartnäckig bin, aber ich finde die Idee genial und es ist genau das, was in meinem ersten Projekt noch fehlt. Danke!
    Celindir
    May the source be with you...

    www.celindir.de

  14. #14
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    hast du auch gegen die richtigen libs gelinkt?

  15. #15
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von tuxipuxi
    hast du auch gegen die richtigen libs gelinkt?
    Ja, wäre auch meine Frage gewesen.
    Sieht nach Fehlen von -lkio aus

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •