Forum: PC-Programmierung plattformunabhängige Bibliothek zur Medien-Wiedergabe


von Julian W. (julian-w) Benutzerseite


Lesenswert?

Hallo,
gleich vorweg, ich habe etwas "komplizierte" Ansprüche, aber da ihr mir 
bisher immer gut helfen konntet, will ich es nun zuerst mal bei hier 
versuchen ;)
Ich bastle momentan an einem MediaCenter auf QT-Basis. Layout, 
Medienbibliothek, ... ist soweit schon im "Grundstadium" schon fertig. 
Nun fehlt noch das wichtiges: Die Wiedergabe.

Dafür bräuchte ich eine plattformunabhängige Bibliothek, die zumindest 
auf Linux und Windows läuft. Am besten wäre es, wenn diese Bibliothek 
unter der LGPL stehen würde (ich also nicht meinen Code veröffentlichen 
muss).
Wiedergeben müsste sie Videos und Musik, und diese sollte sie auch 
streamen (http) können.
Videos sind meist im mkv/mpg Format und h264/mpeg codiert, Ton-Spur ist 
dts, AC3 oder halt einfach Stereo.
Musik liegt im mp3, ogg, wav, flac und als DTS/AC3 in einem 
mka-Container vor.
Des weiteren wäre es nicht schlecht, wenn ich für "Sound'n'Light" eine 
FFT der Tonausgabe machen könnte.

Also, wie ihr seht, bin ich ein nicht ganz einfacher Fall, mit all den 
Wünschen ;)
Das mit dem Streamen denke ich könnte ich auch einfach umgehen, indem 
ich das selbst in Software übernehme (Cachen etc.) und einfach den 
gecachten Stream aus dem RAM übergebe.
Die recht große Vielfalt an versch. Formaten und Containern macht das 
ganze natürlich recht kompliziert, von daher würde ich am liebsten die 
vorinstallierten Codecs nutzen und bei Bedarf zusätzliche Codecs 
nachinstallieren. Für FLAC gibt es ja eine freie Bibliothek, bei mpeg 
und h264 dürfte das aber wesentlich komplizierter werden...

Nur was für eine Bibliothek benutze ich dafür nun am besten? Wäre SDL 
dafür geeignet? Oder soll ich mal die in QT integrierte 
Phonon-Bibliothek probieren? Oder gibt es da direkt schon ein 
KO-Kriterium?
Oder wie sieht es mit ffmpeg oder libav aus?

Evtl. hat einer ja schon sowas änhliches gemacht und könnte mir da 
weiterhelfen :)

Viele Grüße
Julian

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Julian W. schrieb:
> Nur was für eine Bibliothek benutze ich dafür nun am besten?

Du könntest VLC-Lib benutzen oder ffmpeg das sollte zumindest schon mal 
unter Linux und Win (ggf. auch Mac da weiß ich es nicht) laufen, und 
bietet vermutlich mehr als du benötigen wirst ;)

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Die VLC-Lib hab ich mir schon angeschaut, die steht jedoch "leider" 
unter der GPL, womit ich mein komplettes Projekt auch unter die GPL 
stellen müsste, dies wollte ich aber eigentlich vermeiden...

Aber ich habe mir ffmpeg mal näher angeschaut und das sieht ganz 
brauchbar aus. Nur in wie weit sieht das mit der Architektur aus? Vor 
allem hat sich das Projekt ja momentan zersplittert, welche Konsequenzen 
hat das eigentlich für mich?

ffmpeg ist ja eine Sammlung von Codecs. Übernimmt ffmpeg auch die 
Anzeige/Ausgabe der Medien? Oder übergebe ich ffmpeg einfach den 
Rohstream und erhalte Bild und Ton und muss mich noch selbst um die 
Ausgabe derer kümmern?

Also quasi so:
Stream -> Cache -> ffmpeg -> Ausgabe (z.b SDL?)

Auf jeden Fall schon mal Danke für die Antwort!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du könntest Dir auch mal Audacity ansehen, das nutzt allerdings nicht 
Qt, sondern wxWidgets als GUI-Toolkit.

Audacity ist auf Windows, Linux und OS X portiert worden.

http://audacity.sourceforge.net/

Steht allerdings auch unter der GPL, ebenso wie amarok.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Nunja, ich hab jetzt schon vieles in QT programmiert, von daher würde 
ich nur ungern umsteigen ;)

Vorerst steht auch nur Windows und Linux zur Debatte (Linux nutze ich 
selbst, und Windows ist halt einfach am verbreitetsten).
Mac steht eher im Hintergrund, vor allem da ich keinen Mac habe, um 
Versionen zu kompilieren geschweige denn zu testen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, dann dürfte vom GPL-Problem abgesene amarok für Dich interessant 
sein, denn das nutzt Qt als GUI-Bibliothek. Win32-Ports davon soll es 
auch geben.

von Rolf Magnus (Gast)


Lesenswert?

