AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi videos aus spielen aufnehmen
Thema durchsuchen
Ansicht
Themen-Optionen

videos aus spielen aufnehmen

Ein Thema von Arnulf · begonnen am 10. Jul 2008 · letzter Beitrag vom 11. Jul 2008
Antwort Antwort
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

videos aus spielen aufnehmen

  Alt 10. Jul 2008, 12:53
Ich will von profis tips erhaschen, weil ich wirklich nicht weiter komme.

Ich hol mir bilder aus einem Spiel und audio vom mixer ( bass.dll ).

Die größten probleme die ich dabei habe sind die kompremierung von video und audio.
Die Bilder sind einzelbilder (bitmaps) die ich in nicht immer ganz konstanter Framerate bekomme.
Audio ist ein callback ( bass.dll ) der mir in einen stream schreibt.

Wie schaffe ich daraus ein video zu machen.
Probleme bisher:
1. Die bitmaps sind sehr groß ( 1.5 - 10 mb je nach auflösung, bei einer rate von 25 frames )
Das Bildmaterial sprengt also die möglichkeit das dirrekt auf die festplatte zu schreiben.
Im Speicher läst sich das gut handhaben - ich kann das locker mit 60-70 frames auf einem pannel wiedergeben.

2. Die Framerate ist nicht immer konstant - das liegt am spiel selbst weil beim laden von karten die framrate im spiel auch mal unter 25 fps fällt und damit bin ich out of sync mit dem mixer audio stream.

wichtig für mich ist erstmal punkt 1 - hier hab ich wirklich keine idee mehr.
aviwriter_2 läßt mich nicht kompremieren und sonst hab ich keine andere komponente um videos zu erstellen.

bitte um hilfe.

lg
Arnulf
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: videos aus spielen aufnehmen

  Alt 11. Jul 2008, 02:53
Mit dem DSPack kann man meines Wissens nach sämlichte installierten, und dafür lizensierten Codecs auf einem System auch zum encodieren verwenden. Du müsstest aber vermutlich nach einem guten Kompromiss zwischen Qualität und Geschwindigkeit suchen, sowohl was den Codec, als auch seine Einstellungen angeht. Das kann ganz schön friemelig werden
Generell ist es schon einmal nicht dumm, je nach Auflösung die Bilder zu vierteln (Höhe und Breite / 2), was den Datendurchsatz schon enorm senkt, und es bei Spielen meist eh nicht wirklich auf einzelne Pixel ankommt (schon die Kompression wird einige Details zersemmeln).

Was mich im Gegenzug nun interessiert: Nimmst du die Bilder aus einer fremden DirectX/OGL Anwendung? Wenn ja: Wie?

Gruß,
Medium

(PS: Ich habe mir "damals" als FRAPS noch Freeware war und unkomprimierte AVIs gespeichert hat, extra ein RAID dafür aufgebaut )
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#3

Re: videos aus spielen aufnehmen

  Alt 11. Jul 2008, 09:37
Ich nehme nur ogl auf - über einen hook auf wglswapbuffer
ich bin hier noch am rumbasteln wie ich am bessten konstant 25 frames bekomme
dazu lese ich mit glreadpixel und schreibe dirrekt in eine memory map.

zu synchronisation hab ich schon so einiges getestet.
eventgesteuert dh. ich sende eine bildanforderung an meinen hook und der liefert mir ebenfalls über ein zweites event die bestätigung, dass ich die map auslesen kann.
funktioniert gut und schnell, aber wenn die framerate des spiels unter 25 sinkt hab ich keine konstante framerate mehr.

also bin ich dazu über gegangen einen mutex zu verwenden und das spiel konstant in die map schreiben zu lassen.
ich kann dann jederzeit bilddaten auslesen.
sollte es einmal vorkommen, das ich das gleiche bild 2 oder 3 mal auslese macht es auch nichts.
wichtig war mir nur dass ich konstant audio und video bekomme und das synchron ist.
das scheint momentan am bessten zu funktionieren.

was dspack betrifft ist das ein thema das ich mir gestern kurz angeschaut habe.
ich verstehe zwar was mit den pins und den filtern gemeint ist, aber das ganze pack ist sehr umfangreich und nicht einfach mal so zu bedienen.
Ich hab versucht mich in PUSHSOURCE einzulesen (dspack) aber da hab ich zu schnell kopfschmerzen bekommen.
Leider gibt es in der richtung mit dem dspack nichts was halbwegs passen würde, zumindest keine sourcen.
Wie gesagt sich in das ganze Thema richtig einzulesen würde doch einiges an Zeit verschlingen.

Ich werden heute noch einmal ein bisschen mit aviwriter_2 herumprobieren ob das zu einer lösung kommt.
Aber da ich damit auch in einer Sackgasse gelandet bin habe ich versucht noch andere möglichkeiten zu finden, deshalb dieser thread.
http://www.delphipraxis.net/internal...t.php?t=138281

lg
Arnulf
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz