Audio/Video-Wiedergabe und Streaming

Verschiedenes zu Qt
Antworten
julian-w
Beiträge: 13
Registriert: 10. Mai 2011 16:17
Kontaktdaten:

Audio/Video-Wiedergabe und Streaming

Beitrag von julian-w »

Hallo,
ich programmiere an einem MediaPlayer auf Basis von QT. Nun bräuchte ich eine Möglichkeit, Audio- und Video-Dateien zu streamen und abzuspielen.
Dabei könnte ich das Streaming selbst übernehmen, also Stream empfangen und puffern.

Nur wie geht es dann weiter, was mache ich mit dem "Rohdaten-Stream"?
Am liebsten würde ich ffmpeg nutzen, da dies alle Formate unterstützt (h.264, mpeg, mp3, flac, DTS, AC3, Container: mkv, mka), die ich benötige und unter der LGPL steht.
Könnte ich ffmpeg (das sich ja auch nochmal zersplittert hat) einfach den Rohdaten-Stream übergeben?
Und wie würde es dann weitergehen? Würde ffmpeg Sound-Dateien einfach wiedergeben? Oder würde es mir einfach nur einen Stream mit decodierten Audio- und Video-Daten geben, die ich dann noch selbst darstellen muss?
Wie stell ich dieses dar? z.b. mit SDL?

Wie ihr seht, habe ich auf diesem Gebiet leider noch nicht sonderlich viel Erfahrung. Wäre nett, wenn mir einer einen groben Überblick verschaffen könnte. Quellcode bräuchte ich nicht, eher eine Art Plan, wie ich was in welcher Reihenfolge machen muss, als: Streamen -> ffmpeg -> ??? -> Ausgabe

Wäre echt nett, wenn ihr mir da etwas weiterhelfen könntet :D

Viele Grüße
Julian
IOBlogger.de - digitales Leben
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

Hallo Julian,
also wenn du das mit Puffer und Streamen hast brauchst du im Grunde genommen gar nicht viel mehr. Videodateien sind im Grunde genommen auch nur Streams, wer will sich schon eine DVD erstmal in den Speicher laden lassen? Heißt, dass du dir einfach das File entsprechend nimmst und es streamst. Die Empfangsseite packt die Daten in den Puffer und spielt das ganze entsprechend ab. Natürlich sollte eine Funktion rein, dass das Programm nicht denkt, dass das File zu Ende ist, wenn der Puffer mal aus Versehen leer werden sollte.

Mfg androphinx
julian-w
Beiträge: 13
Registriert: 10. Mai 2011 16:17
Kontaktdaten:

Beitrag von julian-w »

Ich habe jetzt mal etwas Phonon getestet und bin eigentlich sehr zufrieden damit :)

Nur die unterstützen Medien-Typen machen mir etwas Probleme.
Der VLC unterstützt alle Medien-Typen, die ich brauche. Wie kann ich Phonon dazu bringen, den VLC als Backend zu nutzen?
Weil unter Windows funktioniert ohne zusätzliche Codecs u.A. flac nicht :/
IOBlogger.de - digitales Leben
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

Mit Phonon hab ich mich jetzt noch nicht so beschäftigt. Eine andere Idee wäre es den MPlayer zur Wiedergabe zu verwenden, wie das geht findest du hier:
http://qtforum.de/forum/viewtopic.php?t=12490

Ansonsten musst du mal schauen, ich glaube es gab bei Phonon unterschiedliche Module, je nachdem welches Backend verwendet werden sollte, aber wie gesagt, ist nicht mein Themengebiet ;)

Mfg androphinx
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Phonon ist recht easy fuer dich zu benutzen, weil die QT ja die Anbindung zu hat. Leider sind Audio/Video backends eine zutiefst plattformabhaengige Sache. Ob Du deine Codecs alle unter linux und windows gleichzeitig zum laufen bekommst, steht in den sternen.

Ich hab z.b. einige mkv dateien, die sind sehr exotisch codiert, unter windows mit bestimmten decodern lassen die sich fehlerfrei abspielen, unter linux bisher keine chance ...

falls du tiefer in die materie einsteigen willst, könntest du die backends selber ansprechen, dafuer gibts im Netz auch dokus ... iss um welten komplexer wie phonon zu benutzen, aber du waerst freier was die auswahl des backends angeht.

Übrigens unter linux:
phonon -> gstreamer -> ffmpeg sollte gehen ...
gstreamer kann die ffmpeg libs zum decodieren nehmen, und phonon wiederum gstreamer als backend.
keine ahnung wie das unter windows geht ^^

Ciao ...
julian-w
Beiträge: 13
Registriert: 10. Mai 2011 16:17
Kontaktdaten:

Beitrag von julian-w »

Nunja, laut wiki wird auch der VLC als Backend unterstützt, unter Windows und Linux:
http://en.wikipedia.org/wiki/Phonon_%28KDE%29

Da der VLC alles abspielt, was ich brauche, wäre es ja am besten, den als Backend zu nutzen. Doch wie gebe ich unter Windows/Linux das Backend vor, welches Phonon nutzen soll?
IOBlogger.de - digitales Leben
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Unter Linux mit KDE ist Phonon ne systemschnittstelle. Einstellen tust das Backend da "enfach" in Systemsteuerung quasi

http://wiki.ubuntuusers.de/phonon

für windows:

phonon_vlc.dll - phnon VLC backend.

also bau dir mal ne version von deinem Prog
unter den plugins muesstest du dann doch das phonon_ds.dll plugin haben. Das mal woanders "hinsichern" und da das phonon_vlc.dll dafuer reinspielen, und beten das deine exe und dieses plugin mit dem selben compiler gebaut sind. Wo ne fertige dll herbekommst ... keine Ahnung ^^

Wenn nicht, die sourcen vom vlc-phonon-Plugin besorgen und selber bauen:
keine Ahnung wo man die sourcen bekommt, winkde.org ist vielleicht ne Anlaufstelle ....
oder
https://gitorious.org/phonon/phonon-vlc

Ciao ...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ich weiß leider nicht mehr die genaue Quelle (ganz dumpf schwirrt irgend etwas kde-seitiges herum (wahrscheinlich ein Blogpost über die Entwicklung von phonon-vlc...)):
vlc hat ein Problem mit parallel abgespielten Sounds im selben Prozess - geht einfach aktuell nicht! phonon mit vlc-Backend geht deshalb auch nicht.
Entweder hoffen, dass es in naher Zukunft gefixt wird, oder auf eine andere Lösung ausweichen (z.B. http://cgit.freedesktop.org/gstreamer/qt-gstreamer).

// edit:
Ja, Erinnerung hat mich nicht getäuscht :P
http://apachelog.wordpress.com/2011/04/ ... vlc-0-4-0/
In den Kommentaren, Antwort auf Frage von "JR" betreffend "preferred backend", wobei ich damals die Antwort von Rémi Denis-Courmont noch nicht gesehen hatte, und mir das auch nicht so viel sagt, da ich mit den Interna von VLC nicht vertraut bin.
Antworten