The shot-change detection engine, or shot engine in short, is a non-compromise tool dedicated to any video-based programs. More than helping the user to find all shot-sequences inside a video, it finds them automatically, accurately, dynamically and in real-time !!! The shot engine analyses shot breaks, such like cuts, fade-in, fade-out, crossfade, zoom, slide-effects and other Premiere-like transitions, and builds automatically the list of shots.
More than just having the list of shots automatically extracted, such list is dynamical and in fact any shot has a seek functionality. Thus you have direct access to a given shot, and in consequence to the real content of the video.
The shot engine is not a monolithic process, the analysis can be undertaken for the first part of a video. Then for another part. The shots will be added, with coherent indexes. So you don't have to worry about anything.
Of course, secondary shots can be removed. The shot engine will then calculate and establish new relationships between adjacent shots. Secondary shots are shots that are wrong, or shots that are of less importance to you and thus don't deserve an entry.
Since the shots represent real content of the video, the shot engine offers a unique opportunity to go much beyond standard video navigation controls, and also addresses a first-level automatic indexing tool.
The shot engine is an introductory to our filter plug-in technology. In fact, in much the same way that there are over ten visual effect filters applied in real-time inside the hotspots, the shot-engine is a filter.
The great consequence of that is that it can be used like any other filter, and you probably still don't know at that moment all what it means...
As you have already tested the visual effect filters, you know by now that the default filter applied to hotspots is the red filter, and you can select another at any moment using the OPTIONS MENU, Apply Visual Filters option. See screen below.
The shot engine is a plugged filter, not a monolithic program
Well, the shot engine is just another filter. To launch the process itself, select it !!!
Of course, the shot engine needs the video to be played before it finds a first shot. The shot engine algorithm is of the class of motion trackings, thus it does nothing with still images, and you need to go through a few next images to see something happen. This is natural of course.
But the fact that the shot engine is just a filter means that you still can move or stretch the hotspot while the shot engine is activated !!! This allows much more freedom than using a shot engine that would not allow the user to set the boundaries of the zone in which calculations are made.
The immediate effect of being able to choose the boundary zone is that you can speed up the process by a factor of 4 if the zone is half the width and half the height of the screen. Depending on whether you need precision or velocity, you choose.
Here is how the parameters should normally be set. By default, the boundary zone should be the whole screen, hence stretch the hotspot so it fits the whole video area. Then slower the frame rate to a factor of one-third or something, so when you start playing the video it plays frame by frame and not 5 frames by 5 frames for example. Activate the shot engine by selecting it. Then play the video. Normally you don't move the hotspot. You just let the machine do her stuff and show new shots as the video plays. When you are done, because you don't need the whole video broken into parts, or the video has ended, pause the video, then select another filter so the shot engine is deactivated. That's all. You made it so far !!!
As new shots are found and indexed, they appear on the right side of HyperGen, into a tree control. See screen below.
The list of shots after the shot engine did her job
Now you got the shots. You can go to another location of the video and start the shot engine again. Shots will be added conveniently.
You can at any moment right click somewhere in the thumbnail view, and select start or stop. The name of the menu option is adapted to the context. This option automatically stretchs the hotspot to fit the entire screen, selects the shot-engine filter, and starts the engine by playing the video. If the current sequence had already data, then the option automatically creates a new sequence, so you don't get corrupted !
Now why the hotspot should fit the entire screen ? The calculations are made inside the hotspot. Thus if the hotspot is too little compared to the screen where all video actors lie, it's not exactly relevant to the content that appears, lives, and goes away. Thus the entire screen is a default "good" size for the shot-engine to be fine tuned.
Shots allow navigation, indexing and management. For conceptual considerations about navigation and indexing, see next parts.
Navigation is done through precise seeks. A shot starts at a given frame and ends at a given another, hence defining a frame interval, the shot sequence itself. The name of the shot encompasses all those informations : for example, the name Shot #007, the start frame 201, and the end frame 209.
Navigating through shot sequences means accessing the first frame. How does it work ?? Just double-click onto the required shot.
In our example, double-clicking in the shot entitled "Shot #007 (201 - 209)" forces a jump to frame 201.
Indexing is conceptual and implicit. The shot engine is an indexing tool in that shot breaks reveal a specific content of the video. There is no other specific tool or user interface at the moment.
Managing the shots means for example be able to remove one or more shots. To remove one shot, just select it and press the DELETE key. A confirmation dialog will appear. Otherwise, to remove all shots, select the root entitled "Shot List" and press the DELETE key. A confirmation dialog will appear.
When you remove a shot, the machine maintains consistancy between the shot before and after in terms of starting and ending frames, and also names. For example, when you remove the shot entitled "Shot #007 (201 - 209)", knowing that the following shot is entitled "Shot #008 (210 - 215)", the 8th shot will be renamed to become the 7th, and this will be done for all next shots. Also the start frame will be adjusted to encompass those from the removed shot, hence "Shot #008 (210 - 215)" becomes "Shot #007 (201 - 215)". This ensures there is no gap between shots, and you are sure that a list of shots is contiguous. See screen below.
When you remove a shot, subsequent shots remain consistant
Indeed, video-based tools, whether they are mere players or even editors, offer poor advanced controls to the video. The standard timeline is what you get. With such timeline, it's of course possible to make large seeks and also fine tune seeks in the video. But on one hand, depending on whether the video is lengthy or not, the timeline may not be exactly adequated. On the other hand, depending on the kind of the video we are talking about, take MPEG-2 video stream for example, the processing may be so long that in fact the actions suffer from time delays, not to say worse...Furthermore, what about the video content ??? Navigating through frames numbers is independent of the actors or objects inside the video. And this is inadequate. The user wants to process the video, based on what happens in the video.
A first answer to this is to add a bookmark functionality. It lets you save in memory a given frame that is of importance to you, for instance at that moment a given actor appears. This bookmark is then a new menu option in a dedicated popup menu or so, and you can whenever go to the location it carries. The bookmark metaphore is thus some kind of a manual shot metaphore in our context.
The second answer, which has a lot to do with shots of course, is that the shot engine inferes what we could call automatically extracted bookmarks. And these bookmarks can of course be seeked too using a dedicated functionality.
For instance, if you consider that the shot engine creates a new shot element whenever it finds a break in the video, then to have all informations you just need to know that the shot to be created will start at the frame corresponding to the previous break (or the frame the shot engine was started, or restarted), and will end at the current break.
The shot has the following non ambiguous properties :
The previous and next shots have consistent properties over the ones from the current shot. This for example doesn't allow layered shots, which is quite natural of course...
Among other properties, any shot can be removed. You can also remove all shots in a row using the root shot element. See How to...
The bookmark functionality is the first step in the construction of an indexing tool. Any bookmark that you add to the bookmarks list are named Bookmark#1, Bookmark #2, Bookmark #3, ...If you consider the opportunity to rename them to reflect the actual content to the frame they represent, then the bookmarks list would turn to an effective actor index, or actor-situation index if you like.
As the bookmarks can be recalled and seeked, any entry in the actor index is seekable, giving us the possibility of direct access to the wanted video content. This point of view is far beyond traditional video controls behaviour.
But there is more to see than those manual bookmarks. The shots are in fact automatic bookmarks of breaks in the video. They behave exactly like traditional bookmarks, and thus allow automatic video indexing. See How to... for further details.
The use of both manual and automatic video indexing functionalities is a powerful productivity tool. When you know that you waste so much time using video timelines, this tool can be regarded like an explicit solution to productivity and efficiency, and enhances by the way mass market video solutions.