Frage von juriman:Hallo,
ist es möglich von meiner Samsung VP-D381 das Livebild mit 50 Halbbilder/sec per FireWire auf den PC zu bekommen?
Ich möchte dann die Daten mit DirectShow weiterverarbeiten.
Bis jetzt kann ich nur aus dem Buffer ein Vollbild (die letzten zwei Frames zusammen gesetzt) raushohlen, das alle 40 ms erstellt wird (25 Frames/sec).
Ist es generel bei solchen Kameras nicht möglich? (abgesehen von den prof. Camcorder, die progressiv aufnehmen)
Gibt es eine spezielle Funktion in DirectX / DirectShow?
Antwort von tommyb:
Wenn Du bereits DirectShow nutzt, dann muss das Bild nur deinterlaced werden zu 50p (Bobbing).
Versuche es mal mit ffdshow tryouts. Dort gibt es einen Deinterlace-Filter der eben diese 50 Bilder aus einem Interlaced-Stream erstellt.
Antwort von juriman:
Ja genau. Aber so einen Deinterlacing Algorithmus würde ich gerne selber schreiben.
Da ich zum Deinterlacen auf jeden Fall die Halbbilder getrennt brauche, wäre jetzt halt die Frage:
Fasst schon mein DV-Camcorder die Halbbilder zusammen und schickt immer nur alle 40 ms das Vollbild per FireWire, welches man dann per Hand mit DirectShow aufteilen muss?
Wenn nein und ich kann meinem Camcorder alle 20 ms ein Halbbild entlocken, wäre die nächste Frage:
Wie kann ich das einzelne Halbbild mit DirectX auslesen?
Antwort von MK:
Da ich zum Deinterlacen auf jeden Fall die Halbbilder getrennt brauche,
Die Halbbilder getrennt ist gleich Deinterlaced (in dem Fall nennt sich das BOB). Was willst Du aus einzelnen Halbbildern noch weiter deinterlacen? Das geht nicht.
Und falls Du aus den 50 Halbbildern wieder 25 Vollbilder ohne Interlacing machen möchtest... wieso das Rad neu erfinden?
Antwort von tommyb:
Fasst schon mein DV-Camcorder die Halbbilder zusammen und schickt immer nur alle 40 ms das Vollbild per FireWire, welches man dann per Hand mit DirectShow aufteilen muss?
Ja, musst Du. Das Bild was dein Camcorder liefert ist immer 25i, also 25 Interlaced-Bilder.
Die einzige Möglichkeit hier was anderes zu kriegen wäre ein Camcorder der progressiv aufzeichnet, z.B. 50p. Das können Geräte wie die JVC GY-HD1** Reihe (576p50) oder die JVC GY-HD2** Reihe (576p50 und 720p50) - das ist jedoch alles "HDV" in divers abgewandelter Form.
DV sieht keine Möglichkeit Halbbilder als Vollbilder zu verschicken. DV schickt immer 25i (selbst wenns angeblich progressives 25p Material ist) und das lässt sich nicht beheben außer durch eine Aufspaltung in Directshow.
ffdshow ist ja quelloffen, kannst Dir also gerne dort das Bobbing-Script ausleihen. Oder gleich ffdshow nutzen. Anders geht es nicht.
Antwort von juriman:
@ MK: Ich glaube, du müsstest dir noch mal die Definitionen der Fachbegriffe durchlesen.
@ tommyb: Super Antwort. Vielen Dank!
Hättest du noch Quellen, die deine Aussage belegen?
Antwort von MK:
@ MK: Ich glaube, du müsstest dir noch mal die Definitionen der Fachbegriffe durchlesen.
Eher Du wenn Du nichtmal den Unterschied zwischen Fields und Frames kennst.
Teile das Vollbild (Frame) in ungerade und gerade Zeilen (Fields) und Du hast Deine Halbbilder.
Aber ein einzelnes Halbbild ist immer ohne Interlacing.
Antwort von juriman:
@ MK: Deine Beiträge helfen mir nicht wirklich weiter. Wir reden wohl an einanander vorbei.
@ all: Wo wird es spezifiziert, was tommyb behauptet?
Bei IEC 61834 (
http://tools.ietf.org/html/draft-ietf-avt-rfc3189bis-03) steht leider nichts darüber.
Antwort von tommyb:
Ein DV-Stream ist rein digital, eine Übertragung des verschachtelten Interlaced-Streams erfolgt also Framesweise, beide Fields gleichzeitig.
Nur ein analoger Stream würde jedes Halbbild hintereinander übertragen - zumindest würde ein Röhren-TV das so darstellen.
Das was da also aus dem Firewire-Kabel raus kommt sind genau 25 interlaced Frames. Nichts anderes. Man kann den Camcorder auch nicht zwingen statt der 25 720x576 Pixel großen Frames pro Sekunde 50 Stück à 720x288 zu übertragen. Das geht nicht.