Forum: PC-Programmierung Video generieren (C++,C#)


von Joeee (Gast)


Lesenswert?

Hallo zusammen,

ich möchte gerne ein Projekt beginnen, bei dem ich über ein Wlan-Modul 
einen Datenstrom bekomme, diesen Datenstrom in ein Bild umrechne und 
diesen dann quais als ein Bild ausgeben kann. Dies sollte natürlich 
mehrmals in der Sekunde erfolgen und ein "Video" werden.
Das programmieren der Berechnung direkt in C++, bzw. die Ausgabe als 
"gezeichnete" Punkte geht zwar, aber ist natürlich viel, viel, viel zu 
langsam.

Also der Aufbau wäre einfach so:
Datenstrom --> [Koeffizenten in Speicher] --> [Rekonstruktion] --> 
Ausgabe

ich würde also eine schnelle Möglichkeit brauchen einen Algo auf einen 
Speicherbereich loszulassen (sind nur Mult+Add) und diesen 
Speicherbereich dann nach einer Berechnung als Video auszugeben.
Ich hätte da ev. an DirectX gedacht, nur fehlt mit leider dazu das 
nötige Wissen. Soweit ich das mitbekommen habe, kann DirectX direkt auf 
die DSP Blöcke der Hardware zugreifen und somit die Berechnungen schnell 
erledigen?

Drum wollte ich fragen ob DirectX das richtige für mich wäre und wenn ja 
ob es wo ein gutes Tutorial gibt, oder auch eine gute Buchempfehlung?
Andernfalls wie ich das Problem sonst realisiere?

Danke im Vorraus!

von STK500-Besitzer (Gast)


Lesenswert?

Guck dir mal den VLC-Player an. Der ist Opensource.
Als Anfänger einen Videoplayer zu programmieren, ist ein nettes 
Einstiegsprojekt.

von Gommel (Gast)


Lesenswert?

die leute werden immer verückter

von Joeee (Gast)


Lesenswert?

Ich sagte nicht das ich Anfänger bin. Bis jetzt kan ich noch nie mit den 
Themen in Berührung.

Ev. hab ich mich auch falsch ausgedrückt.
Ich dachte das es vereinfacht gesagt eine Schnitstelle z.B. in 
DirectVideo gibt, in der ich einfach einen Speicherbereich angebe in dem 
sich das Bild befindet. Dies wird dann ausgegeben.
In einem zweiten Speicherbereich rekonstruiere ich in der Zwischenzeit 
das 2te Bild, schalten den Speicherbereich "um" und berechne im ersten 
das nächste Bild.

Wiegesagt eine wirklich "billige" Ausgabe mit GDI oder direkt als 
BMP-Sequenz funktioniert ja. Es geht nur um eine schnelle Möglichkeit 
nacheinander Bilder zu "zeichnen" und ev. auch die DSP-lastigen 
Berechnungen zu beschleunigen.


@ Gommel
Jepps, am schlimmsten sind die Verückten mit sinnlosen Kommentaren. Mir 
wär leid um meine Zeit.

von Rüdiger K. (sleipnir)


Lesenswert?

Wenn Du die Qt-Bibliothek benutzen kannst dann schau Dir das 
QMovie-Objekt an. Damit kannst Du den Datenstrom über ein QImage schnell 
einlesen, in ein solches Objekt ablegen und dann am Ende das Objekt als 
Video schreiben.

Wenn es nicht so zeitkritisch ist und schnell gehen soll:
 * Einzelbilder in einem einfachen Format schreiben
 * Mit ImageMagick per Kommandozeile konvertieren:
convert *.jpg movie.mpg

Der MPlayer (bzw. der Mencoder) kann das auch.

von MPEG (Gast)


Lesenswert?

Rüdiger Knörig schrieb:
> Wenn Du die Qt-Bibliothek benutzen kannst dann schau Dir das
> QMovie-Objekt an. Damit kannst Du den Datenstrom über ein QImage schnell
> einlesen, in ein solches Objekt ablegen und dann am Ende das Objekt als
> Video schreiben.

Auf der Suche nach lizensfreien Formaten und Encoder bin ich auf diesen 
Beitrag gestossen, kann jedoch nichts zum Speichern eines Videoobjektes 
in der Qt Dokumentation finden: 
http://qt-project.org/doc/qt-4.8/qmovie.html

von Rolf Magnus (Gast)


Lesenswert?

Joeee schrieb:
> Hallo zusammen,
>
> ich möchte gerne ein Projekt beginnen, bei dem ich über ein Wlan-Modul
> einen Datenstrom bekomme, diesen Datenstrom in ein Bild umrechne und
> diesen dann quais als ein Bild ausgeben kann. Dies sollte natürlich
> mehrmals in der Sekunde erfolgen und ein "Video" werden.

Was für ein Datenstrom? Was für Umrechnungen?

> Das programmieren der Berechnung direkt in C++, bzw. die Ausgabe als
> "gezeichnete" Punkte geht zwar, aber ist natürlich viel, viel, viel zu
> langsam.

Das finde ich jetzt nicht so natürlich, allerdings ist auch unbekannt, 
wie komplex diese Berechnungen sind.

> Ich hätte da ev. an DirectX gedacht, nur fehlt mit leider dazu das
> nötige Wissen. Soweit ich das mitbekommen habe, kann DirectX direkt auf
> die DSP Blöcke der Hardware zugreifen und somit die Berechnungen schnell
> erledigen?

Definiere "die DSP Blöcke der Hardware". Du kannst z.B. wenn du eine 
Grafikkarte hast, deren Shader-Rechenkerne nutzen, sofern deine 
Berechnungen sehr gut parallelisierbar sind.

von Thomas (Gast)


Lesenswert?

Du antwortest auf einen über drei Jahre alten Beitrag.

Ist OpenCV nicht gut für sowas geeignet?

von Rolf Magnus (Gast)


Lesenswert?

Ach Mist. Jetzt bin ich auch auf so einen Leichenfledderer reingefallen, 
der tote Threads ausgräbt...

Thomas schrieb:
> Ist OpenCV nicht gut für sowas geeignet?

Vermutlich.

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.