DirectShow: 720x576 -> 1024x576
-
Hallo!
Ich habe einen Camcorder an eine Intensity Pro Capture-Karte ( http://www.blackmagicdesign.com/at/products/intensity ) angeschlossen. Der Camcorder hat 576p und 1080i output. Der native Formfaktor ist 16:9, der 576p modus jedoch ist 5:4 (720x576).
Ich möchte nun die 720x576 (5:4) in 1024x576 (16:9) wandeln. Im Blackmagic Control Panel wähle ich "PAL Progressive", damit wird der 576p modus des Camcorders aufgenomemn. Aber skalieren kann man nirgends.
Wähle ich zB. in Skype oder sonst wo "Blackmagic WDM Capture", so sehe ich das verzerrte 5:4 Bild.
Und der 1080i Modus ist einfach zu langsam, außerdem müsste die Anwendung deinterlacen, was Skype glaube ich nicht kann.Habe es schon mit einer "Virtual Camera" software versucht (SplitCam), die skaliert nach Wunsch und im Skype wähle ich dann "Broadcast SC Filter" und sehe das korrekte 16:9 Bild.
Problem dabei: Es ist zu langsam! Bei Bewegungen geht es schnell unter 10fps.Welche Möglichkeiten gibt es noch? Wie schwierig ist es, eine Anwendung wie SplitCam (ohne Treiber) zu schreiben? Also ein DirectShow-Filter nehme ich an, der "Blackmagic WDM Capture" aufnimmt, skaliert und ausgibt. Den Filter wähle ich dann im Skype etc.
Oder kennt ihr eine Software, die skalieren kann und performant ist?
-
Was genau willst du mit dem Videobild deiner Kamera machen? Einfach nur auf deinem Monitor anzeigen? Aufnehmen? Streamen? Modifizieren wie es SplitCam z.B. auch kann und dann das modifizierte Bild streamen? ...?
Einfach nur ne Live-Ausgabe eines Livebilds mit korrektem Aspect-Ratio ist mit Direct-Show relativ easy. Inklusive dem ganzen Boilerplate-Code für Fenster erzeugen etc. sind das etliche zig bis huntert Zeilen C++ (bzw. auch C wenns sein muss).
Alles andere ist deutlich mehr Aufwand.
-
Es soll im Endeffekt eine Art virtual camera sein, die ich dann in Skype oder in diversen Flash-Broadcastern zB. als "my camera" wähle, und die dann eben das 16:9 Bild ausgibt.
Also die Applikation holt sich den Stream von "Blackmagic WDM Capture", korrigiert ihn und stellt ihn als "my camera" zur Verfügung.
So stelle ich mir das vor, weiß nicht ob es einfacher geht.
-
Hmmm.
Dazu müsstest du nen Capture-Filter bauen, der als Proxy für einen anderen Capture Filter arbeitet. Dieser Proxy müsste alle Requests an den "echten" Capture Filter weiterleiten, und dabei nur eine einzige klitzekleine Korrektur vornehmen: den Aspect Ratio vom Bild ändern. Alles andere könnte 1:1 durchgehen.
Sicher mehr Aufwand als ein Programm um das Live-Bild anzuzeigen, aber vermutlich auch nichs wo man Monate lang dran sitzt.
-
Okay, kannst du mir dazu Anlaufstellen geben? Bitte nicht das MSDN
-
Also keine Interface-Referenzen meinte ich
Ich brauch erst mal die Basics...Push oder pull model?
Wie mache ich den Filter als Capture Device sichtbar?
Was passiert, wenn darauf zugegriffen wird, während die Anwendung nicht läuft?
-
Hey, ich habe hier einen Resize-Filter gefunden:
http://www.e2esoft.cn/dshow/resize_filter.asp
Mit einem graph editor habe ich diesen Stream zusammengebaut:
Blackmagic WDM Capture -> AVI Decompressor -> Video Resizer -> Video Renderer
Funktioniert super und schnell.
Der AVI Decompressor hat sich automatisch hinzugefügt.Nur den Video Resizer kann ich nicht als Quelle wählen (im Skype etc.).
Kann ich vielleicht irgendwie diesen Resize Filter nutzen, und nur noch als Quelle einstellen oder so?Danke!
-
Kann ich vielleicht irgendwie diesen Resize Filter nutzen, und nur noch als Quelle einstellen oder so?
Ich kann dir hier kein definitives "nein" geben, ich kann nur sagen: ich glaube nicht/ich wüsste nicht wie.
Okay, kannst du mir dazu Anlaufstellen geben? Bitte nicht das MSDN
Im Windows SDK sind DirectShow Samples dabei, darunter auch Source-Filter (ein Capture Filter ist ja ein Source-Filter).
Was genau man anstellen müsste um einen "Proxy-Source" Filter zu bauen müsste ich mir selbst angucken. So viel hab' ich mit DirectShow auch noch nicht gemacht - vor allem hab' ich noch nie einen Source-Filter programmiert, bisher immer nur einfache Transform-Filter.
Resizen müsste man auf jeden Fall nichts, man kann den Display-Aspect Ratio unabhängig von der Auflösung einstellen. D.h. vermutlich ginge es nur darum den Format-Handshake zum
-
Bin für jeden weiteren Hinweis dankbar.