Julian W. schrieb:
> Ich bastle momentan an einem MediaCenter auf QT-Basis. Layout,
> Medienbibliothek, ... ist soweit schon im "Grundstadium" schon fertig.
> Nun fehlt noch das wichtiges: Die Wiedergabe.
>
> Dafür bräuchte ich eine plattformunabhängige Bibliothek, die zumindest
> auf Linux und Windows läuft.

Hmm, wie wär's denn mit Qt? ;-)

http://doc.qt.nokia.com/latest/phonon-module.html

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Julian W. schrieb:
> die steht jedoch "leider"
> unter der GPL

Man kann VLC glaub ich auch als DLL anbinden, k.A. wie das dann 
rechtlich aussieht. Willst du den später das Programm überhaupt 
veröffentlichen? Für den internen Gebrauch ist es ja unschädlich.

Julian W. schrieb:
> der übergebe ich ffmpeg einfach den
> Rohstream und erhalte Bild und Ton und muss mich noch selbst um die
> Ausgabe derer kümmern

Das würde ich jetzt mal so vermuten, zumindest sollte das möglich sein. 
Da du aber ja eh vermutlich deine eigenen Steuer/Ausgabekomponenten 
haben wollen wirst, sollte das ja nicht unschädlich sein oder?

Es gibt einige Wrapper (z.B. FOBS4J, nutze ich unter Java mit Win/Linux) 
die ffmpeg nutzen, eventuell kann man sich da was abschauen.

Ganz einfach sowas zu bauen ist aber alles nicht... der ganze 
Video/Audiokram ist recht nervig was die Abhängigkeiten betrifft, etwas 
Erfahrung sollte also da sein.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Nunja, "kann" Phonon überhaupt das, was ich brauche?

Leider habe ich nicht sooo viel dazu gefunden, aber scheinbar nutzt 
Phonon die auf dem System installierten Codecs, was ich eher vermeiden 
möchte. ffmpeg bringt ja selbst die Codecs mit, am System muss also 
nichts verändert werden und es würde auch "überall" laufen, egal was der 
Benutzer für Codecs installiert hat.
Zudem, kann ich Phonon einfach mit einem Datenstrom füttern? Kann Phonon 
mkv/mka verarbeiten? Was passiert, wenn eine mkv-Datei 2 Audio-Streams 
hat? Mir erscheint da Phonon "zu simpel" gestrickt zu sein, da ich 
"später" schon eine etwas komplexeres Handling mit Medien-Dateien 
benötige...

Auch das Vorspulen bereitet mir jetzt schon Kopfzerbrechen, da ich die 
Daten ja meist streamen muss....

von Julian W. (julian-w) Benutzerseite


Lesenswert?

Läubi .. schrieb:
> Man kann VLC glaub ich auch als DLL anbinden, k.A. wie das dann
> rechtlich aussieht. Willst du den später das Programm überhaupt
> veröffentlichen? Für den internen Gebrauch ist es ja unschädlich.

Nunja, damit wäre mein Werk ja von einem GPL-Werk abgeleitet, und damit 
müsste es doch auch unter die GPL fallen...
Zuerst einmal würde ich es nur intern nutzen, aber da ich da wohl viel 
Arbeit investieren werde, würde ich es auch gerne irgendwann mal 
veröffentlichen, und ich weiß nicht, ob mir dann die GPL zusagen wird, 
von daher würde ich mich hier noch gerne alle Optionen offen halten.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Julian W. schrieb:
> müsste es doch auch unter die GPL fallen...

Wenn du es veröffentlichst/verkaufst/verschenkst/... ja

Julian W. schrieb:
> von daher würde ich mich hier noch gerne alle Optionen offen halten

Du kannst dir auch eine Abstraktionsschicht ausdenken und erst mal damit 
alles "probieren", eventuell gefällt es dir so gut und geht derart 
leicht von der Hand, dass die Vorteile die "Nachteile" der GPL 
überwiegen.

Aber ansonsten halte ich es wie du und versuche GPL in eigenen Projekten 
zu vermeiden.

von Julian W. (julian-w) Benutzerseite


Lesenswert?

So, ich habe mal etwas mit Phonon rumgespielt, besser gesagt mit der 
AudioPlayer-Demo und muss sagen, ich bin positiv überrascht. Alle 
geforderten Medien-Dateien werden abgespielt.

Nur leider habe ich keine (funktionierende) VideoPlayer-Demo gefunden. 
Weiß einer, wo die sich befindet bzw. hat gerade eine parat?

Mich würde noch interessieren, wie Phonon die Medien wiedergibt, also ob 
es die Codecs des PCs nutzt oder eigene Codecs nutzt, sodass ich sicher 
sagen kann, das auf jedem PC diese Dateien wiedergegeben werden können?
Zudem würde mich interessieren, in wieweit ich die Tonausgabe 
analysieren kann, z.B. in Form einer FFT? Wäre sowas mit Phonon möglich?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.