I have a video which in fact seems to be or have been a powerpoint presentation.
So it is like a slide show. there is no sound. Just these static screens displayed for various lengths of time.
As such it is not much good to me. I would like to print out each different screen.
I would like to make slideshow of it that I could manipulate - decide how long each one displays, have press button control over the display.
Googling I find lots of hits most of which are online things. I want a desktop thing.
And I googled and got directed to a few desktop things but when I tried them they just didn't seem to fit - didn't want to work with videos, wanted single photos.
Got directed to and downloaded the old Windows Movie Maker, for instance and it failed, for me at least, I couldn't see how to turn this video into a manageable slide show.
Can anyone help?
p.s. I will tell you the video if you like: https://youtu.be/CfrWyPm2pKQ
+ Reply to Thread
Results 1 to 28 of 28
-
-
I really do not think ANY slide-show software allows for that. But there are several in the software section and you can but try them.
The software typically works for a timed change of pic. You might consider creating a dvd or mp4/mkv with each pic as a chapter so you can then forward to the next one before the timer runs out. I assume that mp4/mkv will also work like that. I simply do not know.
But there is an even simpler option (which could be combined with the above). It's called the play/pause key. So you read the pic for as long as you want to from the pause before you continue to 'play' the show. Yet that also will not allow if there is sound. -
The video you linked to is definitely a PowerPoint presentation recorded as a video.
What do you mean "I would like to print out each different screen." PowerPoint presenters do that all the time. Print out each screen/slide as handouts.
It seems you want to add videos. PowerPoint allows that: https://support.office.com/en-us/article/video-add-format-and-record-video-bb7fc99c-71...a-3ebafcd9f3ed. You'll may have to encode your video to the specific format required. If you don't have PowerPoint, OpenOffice Impress can do the same thing: https://wiki.openoffice.org/wiki/Add_Video_or_Sound_to_Presentationhttps://wiki.openoffice.org/wiki/Add_Video_or_Sound_to_Presentation -
Yes I want to print out each screen. Keep the text in a folder with the rest of the course material. This video has been included in a correspondence course I'm doing and those screens actually represent better course material than the course itself provides.
I said I wanted a slideshow simply because I thought if I have it as a slide show that will certainly enable printing out screens.
I don't really want a slide show as a show - I realise, of course, that I can pause the video. And being paused I can then do a screengrab and then I can print out that. And have done. Some.
Yes. Workarounds. I'm just querying for a 'royal road', an easy, a 'proper' or 'dedicated' way.
How many times in the past have you constructed a way of doing things, painstakingly, only to have someone see it and say 'there's a piece of software will do that..' ?
I don't have Powerpoint. Look like this Open Office Impress might be the way to go.
Just was thinking maybe even Shotcut would do it. I have it. Can try.
-
Ok. I have just realised a method by way a key press can advance from one screen to another.
1. Use whatever method that suits you to get the individual pictures from the video
2. Compile the pictures in to a pdf
3. Use a pdf reader which has page-up/page down buttons such as Adobe Reader. -
Yep, that'd be great.
I'm still looking for an optimal way of getting the pictures from the video.
I thought it might import to impress but it wouldn't. If I change the format from mp4 it might, though. I suppose. -
The simplest way I have found is a little program called APS (AutoPrintScreen). A single click of the 'Print Screen' key as the video plays grabs the screen in whatever format jpeg, BMP etc. you want and with the video played full-screen you would not have to edit the caps to remove unwanted detail.
Last edited by DB83; 27th May 2020 at 07:31. Reason: wrong software quoted
-
Yep, that could be good by sounds of it. That reminded me about windows snipping tool - that'd do it, too.
And I've remembered OBS. I could probably get it that way.
Nicest way for me would be to have it - the video - all laid out in a timeline like in Shotcut and I just scroll along the line and somehow do a one click cut and save of that frame every time I find a new picture.
Even better a piece of software that does that for me - spits out a frame every time it finds sufficiently different image. So on a normal video it would spit out every single frame. On a ten minute video of an unmoving scene, a still life, it would spit out only one frame.
Twenty years ago I would have set to and tried to write it. Not now. -
Try the software/scripts I linked to this thread: https://forum.videohelp.com/showthread.php?t=397436 and let us know if it works for you.
-
Try the software/scripts I linked to this thread: https://forum.videohelp.com/showthread.php?t=397436 and let us know if it works for you.
-
Most media players have a snapshot tool that will save an image file with each key press. For example, VLC does it with Shift+s.
-
A very simple tool to extract still images from a video is called Image Grabber. It works by grabbing a user-defined number of images so you would have to do some simple maths if for instance you wanted one image every second. Normally those images are joined in to a frame but they can be left as singles.
I would still do it manually since in that sample video there are many frames that you would not really want but just the final one in any sequence. And for that same reason you would end up grabbing almost every single frame if a utility automatically detected differences. -
This struck me as an interesting challenge. Here's what I came up with in AviSynth:
Code:GScript(""" function DeleteFrames(clip c, string condition) { # DeleteFrames (Gavino, 16 Nov 2011) # A generic function that will delete all frames satisfying an arbitrary user-defined condition. # The condition can use any of the Avisynth run-time functions such as AverageLuma(), etc, # and/or the variable 'current_frame'. # (Note - Since the condition is evaluated inside the function, # any variables used (except current_frame) must be global.) # Example use (delete duplicate frames): # DeleteFrames("YDifferenceFromPrevious < 0.1 && current_frame > 0") c fc = FrameCount() res = BlankClip(c, length=0) current_frame = 0 while (current_frame < fc) { while (Eval(condition) && current_frame < fc) { current_frame = current_frame+1 } if (current_frame < fc) { # not at end start = current_frame # start of wanted section while (!Eval(condition) && current_frame < fc) { current_frame = current_frame+1 } res = res + Trim(start, start-current_frame) } } return res } """) LSmashVideoSource("D:\Youtube-dl\Accounting.mp4") SelectEvery(10) last+Trim(0,2) DeleteFrames(last, "YDifferenceFromPrevious() > 0.01") # keep only strings of identical frames DeleteFrames(last, "YDifferenceToNext() < 0.7") # keep only 1 of each string of identical frames AssumeFPS(0.2) # 5 seconds per frame
-
Nice one jagabo. I kinda guessed you would rise to the challenge
Does not appear to have grabbed the whole vid >> my playback stopped at #35 from #39. But I guess with some tweaking it can be more accurate.
One other thing. With my not-so-up-to-date version of vlc the images 'stuck' at #2 whereas Windows Media Player played it through (strange one that) -
A lot of players have problems with playback of sub 1 fps video. Try opening the video in an editor like VirtualDub. The last frame should be the "Thank You" message. Here's the video as 42 separate PNG images (exported from VirtualDub).
-
Ah !
I did suggest to the OP to create a pdf from images. But even that is not really necessary as one could simply view a folder and Picture Viewer has the required navigation. A pdf just makes it more compact. -
That's fairly wonderful, jagabo, thanks a lot. I'm glad you took an interest. You've done the whole job and given us a tool for what - reverse engineering powerpoint 'videoed' presentations back to individual slides?
How was the 'exported from Virtual Dub' ? That's something it does, export individual frames? You put the Avisynth file into Virtual Dub and then it put out the individual slides? -
No. The original Powerpoint presentation was a static background image with a bunch of objects animated and overlaid onto it. After each animated sequence the image was held static for several seconds. I took advantage of that property of the video to remove all the animated sequences, then convert the remaining still sequences to a single frame each. You are not left with all the individual assets of the original Powerpoint project. And if some other video doesn't have similar animation/still properties it will not be "extracted" properly.
You can either open a video or AVS script in VirtualDub (File -> Open Video File...) and select File -> Export -> Image Sequence... Each frame will be exported to the chosen image type (JPG, PNG, BMP, TGA). -
No. The original Powerpoint presentation was a static background image with a bunch of objects animated and overlaid onto it. After each animated sequence the image was held static for several seconds. I took advantage of that property of the video to remove all the animated sequences, then convert the remaining still sequences to a single frame each. You are not left with all the individual assets of the original Powerpoint project. And if some other video doesn't have similar animation/still properties it will not be "extracted" properly.
-
quick and dirty
play the video in VLC
Pause the video for the still, Grab stills of the video from the video menu. (snapshot)
VLC will grab still of the full size of the video, regardless of the player size, to your pictures folder.
go to W movie maker
Add said stills
export
job done -
Yep, that's good, but the point of my 'lazy' approach was to find a way that avoided stopping and starting a video stream some 40 times.
-
You can use pyscenedetect for this. It's a tool that uses machine learning to automatically detect scene changes in a video.
I experimented a little bit with your video and mostly have it working. I downloaded it to my machine at c:\tmp\video\accounting-systems.mp4 and then ran the following to execute pyscenedetect under Docker (you'll need Docker installed):
Code:docker run --volume "c:/tmp/video:/opt" handflucht/pyscenedetect --input /opt/accounting-systems.mp4 --output /opt detect-content --threshold 3 list-scenes save-images
https://mega.nz/folder/pGphzDKA#00pf35Kzd_qHhuup9nuL9g
If you want to play with my pyscenedetect command, you can try adjusting the threshold up or down. A lower number will be more sensitive (consider more changes to be different scenes), and a higher number will be less sensitive. -
Thank you for taking the time to test and help out! This has the potential to be huge for a lot of members!
-
If you want to play with my pyscenedetect command, you can try adjusting the threshold up or down. A lower number will be more sensitive (consider more changes to be different scenes), and a higher number will be less sensitive.
-
I installed Anaconda. Thought it was supposed to have included everything you might need normally but:
Had a cython error when I tried to install. Realised maybe cython wasn't installed. Installed it.
Then got a numpy error. Installed it.
Then got a pip message. Upgraded it.
Now got it all done I think:
Installed c:\python\lib\site-packages\click-7.1.2-py3.6.egg
Searching for numpy==1.18.4
Best match: numpy 1.18.4
Adding numpy 1.18.4 to easy-install.pth file
Installing f2py-script.py script to C:\Python\Scripts
Installing f2py.exe script to C:\Python\Scripts
Using c:\python\lib\site-packages
Finished processing dependencies for scenedetect==0.5.2
PS C:\pyscene>
edit: No good. It wouldn't run. Needed opencv I think but I couldn't install a version didn't give an error about not compatible with my installation.
Given up.Last edited by abrogard; 28th May 2020 at 19:27.
-
I've never installed pyscenedetect directly. I just run it from the Docker image. If you install Docker, you can run my exact command above from any system.
-
Okay, I tried that. Downloaded and installed and all seemed alright. But it (docker) won't run: 'cannot enable Hyper-V' it says.
-
How about using Vapoursynth.
I made a Remove_frames function that could be tweaked depending on video.
This gave me video clip with 40 unique frames from that slideshow video. Parts with transitions or redundant parts were removed to just single static frames.
Code:import vapoursynth as vs from vapoursynth import core source_path=r'F:/Accounting Information Systems An Overview - YouTube.mp4' clip = core.ffms2.Source(source_path) class Remove_frames: def __init__(self, diff_tolerance=0.00005, sequence=5): self.diff_tolerance = diff_tolerance #sequence is number of frames in a row to be even considered as a slide self.sequence = sequence self.count = 0 self.change = False self.to_delete = [] def remove_frames(self, clip): self.clip = clip self.value_next = self.clip.get_frame(0).props.PlaneStatsAverage print('analyzing ...') for n in range(self.clip.num_frames-1): self.compare_neighbors(n) print('done') self.to_delete.pop(0) #first frame is taken out from list to be deleted return self.clip.std.DeleteFrames(self.to_delete) def compare_neighbors(self, n): value = self.value_next self.value_next = self.clip.get_frame(n+1).props.PlaneStatsAverage diff = abs(value - self.value_next) if diff < self.diff_tolerance and self.count < self.sequence: self.to_delete.append(n) self.count += 1 elif diff < self.diff_tolerance and self.count == self.sequence: self.count = 0 if self.change: pass#print(f'frame {n} is KEPT') #frame is not deleted else: self.to_delete.append(n) self.change = False else: self.to_delete.append(n) self.change = True self.count = 0 def remove_duplicates(self, clip): value_next = clip.get_frame(0).props.PlaneStatsAverage print('analyzing dups ...') for n in range(clip.num_frames-1): value = value_next value_next = clip.get_frame(n+1).props.PlaneStatsAverage diff = abs(value - value_next) if diff < self.diff_tolerance: self.to_delete.append(n) print('done') return clip.std.DeleteFrames(self.to_delete) clip = clip.std.SelectEvery(5, 0).std.PlaneStats() #just keep a frame only after frame changes and it is constant in a define number of sequence, other same frames are ignored remove = Remove_frames(diff_tolerance=0.00005, sequence=5) clip = remove.remove_frames(clip) #second pass, remove just duplicates (some duplicates leak out from above) remove = Remove_frames(diff_tolerance=0.0005) clip = remove.remove_duplicates(clip) clip.set_output()
Code:#YUV to RGB for ImageMagick Writer rgb_clip = core.resize.Point(clip, format = vs.RGB24, matrix_in_s = '709') #setting rgb clip for ImageMagick Writer rgb_clip = rgb_clip.imwri.Write(imgformat='PNG', filename='presentation_%02d.png', firstnum=1) #Writing images to hardisk by requesting frames for frame in range(rgb_clip.num_frames): rgb_clip.get_frame(frame)
Code:for _ in range(5): clip = clip.std.DuplicateFrames(list(range(clip.num_frames))) clip.set_output()
Last edited by _Al_; 31st May 2020 at 20:11.
Similar Threads
-
Please make audio waveform feature to VSDC free video editor
By FreeBoomer in forum EditingReplies: 0Last Post: 6th Apr 2020, 04:39 -
Must have video software for a new PC (that's free for comercial use)?
By testamentum in forum Newbie / General discussionsReplies: 20Last Post: 26th Apr 2018, 17:14 -
(Solved) Free Make Video Converter bug and shut down
By WazaKrash in forum Video ConversionReplies: 2Last Post: 9th Apr 2017, 02:50 -
Best free video editing software?
By Moveebuff in forum Video ConversionReplies: 1Last Post: 30th Oct 2016, 16:04 -
Free (not free trial) basic video editing software-which one suggested.
By video2016 in forum EditingReplies: 7Last Post: 12th Jul 2016, 15:14