Coder Social home page Coder Social logo

vid.stab's People

Contributors

1480c1 avatar al42and avatar barracuda156 avatar brad0 avatar bryant1410 avatar candrews avatar ddennedy avatar gabilan avatar georgmartius avatar gkraberger avatar karry avatar lheckemann avatar mannyamorim avatar meneguzzi avatar mgorny avatar mistydemeo avatar timothygu avatar tonytheodore avatar tuomaz avatar ubitux avatar zaitor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vid.stab's Issues

my test not work well

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

breaks dependency 'libvpx.so=4-64'

:: 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'

please document usage for interlaced video

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!

tests/test_compareimg.c and tests/test_compareImg.c causes confusion

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?

add average option for crop

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).

Shakiness induced by flashing lights in dark 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!

License conflict (in transformfixedpoint.h and transformfloat.h)

transformfixedpoint.h and transformfloat.h have a gpl2 or later + a

  • This work is licensed under the Creative Commons
  • Attribution-NonCommercial-ShareAlike 2.5 License. To view a copy of
  • this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/
  • or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
  • San Francisco, California, 94105, USA.
  • This EXCLUDES COMMERCIAL USAGE

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".

A redundant semicolon at localmotion2transform.h:72

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

pixel-format error: wrong bits/per/pixel

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!

How to set result/input to an absolute file path?

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')?

Discarding frames with too much motion blur completely

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?

Error while loading shared libraries

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

Separate maxshift for X and Y axis

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

How to use this filter with 2-pass encoding (ex: vp9)?

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!

great plug-in!!

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!

Possibilities to reduce memory usage

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

vidstabdefines.h(88): error C2010: '.': unexpected in macro formal parameter list

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: bad test ?

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.

Issues installing vid.stab enabled ffmpeg on ubuntu 17.04

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.

Specify focus area

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

Rapid Shaking at End of Tripod Mode Stabilized Videos

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?

ffmpeg enable problem

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.

Make new release

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).

vid.stab fails on OS X unable to create pkgconfig file during configure

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 ?

Question: understanding the transform vector values?

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?

ffmpeg -> vsLocalmotions2TransformsSimple

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

Rolling shutter compensation?

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!

Soname must be upgraded to 1.0.0

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

openmp related linking issue with ffmpeg

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 :-/

missing OMP dependencies for pkg-config file

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.

Using vid.stab in a continous stream?

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… 😂🐷

doesn't work with jpeg sequences as input

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!

rpmlint reports E: incorrect-fsf-address

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

Are there any theories or papers that can be referred to?

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.

Compiling using Mingw

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.

Changing the places of cmake files?

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.

1.1.0 breaks compilation under clang

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.

Undefined symbol: vsSimpleMotionsToTransform in filter_stabilize.so in Fedora 20

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

GPU Acceleration?

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.

Now installable via homebrew

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.