Re: Filter (or anyxthing else) to stabilize shaky videos?
Al Bogner <[email protected]> Tue, 23 Feb 2010 15:50:32 +0100
| Newsgroups | gmane.comp.video.transcode.user |
|---|---|
| Message-ID | <[email protected]> |
Am Dienstag, 23. Februar 2010 14:06:50 schrieb Georg Martius:
> On Tuesday 23 February 2010 11:21:59 Al Bogner wrote:
Hi Georg,
> > first I have to say, that I am very impressed of Georg's vid.stab-filter,
> > but I am unsure what the best workflow is. I mean, would it be better to
> > use a video-editing program, that includes a stabilizer, e.g. there is an
> > editing program, that uses gstreamer, called PiTiVi, but I don't know if
> > PiTiVi can stabilize videos or to prepare the avi-files with transcode
> > and do some effects, like transitions later.
>
> I would stabilize the clips first and then cut them together. Cinelerra
> worked great for me.
I will give Cinelerra a try. Can you recommend a tutorial? I want best
quality, but I don't need much for editing, a simple transition, a title, fade
in fade out, 2x2 tracks for audio to mix the original stereo audio with a
mp3-file.
> Take care that you wast as little information in the intermediate format.
That's exactly why I am asking.
> You can even try one of the loss-less formats of ffmpeg see
> transcode -i /dev/null -y ffmpeg -F list
> but make sure your editing program can read them.
Does cinelerra support it? If I can't get familiar with cinellera, I will give
kdenlive a try.
> > Since we are here on the transcode-ML I ask you kindly to help me for the
> > 2nd solution and how to prepare with the best possible quality.
> >
> > http://home.arcor.de/bogner/test_0001.avi contains a short avi-file in
> > PAL (21.3MB)
> >
> > What could I do to improve it?
>
> I will only speak about the stabilization part:
> First of all you prob. need to deinterlace the clips.
Does the stabilizer work only with deinterlaced material? Since I would create
a DVD and a x264,file I thought I will deinterlace, when creating the x264-
file.
> I have no idea what
> the stabilize plugin is doing with the interlaced clip. (would be
> interesting to know!).
Try it out ;-)
If anyone has troubles to download the file, please let me know. The transfer
is limited to 1 GB. I fear that bots consume a lot bandwidth so I didn't put
it on my own webspace.
But maybe this was the problem, why I got no result, I mean a file.
transcode -J stabilize -i test_0001.avi -y null,null -o dummy
transcode -J transform -i test_0001.avi -o test_0001.stable.avi
cat test_0001.avi.trf
# maxshift = 48
# stepsize = 2
# allowmax = 1
# algo = 1
# fieldnum = 20
# fieldsize = 38
# result = test_0001.avi.trf
# Transforms
#C FrameNr x y alpha zoom extra
0 0.0000 0.0000 0.00000 0.0000 0
1 -11.3488 11.7360 -0.00145 0.0000 0
2 -15.3261 6.6415 -0.00292 0.0000 0
3 0.0000 -2.0000 -0.00000 0.0000 0
4 7.9639 1.6321 0.00242 0.0000 0
5 16.0000 4.0000 -0.00000 0.0000 0
6 13.2400 1.5438 0.00721 0.0000 0
7 16.2102 -15.9125 -0.00643 0.0000 0
> > Which options for the stabilization should be used?
>
> Just try the default options (meaning no additional arguments). If this
> takes too long for you
Time is not a problem.
time transcode -J stabilize -i test_0001.avi -y null,null -o dummy
transcode v1.1.5 (C) 2001-2003 Thomas Oestreich, 2003-2009 Transcode Team
libdvdread: Using libdvdcss version 1.2.10 for DVD access
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
libdvdread: Using libdvdcss version 1.2.10 for DVD access
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
[transcode] V: auto-probing | test_0001.avi (OK)
[transcode] V: import format | DigitalVideo in RIFF data, AVI (module=dv)
[transcode] A: auto-probing | test_0001.avi (OK)
[transcode] A: import format | PCM in RIFF data, AVI (module=raw)
[transcode] V: AV demux/sync | (1) sync AV at initial MPEG sequence
[transcode] V: import frame | 720x576 1.25:1 encoded @ UNKNOWN
[transcode] V: bits/pixel | 0.174
[transcode] V: decoding fps,frc | 25.000,3
[transcode] V: video format | YUV420 (4:2:0) aka I420
[transcode] A: import format | 0x1 PCM [48000,16,2] 1536 kbps
[transcode] A: export | disabled
[transcode] V: encoding fps,frc | 25.000,3
[transcode] A: bytes per frame | 7680 (7680.000000)
[transcode] A: adjustment | 0@1000
[transcode] V: IA32/AMD64 accel | sse3 sse2 sse 3dnowext 3dnow mmxext mmx
cmove asm
[transcode] V: video buffer | 10 @ 720x576 [0x2]
[transcode] A: audio buffer | 10 @ 48000x2x16
[import_raw.so] v0.3.3 (2008-11-23) (video) RGB/YUV | (audio) PCM
[import_dv.so] v0.3.1 (2003-10-14) (video) DV | (audio) PCM
[filter_stabilize.so] v0.61 (2009-10-25) extracts relative transformations of
subsequent frames (used for stabilization together with the
transform filter in a second pass)
[filter_stabilize.so] Image Stabilization Settings:
[filter_stabilize.so] maxshift = 48
[filter_stabilize.so] stepsize = 2
[filter_stabilize.so] allowmax = 1
[filter_stabilize.so] algo = 1
[filter_stabilize.so] fieldnum = 20
[filter_stabilize.so] fieldsize = 38
[filter_stabilize.so] mincontrast = 0.150000
[filter_stabilize.so] show = 0
[filter_stabilize.so] result = test_0001.avi.trf
[filter_stabilize.so] field setup: row 1 with 5 fields
[filter_stabilize.so] field setup: row 2 with 5 fields
[filter_stabilize.so] field setup: row 3 with 5 fields
[filter_stabilize.so] field setup: row 4 with 5 fields
[export_null.so] v0.1.2 (2001-08-17) (video) null | (audio) null
[import_raw.so] tcextract -x pcm -i "test_0001.avi" -d 0 | tcextract -a 0 -x
pcm -d 0 -t raw
[import_dv.so] tcextract -x dv -i "test_0001.avi" -d 0 | tcdecode -x dv -y
yuv420p -d 0 -Q 5
[decoder.c] cancelling the import threads 0:00:05, (17| 0| 3)
[transcode] encoded 146 frames (0 dropped, 0 cloned), clip length 5.84 s
real 0m12.306s
user 0m13.041s
sys 0m0.252s
time transcode -J transform -i test_0001.avi -o test_0001.stable.avi
transcode v1.1.5 (C) 2001-2003 Thomas Oestreich, 2003-2009 Transcode Team
libdvdread: Using libdvdcss version 1.2.10 for DVD access
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
libdvdread: Using libdvdcss version 1.2.10 for DVD access
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdnav:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
[transcode] V: auto-probing | test_0001.avi (OK)
[transcode] V: import format | DigitalVideo in RIFF data, AVI (module=dv)
[transcode] A: auto-probing | test_0001.avi (OK)
[transcode] A: import format | PCM in RIFF data, AVI (module=raw)
[transcode] V: AV demux/sync | (1) sync AV at initial MPEG sequence
[transcode] V: import frame | 720x576 1.25:1 encoded @ UNKNOWN
[transcode] V: bits/pixel | 0.174
[transcode] V: decoding fps,frc | 25.000,3
[transcode] V: video format | YUV420 (4:2:0) aka I420
[transcode] A: import format | 0x1 PCM [48000,16,2] 1536 kbps
[transcode] A: export | disabled
[transcode] V: encoding fps,frc | 25.000,3
[transcode] A: bytes per frame | 7680 (7680.000000)
[transcode] A: adjustment | 0@1000
[transcode] V: IA32/AMD64 accel | sse3 sse2 sse 3dnowext 3dnow mmxext mmx
cmove asm
[transcode] warning: no option -y found, option -o ignored, writing to
"/dev/null"
[transcode] V: video buffer | 10 @ 720x576 [0x2]
[transcode] A: audio buffer | 10 @ 48000x2x16
[import_raw.so] v0.3.3 (2008-11-23) (video) RGB/YUV | (audio) PCM
[import_dv.so] v0.3.1 (2003-10-14) (video) DV | (audio) PCM
[filter_transform.so] v0.61 (2009-10-25) transforms each frame according to
transformations
given in an input file (e.g. translation, rotate) see also filter stabilize
[filter_transform.so] Image Transformation/Stabilization Settings:
[filter_transform.so] input = test_0001.avi.trf
[filter_transform.so] smoothing = 10
[filter_transform.so] maxshift = -1
[filter_transform.so] maxangle = -1.000000
[filter_transform.so] crop = Keep
[filter_transform.so] relative = True
[filter_transform.so] invert = False
[filter_transform.so] zoom = 0.000000
[filter_transform.so] optzoom = True
[filter_transform.so] sharpen = 0.800000
[filter_transform.so] Final zoom: 10.715493
[filter_unsharp.so] unsharp: 5x5:0.80 (sharpen luma)
[filter_unsharp.so] unsharp: 5x5:0.40 (sharpen chroma)
[filter_unsharp.so] v1.0.1 (2003-10-27) unsharp mask & gaussian blur
[export_null.so] v0.1.2 (2001-08-17) (video) null | (audio) null
[import_raw.so] tcextract -x pcm -i "test_0001.avi" -d 0 | tcextract -a 0 -x
pcm -d 0 -t raw
[import_dv.so] tcextract -x dv -i "test_0001.avi" -d 0 | tcdecode -x dv -y
yuv420p -d 0 -Q 5
[decoder.c] cancelling the import threads 0:00:05, (16| 0| 4)
[transcode] encoded 146 frames (0 dropped, 0 cloned), clip length 5.84 s
real 0m18.330s
user 0m19.857s
sys 0m0.236s
> then try a smaller maxshift value than the one that
> used in the default case (see program output)
>
> > How do I remove the black borders?
>
> Where do they come from? I suspect that your camera produces a clip with
> borders.
Could be, The file was captured with a Canopus ADVC 50. I would like to remove
them and enlarge it to 704x576 or 720x576. I think 704 would be better, when
you look at the sample.
How can I remove these borders. I will play with the values myself, but I need
the options how to do it in best quality.
> > Can the colors / saturation be optimized automatically?
> > What else could be done with this clip?
> >
> >
> > Result should be a Standard PAL-DVD.
> >
> > I read http://public.hronopik.de/vid.stab/features.php?lang=en but I am
> > very unsure which options I have to use.
>
> transcode -J stabilize -i MOVIE -y null,null -o dummy
> transcode -J transform -i MOVIE OUTPUTOPTIONS -o STABILE
I ignored OUTPUTOPTIONS and hoped that the default values are ok. Did I miss
some important OUTPUTOPTIONS?
Al