Also, ich habe eine Quelle
Color space: YUV420P8, Bit depth: 8, Auflösung: 720x480, Framerate: 29.97fps, Scanorder: bottom field first, YUV Luminance scale: limited, Matrix: 470bg, format: mpeg-2
Wenn ich die diese Quelle mit TDeint bob deinterlace
clip = core.tdm.TDeintMod(clip=clip, order=0, mode=1) # new fps: 59.94
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
habe ich einen clip mit
Color space: YUV420P8, Bit depth: 8, Auflösung: 720x480, Framerate: 59.94fps, Scanorder: progressive, YUV Luminance scale: limited, Matrix: 470bg
bei dem jedes Field (720x480) zu einem Frame (720x480) interpoliert wurde.
Aufgabenstellung:
Wie kann ich dies nun wieder rückgängig machen, also in "Auflösung: 720x480, Framerate: 29.97fps, Scanorder: bottom field first" umwandeln, und möglichst wieder meine original Fields zurückzubekommen? (Ich weiß, dass TDeint die Originalfields auch ändert, aber das vernachlässige ich bewusst und gehe davon aus, es würde dies nicht tun.)
Meine aktuelle Lösung:
# initial clip has 150 interlaced frames with 720x480 @ 30000/1001, scan type: bff
# converting interlaced to full-height progressive for filtering
clip = core.tdm.TDeintMod(clip=clip, order=0, mode=1) # new fps: 59.94
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
# converting full-height progressive to interlaced before deinterlacing
clip = core.std.SeparateFields(clip=clip, tff=True)
clip = core.std.DoubleWeave(clip=clip, tff=True) # resolution 720x480
clip = core.std.SelectEvery(clip=clip, cycle=4, offsets=[0, 1])
clip = core.std.SelectEvery(clip=clip, cycle=2, offsets=[1])
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_BOTTOM) # bff
clip = core.std.AssumeFPS(clip, fpsnum=30000, fpsden=1001)
#clip = core.std.Interleave([org.text.Text("ORG"), clip.text.Text("Filtered")])
Display More
bzw.
# initial clip has 150 interlaced frames with 720x480 @ 30000/1001, scan type: tff
# converting interlaced to full-height progressive for filtering
clip = core.tdm.TDeintMod(clip=clip, order=1, mode=1) # new fps: 59.94
# Making sure content is preceived as frame based
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.FIELD_PROGRESSIVE) # progressive
# converting full-height progressive to interlaced before deinterlacing
clip = core.std.SeparateFields(clip=clip, tff=True)
clip = core.std.DoubleWeave(clip=clip, tff=True) # resolution 720x480
clip = core.std.SelectEvery(clip=clip, cycle=4, offsets=[0, 1])
clip = core.std.SelectEvery(clip=clip, cycle=2, offsets=[1])
clip = core.std.SetFrameProps(clip=clip, _FieldBased=vs.TOP_BOTTOM) # tff
clip = core.std.AssumeFPS(clip, fpsnum=30000, fpsden=1001)
#clip = core.std.Interleave([org.text.Text("ORG"), clip.text.Text("Filtered")])
Display More
(das einzige, was sich ändert, ist die order bei TDeint und der _FieldBased-Wert bei letzten SetFrameProps)
scheint zu klappen.
=> Frage: Gibt es eine einfachere Methode Bob Deinterlacing 'rückgängig' zu machen? (in Vapoursynth, nicht Avisynth)
Cu Selur