Hoping someone could give me a suggestion or two of what to do with an recording of the 2017 eclipse I made with my camcorder.
I didn't have any sort of tracking mount which would have been what I needed, instead I figured I'd set the camera up, let the sun move across the frame and then post-process it to align everything. I took one early pass and got sidetracked and didn't check again. I think what I did was to use vdub to deinterlace and export all frames. There's a crap-load of frame even when done at 30 fps. Thinking back, I may have recorded progressive frames, so there may have been 60 full frames/second. I can't remember but will investigate.
What I'm hoping to hear is someone has a trick to measure an inter-frame x/y movement and then be able to create a fine movement script for avisynth/vdub. I just have no idea other than taking several sequences of frames and trying to manually measure the movement. This sounds like hell, so I'm hoping someone can come up with a less painful way to do this. I believe I took a large group of frames into photoshop and tried to align with transparencies but that was slow.
I expect I'll also be throwing away a large percentage of the frames, and then also changing the playback framerate to play quicker.
I've got an older version of adobe's CS5 so photoshop and premier. I've also got an older version of Vegas if any of those will help. I just recall that Premier at that time didn't play well with avisynth there was something about creating a frameserver and importing to be able to do anything but I don't recall any thing which would help. But... maybe vegas has a motion tool which I could align the first and last frames and let it find the path?
Sorry for the bit of rambling, I've thought about this a bit but without a good knowledge of the tools and what they can do for me.
Thanks for any ideas!!!
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 1 to 10 of 10
Thread
-
-
No need to export individual frames. AviSynth can do it all -- open the video, deinterlace, track, speedup. Motion should be nearly linear so it should be trivial to track it with Animate(). I need a sample though. Long enough to show significant motion.
And, of course, any full featured NLE can track something like this. -
Thanks for the suggestions.
jagabo I don't know Animate but will look into it, I'm use to the other stuff like deinterlace, bob, weave, playback rate, drop frames, etc. Yes the motion would be linear, but what makes it tricky is you go from a full sun, to a sliver and tracking that last edge may through the auto stuff off. I did try blender once and that had a tough time with the auto part.
Karma, Vegas does have a nice start/stop key frame and will auto transition between the key frames pretty nicely. I do have a few other issues I'll need to work through. The motion is linear top-left to bottom right at a constant rate but... I did reframe every so often (no fixted interval) and will have to just split on those. So with the changing framing the video frame gets moves away from the Top-left and results in the background showing so I'll need to figure out some interesting pattern with blur on that region to blend it.
There's a third issue after total coverage when the sun in coming out from behind the moon the solar glasses I had taped onto the camcorder weren't positioned correctly so I get a nice green/red glow from the painters tape that I need to figure out how to fix...
[Attachment 50386 - Click to enlarge] -
Here's an example using Animate() to track on object that's moving linearly:
Code:function MoveSun(clip black, clip sun, float x, float y) { Overlay(black, sun, x=Int(x), y=Int(y)) } function CropSun(clip v, float x, float y) { Spline36Resize(v, 448.0, 448, x, y, 448, 448) # using resize rather than crop gives us sub-pixel accuracy } ImageSource("Ecliplse000119.png", start=0, end=1000, fps=29.97).ConvertTOYV24() ShowFrameNumber(x=650, y=500) # stamp frame number on sun as reference black = BlankClip(last) # a black clip onto which we'll pan the sun image background = Animate(0,1000, "MoveSun", black,last,-300,-200, black,last,1500,500) # the sun pans across the background sun = Animate(0,680, "CropSun", background,143.0,69.0, background,1372.0, 550.0) # crop a 448x448 box that follows the sun Overlay(background, sun, background.width-sun.width, 0) # overlay the stationary sun at the top right corner of the original video Trim(0,680)
-
Thanks for the script, I took a shot and am not clear how the actual tracking in happening because I can't quite figure out the relationship between the movesun and cropsun functions. I my modified the script to use a real clip doesn't quite do what thought.
I took two frames 2997 frames apart (100 seconds of 29.97 source) and found the sun moves , like you simulated, down right 166,311 so the interframe movement would be (.166, .311 wrong) 0.0553887220553887, 0.1037704371037704. (Although I'm not sure why these deltas are important..)
Code:am=DirectShowSource("00086.MTS",audio=false).SeparateFields().Bob().SelectEven().BicubicResize(1920/1,1080/1) background=am black = BlankClip(last) # a black clip onto which we'll pan the sun image
Code:sun = Animate(0,1000, "CropSun", background,367.0,25.0, background,201.0, -314.0) # destination has moved 166, 311 to the left and up sun = Animate(0,1000, "CropSun", background,367.0,25.0, background,533.0, 336.0) # destination has moved 166, 311 to the right and down {these were unique runs, not both in the script at the same time}
Then I remember I messing with my source for deinterlacing... which may sound silly given the speed at which the sun moves, but I found there were visible interlaced frames...
I then started second guessing if I've lost half my frames or did I get them back. It's been a long time since I've used avisynth often. S I checked both original and scripted videos in vdub have the same frame counts, and frame rates.
I need to spend some more time trying to figure out why I'm not moving like I thought but suspect it's something dumb.
Edit: Then I realized my inter-frame deltas mentioned were based on seconds not frames and corrected that.Last edited by jeff d; 5th Oct 2019 at 10:36.
-
You don't need the black clip. I was using that just in the creation of a moving sun video from your still image. Of course, it doesn't really hurt in your script because you create it but never use it (it's ignored).
I think what you're missing is that the first two arguments (0, 1000) to Animate are the frame numbers over which to animate. So you need to change them to reflect the frame numbers over which you're tracking.
http://avisynth.nl/index.php/Animate -
Yeah, I left the black in just as a filler, but agree it's not needed.
As for the frame number yes I understand. I had changed those values from yours to just do a larger section test BUT... I didn't realize the end needed to match the final frame of the source. Made that change and the sun does stay put!!! Thanks.
If I can find a place to host a clip I'll share something.
I had also discovered a bone headed thing where I wasn't taking the final position in the clip but rather the position @ 2997 frames in, yeah for me!
I adjusted the final position to be at the final frame but then something strange happened and I can't figure out why.
My frames have doubled from 4xxx to 8xxx. I was playing around with AssumeFPS trying to get it to play quicker but when that didn't work I deleted it. No the 4635 frame clip shows up in vdub with 8055 frames. I am making progress, thanks!! -
Alright, I think I need a little help because something doesn't make sense...
I have two image frame0 and frame4634, I bring both into photoshop with my ruler units set to pixels.
I calculate the movement by shifting frame0 over down until it lines up with frame 4624's sun, the deltas are (267, 385)
I setup Animate to start with the position of 367.0, 25.0 of background which is my source clip, the final position is 634.0, 410.0:
Code:background=DirectShowSource("00087.MTS",audio=false).SeparateFields().Bob().SelectEven().BicubicResize(1920/1,1080/1) Animate(0,4634,"CropSun", background, 367.0, 25.0, background, 634.0, 410.0) # destination has moved 166, 311 to the left and up
-
At first I thought the sequence DirectShowSource("00087.MTS",audio=false).Separate Fields().Bob().SelectEven().BicubicResize(1920/1,1080/1) would double the number of frames but it looks like AviSynth realizes that the video is already fields after SeparateFields() so it doesn't double them again with Bob(). Still, I'd try just: DirectShowSource("00087.MTS",audio=false).Bob().Se lectEven(). There's no reason to follow with a resize, Bob() keeps the original frame size.
Also DirectShowSource() should be used as a last resort. It's preferable to use LWlibabVideoSource() (included with the LSMASH package) or ffVideoSource() (included with the ffmpegSource package).
With the numbers you've given I don't see why the tracking is off vertically but not horizontally. Try adding "return(background)" between the two lines and verify you have the right number of frames, the right frame size, and no distortion.
Similar Threads
-
Appreciate suggestions devices also capable of capturing/recording BIOS
By vhwul62 in forum CapturingReplies: 4Last Post: 29th May 2017, 00:08 -
Need lighting equipment suggestions for recording VR videos
By Level 2 VR in forum Video Streaming DownloadingReplies: 6Last Post: 27th Jan 2017, 03:46 -
Suggestions on recording and playback of online streaming media
By quill49 in forum DVD & Blu-ray WritersReplies: 0Last Post: 27th Nov 2016, 15:19 -
need suggestions for new 4k camera with mic input for video recording.
By techspark in forum Camcorders (DV/HDV/AVCHD/HD)Replies: 2Last Post: 4th Jul 2016, 04:14 -
Recording Phone Calls, Digitally – Suggestions?
By Jenny in forum AudioReplies: 7Last Post: 26th Feb 2015, 10:16