DirectShow VideoCapture - WMV ist 320x240 statt ...

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DarkDragon »

Hallo,

Ich hab als Beispiel mal einfach einen Graph in GraphEdit zusammengestellt so wie er bei mir auch im Code ist:
Bild
Die Einstellungen sieht man da ja, also 720x576 Pixel sollte es aufzeichnen. Nun ist es leider so, dass die WMV Datei dann trotzdem nur eine Bildgröße von 320x240 hat (Sowie im Code als auch in GraphEdit). Es bleibt immer 320x240 auch wenn ich unter die Auflösung gehe. Kann mir jemand sagen was ich da falsch mache?

Leider kann ich da keinen Code rausrücken. GraphEdit findet man im Platform SDK unter
"...\Microsoft SDKs\Windows\v7.0\Bin\graphedt.exe"
Falls das mal jemand testen möchte.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DrShrek »

Und wo gibt es das WMV Beispiel?

Opps gerade gemerkt...Du scheinst von einer Web Cam aufzunehmen. Richtig?
Na die haben oft nur 320x240 nativ...zumindest die älteren.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DarkDragon »

Hallo,
Dr. Shrek hat geschrieben:Opps gerade gemerkt...Du scheinst von einer Web Cam aufzunehmen. Richtig?
Na die haben oft nur 320x240 nativ...zumindest die älteren.
Von einer TV Karte. Die kann 720x576 denn als AVI gespeichert geht es auch mit RGB24. Ich habe herausgefunden dass das wohl mit den Codecs zusammenhängt. Bei AVI gibts wenn ich die Microsoft Codecs auswähle auch nur 320x240 Pixel. Aber das ist echt blöd. Ich bekomm AVIs nicht so klein wie WMV Dateien.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von jojo1541 »

Wenn es mit AVI geht, dann konvertiere es danach doch einfach in eine WMV.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DarkDragon »

jojo1541 hat geschrieben:Wenn es mit AVI geht, dann konvertiere es danach doch einfach in eine WMV.
Das will ich nicht denn es ist zu Zeitaufwendig. Das ist so schon genug ausgelastet mit DirectShow :wink: .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von inc. »

a) sehe nach, ob 720 bei deiner Karte auch richtig ist. Denn 90% aller Karten nehmen richtig in 704!x576 auf. Denn 4:3 ist nicht 720x576 sondern 704x576 (oder eher 702x576). Zumindest, was das digitalisieren analoger Sources und SD DVDs angeht.

Lade dir FFDshow runter. Das nimmst du sodann als codec zum capturen und nutzt sodann aus FFdshow den mjpeg-codec mit einer ca. 90%igen Qualität. Der nimmt sodann in YUY2 auf und nicht in RGB! Denn RGB wird final eh von fast keinen Codec zum wandeln genutzt, die meisten mpeg4 und h.264 nutzen YV12 und damits YUV bleibt, nehme daher eben den mjpeg-codec.

:-)

PS: Was ist das genau für eine Capture-Karte?
Hier gibts die OOP Option für PureBasic.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DarkDragon »

Hallo,
inc. hat geschrieben:a) sehe nach, ob 720 bei deiner Karte auch richtig ist. Denn 90% aller Karten nehmen richtig in 704!x576 auf. Denn 4:3 ist nicht 720x576 sondern 704x576 (oder eher 702x576). Zumindest, was das digitalisieren analoger Sources und SD DVDs angeht.

Lade dir FFDshow runter. Das nimmst du sodann als codec zum capturen und nutzt sodann aus FFdshow den mjpeg-codec mit einer ca. 90%igen Qualität. Der nimmt sodann in YUY2 auf und nicht in RGB! Denn RGB wird final eh von fast keinen Codec zum wandeln genutzt, die meisten mpeg4 und h.264 nutzen YV12 und damits YUV bleibt, nehme daher eben den mjpeg-codec.

:-)

PS: Was ist das genau für eine Capture-Karte?
Graphedit schreibt mir ja die Ausgabegröße vor (Ich denke mal das zählt die Modis die möglich sind auf).

FFdshow funktioniert leider garnicht (Hab das K-Lite Codec Pack installiert, dort ist anscheinend ffdshow dabei). Ich weiß auch garnicht wie ich ffdshow da einstelle. Immerhin kann ich in DirectShow auch nur sagen: Nimm ffdshow als codec und nicht nimm ffdshow mit mjpeg und 90% qualität als Codec.

Das hier ist die Karte (Da steht Medion noch obendrauf):
http://www.pollin.de/shop/dt/MjI3OTkyOT ... karte.html

[EDIT]

Dann noch etwas: Mein Ton-Stream ist langsamer als das Video. Wie kann ich das lösen? Ich hab schon versucht mittels ControlStream im CaptureGraphBuilder die Videospur einfach zu pausieren bis es läuft, aber das funktioniert nicht, da die Bilddaten wohl nicht gepuffert werden.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von inc. »

Codec-Pack deinstallieren! Damit hast du leider nix unter Kontrolle, was sich sodann in Dshow prozessen reinschmuggelt oder Probleme bringt.

Du brauchst eigentlich NUR FFdshow, sowie den Haali-Mediasplitter um neben avi- & Co. auch mkv- und mp4-Formate/Container öffnen zu können.

Bei der TV Karten-Software müsstest du für die Aufnahme sodann auch FFDshow anwählen können. Sodann auf Filter-Properties o.ä. gehen und ... dann in FFdshow den entsprechenden Codec auswählen.
Als Audio sodann mp3-256kb/CBR oder noch bessser PCM-WAV wählen.

So habe ichs jahrelang gemacht. Mein Tipp: Gehe mal ins Gleitz.de Forum. Dort gibts ne Menge Beiträge zu FFdshow, einfach suchen.
Hier gibts die OOP Option für PureBasic.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DarkDragon »

Hallo,

Danke für die Antwort.

Naja, aber ich mach ja die TV Karten Software und eigentlich wollte ich keine externen Dialoge mehr aufrufen da das mit der Fernbedienung einfach unmöglich ist zu bedienen. Da FFDshow ja schon sehr spezielle Eigenschaften benötigt (Codecs stellt man ja normalerweise nicht in anderen Codecs ein) ist das eher schlecht für mich (Oder muss ich das nur einmal einstellen und dann niewieder?

Zu dem Verzögerungsproblem hab ich eine Lösung gefunden, nur leider wird das IAMBufferNegotiation nicht von der TV Karte unterstützt.
http://sid6581.wordpress.com/2006/10/09 ... irectshow/
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: DirectShow VideoCapture - WMV ist 320x240 statt ...

Beitrag von DarkDragon »

Hallo,

Ich wollte nur schnell mitteilen, dass ich das Problem mit den 500ms jetzt gelöst habe indem ich einen SampleGrabber Filter an die Ausgabe gehängt hab und dort die Samples 500ms verzögert ausgeben lasse. Das funktioniert erstaunlich gut.

Mit freundlichen Grüßen,
Daniel
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten