Seite 1 von 1

Eigener Media Player (C++)

Verfasst: Mo Aug 03, 2009 9:20 pm
von G_loW
Hi Leute,

Vor ungefär einer woche habe ich in einer Fachfeitschrift einen Artikel über die programmirung eines eigenen "media players" gelsesen.
Leider in BASIC.
Da ich keine Lust habe BASIC zu lehrnen frage ich einfach mal nach: Gibt es sowas auch für C (vorzugsweise C++)?
Indirekt frage ich dabei auch nach einen tuturional wie man sowas macht.

Danke im vorraus G_loW :mrgreen:

Re: Eigener Media Player (C++)

Verfasst: Mo Aug 03, 2009 10:25 pm
von Xin
Die meisten Basics sind in C/C++ geschrieben und fassen in einem Basic-Befehle eine Reihe C/C++ Befehle zusammen.

Unter Windows kannst Du Dich z.B. per .COM-Schnittstelle mit DirectX verbinden und einen Player schreiben. Der Prorgrammier-Aufwand liegt bei etwa 2 Bildschirmseiten bis Du z.B. ein Video abspielen kannst.
Ich habe das vor ein paar Jahren mal als kleines Experiment programmiert, aber die Quellcodes glaube ich nicht mehr.

Ich habe mir damals ein Buch von Addison Wesley gekauft ".COM-Programmierung" und ansonsten kannst Du mal im Plattform SDK schauen, da sollten ausreichend Beispiele sein.
Unter MacOS wäre Quicktime Dein Partner und unter Linux gibt es verschiedene Rendering Engines, wie Xine.

Ein Tutorial, das alle abdeckt gibt es soweit ich weiß nicht, aber ich kann mir gut vorstellen, das wxWidgets, Qt oder SDL entsprechendes im Angebot haben.

Re: Eigener Media Player (C++)

Verfasst: Di Aug 04, 2009 2:20 am
von Jside
Nunja ein Media Player ist relativ einfach(sofern du die Dateistructur der Videos/Audio dateien kennst), zuerst programmierst du ein paar Funktion zum öffnen und lesen der Filmdateien, die eine native Bitmap aus dem zurzeitigen Frame generienen, und legst diese als Textur auf eine SDL Plane, danach holst du dir den nächsten Frame, und dort machst du daselbe.(Dabei musst du berechnen, wielange die funktionen brauchen, oder eine Funktion als "Watchdog" in einem anderen Thread laufen lassen, die die Zeit misst, und berechnet, wie groß das Timeout sein muss, damit es nicht mehr als 24 Frames(oder was auch immer für eine Wiedergaberate das Video hat) sind.).
Bei Audio dasselbe, die Audiodatei/spur einlesen, und die Tonlage jedes "Frames"(oder wie auch immer das bei Audio heißt) als Array generieren, die du in einer while(); Schleife der Soundkarte übergibst(Dabei wieder die Wiedergabe frequenz als Timeout miteinrachnen).(probier mal unter Linux echo 716217 > /dev/dsp)

Oder du benutzt halt M$ Zeug oder fertige Libs(z.b. ffmpeg in kombination mit einer Renderengine), da kannste selbst einen DVD Player in wenigen Minuten programmieren ;-)