georgmartius / vid.stab Goto Github PK
View Code? Open in Web Editor NEWVideo stabilization library
Home Page: http://public.hronopik.de/vid.stab/
License: Other
Video stabilization library
Home Page: http://public.hronopik.de/vid.stab/
License: Other
Dear:
I used ffmpeg build version
http://public.hronopik.de/vid.stab/
---->
https://www.johnvansickle.com/ffmpeg/
x86_64 build: ffmpeg-release-64bit-static.tar.xz - md5
and run command
./ffmpeg -i input.mp4 -vf vidstabdetect=shakiness=1:accuracy=15:stepsize=1:mincontrast=0:result="s5transforms.trf" -f null -
./ffmpeg -i input.mp4 -vf vidstabtransform=input="s5transforms.trf",unsharp=5:5:0.8:3:3:0.4 unsharp-5.mp4
when out unsharp-5.mp4, but it also have shake.
i find the source video and process OK video. the OK video seems very well
but my process video seems not well, is there any other parameter i used wrong?
thanks
input.mp4:network source video
ok.mp4:network process OK video
unsharp-5.mp4: my process video
video.zip
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...
error: failed to prepare transaction (could not satisfy dependencies)
:: ffmpeg-full-nvenc: installing libvpx (1.7.0-1) breaks dependency 'libvpx.so=4-64'
Hello
How to fix this compilation problem?
Hi,
I tried to use vid.stab to stabilize a timelapse video with resolution 5194 x 3457. This causes vid.stab to fail:
vid.stab-1.1/src/frameinfo.c:38: vsFrameInfoInit: Assertion `width%2==0 && height%2==0' failed.
The assert comes from https://github.com/georgmartius/vid.stab/blob/master/src/frameinfo.c#L38
This crashes then both kdenlive (17.04.1) and melt (6.5.0). Is there some reason for the assert, or could it be removed?
Best,
-Arttu
The vid.stab documentation makes no mention of interlaced video. Does it just work (each field is transformed independently)? Or does the video need to be deinterlaced before vid.stab can be used? Please add some guidance to the documentation. Thanks!
In preparing to package vid.stab for Fink (an OS X package manager), the files test_compareimg.c and test_compareImg.c causes confusion because the OS X file system is case insensitive but the git file manifest is not. Therefore, git status shows "modified: tests/test_compareImg.c" due to a recent change in test_compareimg.c. Looking at the file histories, they look almost identical and the doubling seems to have been caused by an accidental rename at some point?
current options for crop are keep
and black
. I want to add average
If background is visible a lot, then keep
introduced lots of strange artefacts, and black
distracts from the video. An example for a video, that has a lot of visible background, can be found here. Increasing the zoom, would remove a lot of information from the video.
I'd like to set the crop for to the average colour of the frame (or even the average colour of the entire video).
Hello,
I have plenty of concert videos that I intend to stabilize. However, it seems that the flashing lights in concerts throw off the stabilization process. I tried playing with all settings I could, to no avail.
An example input clip is here, and the resulting "stabilized" output is here. This is using the default settings, because it seemed that whatever I changed didn't affect the outcome in this particular case.
I'm I doing something wrong or missing something? Thanks a lot!
are the libav filter instructions outdated, viz the recent commits to ffmpeg git master?
ex: https://raw.github.com/georgmartius/vid.stab/master/libavfilter/README
Thanks! :)
transformfixedpoint.h and transformfloat.h have a gpl2 or later + a
Our downstream legal team says this is a no no
Would it be possible to have this file relisenced to a "pure" gpl2 file (like the rest of the sourcedode)?
I suppose you would have go to get an OK from @ubitux for that to be "correct in legal terms".
Hello,
I've recently created a new module to MLT framework, which uses yours latest vid.stab library, but there is a small issue, a redundant semicolon in file localmotion2transform.h at line 72.
Unfortunately, it breaks builds with g++ (my version 4.7.3):
/usr/local/include/vid.stab/localmotion2transform.h:72:41: error: expected ‘)’ before ‘;’ token
/usr/local/include/vid.stab/localmotion2transform.h:72:42: error: expected unqualified-id before ‘)’ token
It seems to affect C++ programs only, as the library itself builds without any problem.
Best regards,
Jakub Ksiezniak
Hi Georg, your filter is awesome work! It would be even more so, if there is an implementation of L1 Optimal Camera Paths. I see you experimented on a different branch. Is there any progress or do you need help with something?
btw, the paper is here:
http://cpl.cc.gatech.edu/projects/videostabilization/
A file created when "debug" option is 1, global_motions.trf;
Those numbers in global_motions.trf look random.
Based on http://public.hronopik.de/vid.stab/ and https://github.com/georgmartius/vid.stab/releases it's not clear to me whether 1.0.0 or 0.98b is the current stable release version. Could you clarify which should be in Homebrew now? Thanks!
ffmpeg -i DNxHD-1-CUT-1-0097.MOV.mxf -vf vidstabdetect dummy.avi
ffmpeg version N-81071-g9264bb7 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.1 (Ubuntu 5.3.1-14ubuntu2.1) 20160413
configuration: --enable-gpl --enable-libvidstab --enable-libx264 --enable-nonfree --enable-libmp3lame --enable-libopus
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 50.100 / 57. 50.100
libavformat 57. 44.100 / 57. 44.100
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 47.100 / 6. 47.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[dnxhd @ 0x306de00] frame size changed: 1920x1088 -> 1920x1080
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mxf, from 'DNxHD-1-CUT-1-0097.MOV.mxf':
Metadata:
uid : adab4424-2f25-4dc7-92ff-29bd000c0000
generation_uid : adab4424-2f25-4dc7-92ff-29bd000c0001
company_name : FFmpeg
product_name : OP1a Muxer
product_version : 56.40.101
product_uid : adab4424-2f25-4dc7-92ff-29bd000c0002
modification_date: 0-01-01 00:00:00
material_package_umid: 0x060A2B340101010501010D0013D7BA535294713415D7BA53005294713415D700
timecode : 00:00:00:00
Duration: 00:00:05.04, start: 0.000000, bitrate: 147194 kb/s
Stream #0:0: Video: dnxhd (DNXHD), yuv422p(bt709/unknown/unknown), 1920x1080, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc
Metadata:
file_package_umid: 0x060A2B340101010501010D0013D7BA535294713415D7BA53005294713415D701
Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
Metadata:
file_package_umid: 0x060A2B340101010501010D0013D7BA535294713415D7BA53005294713415D701
[Parsed_vidstabdetect_0 @ 0x3096500] pixel-format error: wrong bits/per/pixel, please report a BUGFailed to configure input pad on Parsed_vidstabdetect_0
Error opening filters!
when calling:
"I:\Hybrid\64bit\ffmpeg.exe" -y -threads 8 -i "F:\TestClips&Co\files\test.avi" -map 0:0 -c:v rawvideo -vf vidstabdetect=result="E:/Temp/18_11_50_9710_01.trf":shakiness=5:accuracy=15:stepsize=6:mincontrast=0.3 -f null NUL
I get:
[vidstabdetect @ 000001ffd65476c0] [Eval @ 000000f3b79fd9c0] Undefined constant or missing '(' in '/Temp/18_11_50_9710_01.trf'
[vidstabdetect @ 000001ffd65476c0] Unable to parse option value "/Temp/18_11_50_9710_01.trf"
[vidstabdetect @ 000000f3b79fe158] Multithreading: use 12 threads
[vidstabdetect @ 000000f3b79fe0c8] Fieldsize: 48, Maximal translation: 50 pixel
[vidstabdetect @ 000000f3b79fe0c8] Number of used measurement fields: 40 out of 40
[vidstabdetect @ 000000f3b79fe0c8] Fieldsize: 16, Maximal translation: 16 pixel
[vidstabdetect @ 000000f3b79fe0c8] Number of used measurement fields: 162 out of 162
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] Video stabilization settings (pass 1/2):
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] shakiness = 5
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] accuracy = 15
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] stepsize = 6
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] mincontrast = 0.300000
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] tripod = 0
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] show = 0
[Parsed_vidstabdetect_0 @ 000001ffd652cf80] result = E
and the '18_11_50_9710_01.trf' file won't be created.
So how should one set the file path for 'result' (same for 'input')?
Hi Georg,
first of all: Thanks a lot for libvidstab, which I am using to my greatest pleasure via ffmpeg! I had tried it long ago with some 1080p material, with mixed results, but recently found that when I use vidstab on 4k videos I recorded, the results are really great, probably because there's so much "spare resolution" in the recordings that a little zooming doesn't hurt the looks of the result as much as with 1080p material.
But now back on topic: I use libvidstab for one additional purpose you probably hadn't in mind when you wrote it: For creating low-noise still images from hand-held video shots under poor lighting conditions. The idea here is that if you don't have a tripod, but want to take a picture in low light, you can substitute for the noise-cancellation that is usually done in-camera for long-exposure still images by first recording some seconds of hand-held 4k-video with relatively high ISO values, then software-stabilize the clip using libvidstab (in "tripod=1" mode), then use a filter like ffmpeg's "hqdn3d" with spatial=0 but temporal=200 or alike parametrization, effectively doing the same "denoising" the camera could have done when using a tripod but from the stabilized hand held video, and save a resulting frame at the end of that clip as a still image.
This already has worked for me remarkebly well, however, there's one catch I'd like to get rid of: If inside the hand-held video there are individual frames with too much motion-blur from unintentional movements, they can significantly lower the quality of the overall result.
Now I wonder whether this could be easily solved by just discarding all frames from the video that have too much motion blur in them.
I understand that libvidstab already does some contrast analysis for the "mincontrast" parameter, and maybe that could be a starting point to implement a minimum threshold for micro-contrast that, if undercut, could cause libvidstab to ignore the whole frame not only for motion estimation, but to drop the frame completely (or replace it by a duplicate of the preceding frame, if that is easier to implement).
What do you think, is such a feature feasible with reasonably low effort?
Dear all,
I followed this guide to compile ffmpeg. Before doing so I got the source code for the vid.stab library from GitHub and did
cmake -DCMAKE_INSTALL_PREFIX:PATH="/home/myusername/programs/ffmpeg/ffmpeg_build"
make
sudo make install
within the follwoing directory structure:
programs
|_ ffmpeg
|_ ffmpeg_build
|_ lib
|_ pkgconfig
|_ bin
|_ include
|_share
|_ ffmpeg_sources
|_ vid.stab
|_ bin
At last, I compiled ffmpeg and exported LD_LIBRARY_PATH
. However, when I run ffmpeg, I receive the following error message:
./ffmpeg: error while loading shared libraries: libvidstab.so.1.1: cannot open shared object file: No such file or directory
Does anybody have an idea of what could have gone wrong? I can see libvidstab.so.1.1
in ffmpeg_build/lib.
Thanks a bunch.
Nicola
Hello,
the videos I mostly deshake have vertical shake (Y) and almost no horizontal (X). The cam sometimes turning around, and the filter detects the turning as shake and tries to correct that one also.
If there would be different x,y maxshift the horizontal one could be set to a low value.
Thanks,
Mihaly
I would like to use this filter with 2-pass encoding with the VP9 encoder:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M -pass 1 -an -f webm /dev/null
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M -pass 2 -c:a libopus output.webm
How am I supposed to use the filter in this case? Should I use vidstabdetect
during the first pass and vidstabtransform
during the second? However in this case the first pass of the vp9 encoder will run on the shaky video, though it should be run on the stabilized video really.
Should I do three passes then? First one for vidstabdetect
, second one for vidstabtransform
and -pass 1
of vp9 and third one for -pass 2
of vp9?
Thanks!
Just wanted to tell you that I'm really enjoying this plug-in. I use blender as my video editor and was looking for video stabilization for linux which produced useful results for a long time. Running vid.stab as ffmpeg plug-in with default settings produces really nice results. Thank you!
Hello,
I'm using vid.stab with ffmpeg to stabilize VR recordings in order to reduce high frequency jitter which generally works quite well for me. I would like to keep using ffmpeg since it offers me codecs (GPU encoding) and other options (colorspace conversion, etc.) that I need. However, this requires me to use vid.stab in two-pass mode.
The main problem I have is that stabilizing an e.g. two or three hour recording in 1080p60 requires a lot of memory. The file written out by the first pass is a couple of GB on disk and the transform pass then requires more RAM than my recording machine has. The last time it tried to allocate 20 GB of RAM in the transform step while the machine "only" has 16 GB.
Now I would like to evaluate possibilities to reduce memory requirements, thus I inspected the code a little bit. I understand that the transform step requires a certain sliding window over the transforms in order to work. However, it seems to like the first step in the transform pass is to load all the local motions into RAM and then convert them to transforms which by itself only requires the local motion for each frame separately. Am I correct?
If this is the case then it would probably already help a lot if this part of the process would read the local motions and convert them to transforms directly, without requiring all local motions to be loaded into RAM first. Another possibility might be to move the conversion to transforms to the detection step and writing out the transforms which should be much smaller.
Are these observations correct? Do you think that this would be something worth looking into?
Best regards
Ochi
tried to build on windows 10 with vs 2017 preview 3.
cmake .. -G"Visual Studio 15 2017 Win64"
generated solution ok.
but build failed.
1>------ Build started: Project: vidstab, Configuration: Release x64 ------
1>cl : Command line warning D9002: ignoring unknown option '-O3'
1>cl : Command line warning D9002: ignoring unknown option '-g'
1>cl : Command line warning D9002: ignoring unknown option '-fPIC'
1>cl : Command line warning D9002: ignoring unknown option '-std=gnu99'
1>cl : Command line warning D9002: ignoring unknown option '-msse2'
1>cl : Command line warning D9002: ignoring unknown option '-ffast-math'
1>cl : Command line warning D9002: ignoring unknown option '-fopenmp'
1>frameinfo.c
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>C:\Users\kuh3h\Downloads\vid.stab\src\frameinfo.c(119): error C2059: syntax error: ')'
1>C:\Users\kuh3h\Downloads\vid.stab\src\frameinfo.c(128): error C2059: syntax error: ')'
1>transformtype.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray_': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(43): warning C4820: '_transform': '4' bytes padding added after data member 'extra'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(63): warning C4820: 'localmotion': '4' bytes padding added after data member 'f'
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype_operations.h(141): warning C4244: 'return': conversion from 'double' to 'int', possible loss of data
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype_operations.h(143): warning C4244: 'return': conversion from 'double' to 'int', possible loss of data
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype_operations.h(153): warning C4244: 'return': conversion from 'float' to 'int', possible loss of data
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype_operations.h(155): warning C4244: 'return': conversion from 'float' to 'int', possible loss of data
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(129): warning C4204: nonstandard extension used: non-constant aggregate initializer
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(129): warning C4244: 'initializing': conversion from 'double' to 'int', possible loss of data
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(141): warning C4204: nonstandard extension used: non-constant aggregate initializer
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(145): warning C4204: nonstandard extension used: non-constant aggregate initializer
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(149): warning C4204: nonstandard extension used: non-constant aggregate initializer
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(393): warning C4255: 'null_localmotion': no function prototype given: converting '()' to '(void)'
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(460): warning C4244: '/=': conversion from 'double' to 'int', possible loss of data
1>C:\Users\kuh3h\Downloads\vid.stab\src\transformtype.c(461): warning C4244: '/=': conversion from 'double' to 'int', possible loss of data
1>libvidstab.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(43): warning C4820: '_transform': '4' bytes padding added after data member 'extra'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(63): warning C4820: '_localmotion': '4' bytes padding added after data member 'f'
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(52): warning C4820: '_vsmotiondetectconfig': '4' bytes padding added after data member 'numThreads'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(66): warning C4820: '_vsmotiondetectfields': '6' bytes padding added after data member 'useOffset'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(73): warning C4820: '_vsmotiondetect': '4' bytes padding added after data member 'fi'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(83): warning C4820: '_vsmotiondetect': '2' bytes padding added after data member 'hasSeenOneFrame'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(86): warning C4820: 'vsmotiondetect': '4' bytes padding added after data member 'frameNum'
1>c:\users\kuh3h\downloads\vid.stab\src\transform.h(28): fatal error C1083: Cannot open include file: 'libgen.h': No such file or directory
1>transform.c
1>c:\users\kuh3h\downloads\vid.stab\src\transform.h(28): fatal error C1083: Cannot open include file: 'libgen.h': No such file or directory
1>transformfixedpoint.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(43): warning C4820: '_transform': '4' bytes padding added after data member 'extra'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(63): warning C4820: 'localmotion': '4' bytes padding added after data member 'f'
1>c:\users\kuh3h\downloads\vid.stab\src\transform.h(28): fatal error C1083: Cannot open include file: 'libgen.h': No such file or directory
1>motiondetect.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(43): warning C4820: '_transform': '4' bytes padding added after data member 'extra'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(63): warning C4820: '_localmotion': '4' bytes padding added after data member 'f'
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(52): warning C4820: '_vsmotiondetectconfig': '4' bytes padding added after data member 'numThreads'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(66): warning C4820: '_vsmotiondetectfields': '6' bytes padding added after data member 'useOffset'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(73): warning C4820: '_vsmotiondetect': '4' bytes padding added after data member 'fi'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(83): warning C4820: '_vsmotiondetect': '2' bytes padding added after data member 'hasSeenOneFrame'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(86): warning C4820: 'vsmotiondetect': '4' bytes padding added after data member 'frameNum'
1>c:\users\kuh3h\downloads\vid.stab\src\transform.h(28): fatal error C1083: Cannot open include file: 'libgen.h': No such file or directory
1>motiondetect_opt.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(43): warning C4820: '_transform': '4' bytes padding added after data member 'extra'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(63): warning C4820: '_localmotion': '4' bytes padding added after data member 'f'
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(52): warning C4820: '_vsmotiondetectconfig': '4' bytes padding added after data member 'numThreads'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(66): warning C4820: '_vsmotiondetectfields': '6' bytes padding added after data member 'useOffset'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(73): warning C4820: '_vsmotiondetect': '4' bytes padding added after data member 'fi'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(83): warning C4820: '_vsmotiondetect': '2' bytes padding added after data member 'hasSeenOneFrame'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(86): warning C4820: '_vsmotiondetect': '4' bytes padding added after data member 'frameNum'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.15063.0\ucrt\malloc.h(44): warning C4820: '_heapinfo': '4' bytes padding added after data member 'useflag'
1>serialize.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(43): warning C4820: '_transform': '4' bytes padding added after data member 'extra'
1>c:\users\kuh3h\downloads\vid.stab\src\transformtype.h(63): warning C4820: '_localmotion': '4' bytes padding added after data member 'f'
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(52): warning C4820: '_vsmotiondetectconfig': '4' bytes padding added after data member 'numThreads'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(66): warning C4820: '_vsmotiondetectfields': '6' bytes padding added after data member 'useOffset'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(73): warning C4820: '_vsmotiondetect': '4' bytes padding added after data member 'fi'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(83): warning C4820: '_vsmotiondetect': '2' bytes padding added after data member 'hasSeenOneFrame'
1>c:\users\kuh3h\downloads\vid.stab\src\motiondetect.h(86): warning C4820: 'vsmotiondetect': '4' bytes padding added after data member 'frameNum'
1>c:\users\kuh3h\downloads\vid.stab\src\transform.h(28): fatal error C1083: Cannot open include file: 'libgen.h': No such file or directory
1>localmotion2transform.c
1>c:\users\kuh3h\downloads\vid.stab\src\transform.h(28): fatal error C1083: Cannot open include file: 'libgen.h': No such file or directory
1>boxblur.c
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>C:\Users\kuh3h\Downloads\vid.stab\src\boxblur.c(64): warning C4018: '<': signed/unsigned mismatch
1>C:\Users\kuh3h\Downloads\vid.stab\src\boxblur.c(156): warning C4244: '=': conversion from 'unsigned int' to 'unsigned char', possible loss of data
1>C:\Users\kuh3h\Downloads\vid.stab\src\boxblur.c(184): warning C4244: '=': conversion from 'int' to 'unsigned char', possible loss of data
1>vsvector.c
1>c:\users\kuh3h\downloads\vid.stab\src\vsvector.h(169): warning C4820: 'vsarray': '4' bytes padding added after data member 'len'
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(90): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(92): error C2010: '.': unexpected in macro formal parameter list
1>c:\users\kuh3h\downloads\vid.stab\src\vidstabdefines.h(94): error C2010: '.': unexpected in macro formal parameter list
1>C:\Users\kuh3h\Downloads\vid.stab\src\vsvector.c(147): error C2059: syntax error: ')'
1>motiondetectorc.c
1>C:\Users\kuh3h\Downloads\vid.stab\src\orc\motiondetectorc.c(451): warning C4242: '=': conversion from 'int' to 'orc_int8', possible loss of data
1>Generating Code...
1>Done building project "vidstab.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
src/serialize.c:150]: (warning) Storing fgetc() return value in char variable and then comparing with EOF.
return value from fgetc has to be stored into an int, then compared with EOF.
I'm trying to install ffmpeg with vid.stab on ubuntu 17.04. There seems to be no ppa for this, so I'm trying to build from source. The problem is probably more in building ffmpeg but I thought you might have an idea.
I'm trying to follow these instructions.
The problem is that the generated ffmpeg depian package conflicts with libavcodec57, but also has a runtime dependency on libchromaprint1, which in turn depends on libavcodec57. Any help would be much appreciated.
Hi,
i tried vid.stab and it's really cool but i often have one problem. The stabilization focuses on the wrong object.
When i have a scene with a person in the foreground and want to remove the shakiness of the background it always makes it worse cause vid.stab tries to stabilize the person and not the background. This makes it look like the camera is attached to the persons head, what is a nice effect but not always wanted. :)
Would be great to be able to define a point, region or maybe even a line vid.stab can take as a reference. Hugin http://hugin.sourceforge.net/ allows this, it's called control points there.
Let me know what you think.
Greetings
FFmpeg 2.6.2 / vid.stab 0.98b / libx264 144.20150223
Some tripod mode stabilized videos rapidly shake at the end of the video stream while others do not. Original videos are relatively still with minor roll/pitch/yaw which tripod mode should easily handle. While the stablized videos look great towards the beginning of the streams, the end results are unacceptable due to the instability at the end. I have run multiple passes with tripod=1 and tripod=[random referenced frame] in vidstabdetect but the instablity issues persist.
ffmpeg -i input -vf vidstabdetect=tripod=1:stepsize=4:mincontrast=0:result=input.trf" -f null -
ffmpeg -i input -vf vidstabtransform=tripod=1:interpol=bicubic:input=input.trf,unsharp=5:5:0.8:3:3:0.4 -c:v libx264 -tune film -preset veryslow -crf 12 -x264opts no-fast-pskip -c:a copy input-stab.mkv
...or...
ffmpeg -i input -vf vidstabdetect=tripod=400:stepsize=4:mincontrast=0:result=input.trf" -f null -
ffmpeg -i input -vf vidstabtransform=tripod=1:interpol=bicubic:input=input.trf,unsharp=5:5:0.8:3:3:0.4 -c:v libx264 -tune film -preset veryslow -crf 12 -x264opts no-fast-pskip -c:a copy input-stab.mkv
...or...
ffmpeg -i input -vf vidstabdetect=tripod=400:result=input.trf" -f null -
ffmpeg -i input -vf vidstabtransform=tripod=1:input=input.trf,unsharp=5:5:0.8:3:3:0.4 -c:v libx264 -c:a copy input-stab.mkv
None of the above resolves the issue. Is this a known problem with tripod mode? Current (but not elegant) workaround is to perform standard stabilization. What to do?
Hi, i'm trying to use vidstab with ffmpeg, i've cloned the git, and successfully compiled a .deb installer, but when I try to use "ffmpeg --enable-libvidstab" in terminal i get an error.
Using Linux Mint 17.
Please make new release on GitHub and please switch to semantic versioning, i.e. 1.0.0 or 0.9.8b or something like that.
It will greatly ease the burden on package maintainers. Let me know if you need help with the procedure.
Putting 1.0=0.98 in CHANGELOG just creates more confusion than it solves. Yes mistakes do happen, handle them with grace (and roll up).
This is the error output:
$ cmake -DCMAKE_INSTALL_PREFIX=/tmp/prefix ..
...
CMake Error at CMakeLists.txt:71 (include):
include could not find load file:
create_pkgconfig_file
CMake Error at CMakeLists.txt:72 (create_pkgconfig_file):
Unknown CMake command "create_pkgconfig_file".
Cmake is 2.8.10.2. Is there a missing "create_pkgconfig_file.cmake" in CMakeModules ?
What is the difference between vid.stab and deshake \ vidstabdetect+vidstabtransform?
Here is some visual comparision:
https://www.youtube.com/watch?v=MfHGH2Mnxls
Hi,
I'm trying to process head mounted eye tracking video where the movement head influence the video field of view but the eye tracking is actually relative to the field of view. I intended to use video stabilization to ease object detection and tracking.
Then the eye tracking coordinates needs also to be "stabilized" accordingly. I extracted the transform vector but can't really make sense of the values:
Frame 2 (List 98 [(LM 0 -8 787 199 112 0.665356 2.596540),(LM -2 1 493 479 112 0.687232 1.848852),(LM -2 1 640 479 112 0.715156 1.064573...
It feels like there are coordinates of polygons + transformations vectors, but the values are not clear. Any details on the format anywhere?
Hi,
I try to compile git version of ffmpeg with ours last vid.stab library and obtain this error after make process:
CC libavfilter/vf_vidstabtransform.o
libavfilter/vf_vidstabtransform.c: In function ‘config_input’:
libavfilter/vf_vidstabtransform.c:189:13: error: implicit declaration of function ‘vsLocalmotions2TransformsSimple’ [-Werror=implicit-function-declaration]
if (vsLocalmotions2TransformsSimple(td, &mlms, &tc->trans) != VS_OK) {
^
cc1: some warnings being treated as errors
make: *** [libavfilter/vf_vidstabtransform.o] Errore 1
marco@android:~/svn/ffmpeg$ make
CC libavfilter/vf_vidstabtransform.o
libavfilter/vf_vidstabtransform.c: In function ‘config_input’:
libavfilter/vf_vidstabtransform.c:189:13: error: implicit declaration of function ‘vsLocalmotions2TransformsSimple’ [-Werror=implicit-function-declaration]
if (vsLocalmotions2TransformsSimple(td, &mlms, &tc->trans) != VS_OK) {
^
cc1: some warnings being treated as errors
make: *** [libavfilter/vf_vidstabtransform.o] Errore 1
Hi, I've used the deshaker plugin with VirdualDub for many years, and it can do a fairly good job of reducing rolling shutter distortion, both in lateral and vertical motion, but I don't see this ability with this plugin.
If the camera moves laterally, the image is skewed, and if moved vertically then the image is either squashed or stretched. This also depends on each particular camera used, so would need to analyse markers on the corners of the frames to try to determine the amount of compensation required.
Needless to say, this is complicated and I don't have the skills to be able to contribute!
Even rolling shutter compensation can't remove higher frequency distortions such as jello from multicopter footage.
If someone can crack that using a matrix to morph-compensate each frame for jello removal, they'd be a superstar!
Hi,
As the ABI has been changed in 0.98 the library soname change from 0.9.6 to 0.9.8 isn't enough and MAJOR_VERSION must be upgraded to 1
I'm facing linking issues when trying to compile ffmpeg against an openmp enabled vid.stab (git master 97c6ae2).
My system is Slackware-current, glibc 2.22, gcc 5.3.0.
This is the source file that ffmpeg's configure check uses to test vid.stab availability:
#include <vid.stab/libvidstab.h>
long check_vsMotionDetectInit(void) { return (long) vsMotionDetectInit; }
int main(void) { return 0; }
This is the command ffmpeg's configure uses to compile the test code:
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -std=c99 -fomit-frame-pointer -pthread -c -o test.o test.c
And this is the command it uses to link the test code:
gcc -Wl,--as-needed -Wl,-z,noexecstack -o test test.o -lvidstab -lm -lgomp -lm -llzma -lbz2 -lz -pthread
And finally, these are the errors I'm getting:
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVeN16vv_powf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVcN4v_log'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVdN8v_expf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVbN2v_exp'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVeN16v_logf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVdN8vv_powf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVcN4vv_pow'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVeN8vv_pow'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVdN4vv_pow'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVcN4v_exp'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVcN8v_logf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVbN4vv_powf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVcN8v_expf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVdN4v_log'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVeN8v_log'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVcN8vv_powf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVbN2v_log'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVbN4v_expf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVbN4v_logf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVeN16v_expf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVdN8v_logf'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVeN8v_exp'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVbN2vv_pow'
/usr/lib64/gcc/x86_64-slackware-linux/5.3.0/../../../../lib64/libvidstab.so: undefined reference to `_ZGVdN4v_exp'
collect2: error: ld returned 1 exit status
If I compile with -DUSE_OMP=0 everything links fine, so it's definitely something openmp related, but I can't figure out what exactly :-/
Recently (commit 5970467) use of OpenMP was added. For applications using libvidstab, this introduces a new dependency to libgomp. Yet the pkgconfig file created by vid.stab's CMakeModules/create_pkgconfig_file.cmake doesn't provide "-lgomp".
(My ffmpeg failed to configure due to this - it was missing the omp_* symbols provided by libgomp.)
I haven't found a way to expand CMake's "target_link_libraries(vidstab gomp)" into a variable for use in this line:
Libs: -L${libdir} -l${name}
but it probably can be done with some CMake variable and some foreach logic. I gave up after about half an hour. ;-) (I'm looking for magic expansion because the dependency depends on USE_OMP.)
This site takes a slightly different approach with a template and variable replacements:
http://www.kaizou.org/2014/11/typical-cmake-project/
(as does the x265 project), but there isn't much difference to vid.stab's approach. And the suggested variable:
SET(PKG_CONFIG_LIBS
"-L${libdir} -lmylib"
)
still needs said foreach magic.
I want to stream continously to a RTMP-Server using ffmpeg, which works great. Now I found vid.stab I thought about stabilizing the stream. On static files I can stabilize in one step with for example -i "$SOURCE" -vf vidstabdetect -vf vidstabtransform=zoom=5
.
However in stream (rtp://
-Input from GoPro) this doesn't work, it only gives the following error. If I try to use vidstabdetect only it gives no errors, but using vidstabtransform afterwards with the created file does nothing with the video.
[swscaler @ 0x110571000] deprecated pixel format used, make sure you did set range correctly
[Parsed_vidstabtransform_0 @ 0x7fabdb729e00] cannot open input file transforms.trf
[Parsed_vidstabtransform_0 @ 0x7fabdb729e00] Failed to configure input pad on Parsed_vidstabtransform_0
Error reinitializing filters!
Any idea how I could detect and transform in one step? Or isn't this possible at all?
I want to mount the camera on a pig and stream the video, so stabilization would be great… 😂🐷
Hi,
got this error here, any way to fix this?
ffmpeg.exe -i %3d.jpg -vf vidstabdetect=show=1 test.mp4
ffmpeg version N-60572-gccc48b3 Copyright (c) 2000-2014 the FFmpeg developers
built on Feb 12 2014 22:01:44 with gcc 4.8.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
eex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aa
cenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavp
ack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 63.101 / 52. 63.101
libavcodec 55. 52.101 / 55. 52.101
libavformat 55. 32.100 / 55. 32.100
libavdevice 55. 9.100 / 55. 9.100
libavfilter 4. 1.102 / 4. 1.102
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Input #0, image2, from '%3d.jpg':
Duration: 00:00:01.92, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg, yuvj422p(pc), 1920x1080 [SAR 72:72 DAR 16:9], 25
fps, 25 tbr, 25 tbn, 25 tbc
File 'test.mp4' already exists. Overwrite ? [y/N] y
[swscaler @ 04241400] deprecated pixel format used, make sure you did set range
correctly
[Parsed_vidstabdetect_0 @ 025c9f40] pixel-format error: wrong bits/per/pixel, pl
ease report a BUGFailed to configure input pad on Parsed_vidstabdetect_0
Error opening filters!
vid.stab-devel.x86_64: E: incorrect-fsf-address /usr/include/vid.stab/boxblur.h
The Free Software Foundation address in this file seems to be outdated or
misspelled. Ask upstream to update the address, or if this is a license file,
possibly the entire file with a new copy available from the FSF.
vid.stab-devel.x86_64: E: incorrect-fsf-address /usr/include/vid.stab/frameinfo.h
The Free Software Foundation address in this file seems to be outdated or
misspelled. Ask upstream to update the address, or if this is a license file,
possibly the entire file with a new copy available from the FSF.
....
vid.stab-debuginfo.x86_64: I: checking-url http://public.hronopik.de/vid.stab (timeout 10 seconds)
vid.stab-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/vid.stab-afc8ea9fb0632e0cdf781725a770edb1de788fed/src/boxblur.c
The Free Software Foundation address in this file seems to be outdated or
misspelled. Ask upstream to update the address, or if this is a license file,
possibly the entire file with a new copy available from the FSF.
vid.stab-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/vid.stab-afc8ea9fb0632e0cdf781725a770edb1de788fed/src/boxblur.h
The Free Software Foundation address in this file seems to be outdated or
misspelled. Ask upstream to update the address, or if this is a license file,
possibly the entire file with a new copy available from the FSF.
attached is a patch that will fix this.
vid.stab-fsf-fix.patch.txt
I'm not very familiar with the C.
If I look at the code myself, it may take a long time.
I'm more interested in theory than in implementing it.
I hope I can make some improvements on the theoretical level.
I'm looking forward to your reply.
using cmake without LIB_SUFFIX=64 will always assume the lib folder to be just lib, while on 64bit Fedora for example the main folder is lib64, and lib is used for 32bit libraries.
Check this solution out: http://www.cmake.org/pipermail/cmake/2011-June/045092.html
Also the installer that is included with the binary files doesn't look for transcode under lib64.
There is a problem with compiling vid.stab using Mingw:
/vid.stab-master/src/libvidstab.c:61:27: error: 'strndup' undeclared here (not in a function)
vs_strndup_t vs_strndup = strndup;
As I know strndup() is not required by ISO-C99 and Mingw doesn't implement it.
For now I just add into libvidstab.c for mingw my own (maybe wrong) implementation of strndup:
static inline char *strndup(const char *s, size_t n)
{
char *result;
size_t len = strlen (s);
if (n < len) len = n;
result = (char *) malloc (len + 1);
if (!result) return 0;
result[len] = '\0';
return (char *) strncpy (result, s, len);
}
But I do not see where does strndup used in vid.stab at all.
Current options are limited to none, linear, bilinear, and bicubic.
Dear Georg,
I would like to get your library packaged for Debian, which, as I understand from your discussion in ffmpeg's mailing list, is one of the missing steps to have your excellent video stabilization in actual use.
For that purpose, may I suggest that you change the places of the cmake files, so that they are at the top directory of the project (and, thus, picked up by tools like Debian's debhelper)?
If you want, I may send you a patch/pull request to help with that.
Thanks,
Rogério Brito.
mqudsi@Blitzkrieg /m/d/G/FFmpeg> ./configure --enable-libvidstab --enable-gpl
ERROR: vidstab >= 0.98 not found using pkg-config
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
[email protected] mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.
mqudsi@Blitzkrieg /m/d/G/FFmpeg> pkg-config --cflags --libs "vidstab >= 0.98"
-I/usr/local/include -L/usr/local/lib -lvidstab -lm -lgomp -lpthread
ffmpeg's configure script tries to compile the following, which fails:
#include <vid.stab/libvidstab.h>
#include <stdint.h>
long check_vsMotionDetectInit(void) { return (long) vsMotionDetectInit; }
int main(void) { int ret = 0;
ret |= ((intptr_t)check_vsMotionDetectInit) & 0xFFFF;
return ret; }
compiling it myself:
mqudsi@Blitzkrieg /m/d/G/FFmpeg> clang (pkg-config --cflags --libs vidstab | string split ' ') ./test.c -o test
/usr/local/lib/libvidstab.so: undefined reference to `__kmpc_end_critical'
/usr/local/lib/libvidstab.so: undefined reference to `__kmpc_for_static_fini'
/usr/local/lib/libvidstab.so: undefined reference to `__kmpc_fork_call'
/usr/local/lib/libvidstab.so: undefined reference to `__kmpc_for_static_init_4'
/usr/local/lib/libvidstab.so: undefined reference to `__kmpc_critical'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Corrected by modifying vidstab.pc
to include -fopenmp=libomp
:
# file generated by vid.stab cmake build
prefix=/usr/local
libdir=/usr/local/lib
includedir=/usr/local/include
Name: vidstab
Description: Vid.Stab, a library for stabilizing video clips
Version: 1.10
Libs: -L${libdir} -lvidstab -lm -lgomp -lpthread -fopenmp=libomp
Cflags: -I${includedir}
I'm not familiar enough with OpenMP to determine if this is safe to add universally.
I'm just starting to work with vid.stab, but hit this error immediately:
Unable to load filter stabilize: /usr/lib64/transcode/filter_stabilize.so: undefined symbol: vsSimpleMotionsToTransform
I'm on Fedora 20 x86_64 and transcode is installed via yum and Fedora repos in /usr/lib64/transcode. I've used both the transcode plugins from your webpage and from the original Fedora RPM and get the error with both. The version of transcode installed by Fedora is "transcode v1.1.7 (C) 2001-2003 Thomas Oestreich, 2003-2010 Transcode Team". Any thoughts?
George
Is it possible to port this android? It does FFMPEG and C support.
I have some 4k video footage from a GoPro that I am stabilizing. I have a Nvidia GTX 960 installed and configured with ffmpeg but wasn't sure if there is any way to utilize the GPU to make it go faster?
I am currently getting 5.3FPS on a dual processor E5-2690 0 @ 2.90GHz with 160GB RAM.
Hey Georg,
as of yesterday, vid.stab is now easily installable via homebrew on OS X (brew install libvidstab
or brew install vid.stab
). I've also updated the ffmpeg install script to support compilation with the vid.stab library.
I thought you may want to include a hint on this in your installation instructions to make it even easier to install vid.stab on such systems?
Thanks for the great library. I've been using it with ffmpeg recently and it worked really well.
Freundliche Grüße
Paul
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.