2022-04-03

Based on Studio2022 v4.2.1.


What are *.insprj files?#

Insprj files are Studio202x project files, in which Studio202x stores all the edits done on a content entry. For those a XML based syntax is used, which can be read and changed with any text editor.


Where are the project (*.insprj) files located?#

The easiest to find there storage location of your project files is to use Studio202x settings:

Studio202x_Project_Location

On Windows the path shown by default would mostly be

C:\Users\<yourUser>\Documents\Insta360\Studio\Project\

In that path you find a bunch of hash coded sub-folders. Each of them contains one .insprj file and potentially some .json files, which are the result of the "Auto frame" function.


What naming convention is used for the project files?#

When naming the project files, the base name of the underlying primary source file is taken. For videos in 5.7k, this is the file with the *_00_*.insv part, that of the primary lens.

For the video file set

VID_20210524_103747_00_504.insv
VID_20210524_103747_10_504.insv

this results in

VID_20210524_103747_00_504.insv.insprj

as the project file name. Simply said, take your source files name and add ".insprj" to it. For images it's a different story because on images the .insp file extension is only kept for normal shots including PureShot, which is saved on the DNG of that shot. For all other "special" types of shots the .insp file extension in their name gets replaced by a recording type identifier which can be

If you search for a project file for one of those, remember the shooting type and add its suffix instead of the file extension before the .insprj file type extentsion.

Example: An IntervalShot series consists of a number of *.insp files. The anchor point for all those images to form one Interval entry in Studio202x is the very first image of this image. Because of this the IntervalShot with the first of its images named

IMG_20200503_142916_00_922.insp

and the last image in that series is named

IMG_20200503_142916_00_999.insp

will have a project file named

IMG_20200503_142916_922_922_INTERVAL.insprj

Note: If you have to deal with Studio202x versions before v4.0.0 & v3.6.6 the naming is different. For example v3.5.7 replaced the continuous number at the end with the recording type string.


What's the purpose of those hash named subfolders?#

The names of those folders are MD5 hashes. Because the hash is build on a complete file path including a virtual file name which can also identify the recording type it is unique for each "storage path - source file" combination.

As a result, if you move your source file after the first edits are done to a different location and load it again in Studio202x you won't see the edits you've already done. Because those are stored in a project file for a file with the same name but at a different location.

To get your edits back you have either to move the project file to the new MD5 hash subfolder or move your source file to its old location.

Best practice: Only start editing after you are sure not to move your source file again.


Can I have multiple different project files for the same content?#

Yes. For that you simply can make copies of the original project file with a changed name. If you want to switch between versions remove your content file from Project2021s content list, rename / change the insprj project file and load your source file again into Studio202x.

Unfortunately, with Studio202x v3.6.6, there no way to manually save project files for one content file either with a different name or to a different location. Maybe that will be added later.


Can the name for a hash-folder manually generated?#

Yes. Please see below.


What are these cryptic names of the subfolders?#

The names of those folders are MD5 hashes. The individual MD5 hash is based on the complete file path to a source content file including its name (primary file) together with a suffix extension which classifies the type of the recording. Normal images, video & images, do not get a special recording type added. Windows file path typical backslashes are replaced with unix style slashes.

For images that type extension can be one of

Those are added to the base file name as a replacement of the file type extension. In this Studio202x v3.6.6 is different to its previous versions, which dropped the lens and continuous number but not the file type extension. Also for a PureShot, which is based on a *.dng, the _DNG recording type extension is not used.

If we continue with our example of the previous paragraph the MD5 hashed subfolder name for

IMG_20210529_142251_00_532_INTERVAL.insprj

with the base file

IMG_20210529_142251_00_532.insp

will be generated on the complete file path to a virtual file name

IMG_20210529_142251_INTERVAL

If our example source file is saved with the path

d:/images/backup/IMG_20210529_142251_00_532.insp

the MD5 hash for a manual build subfolder has to be generated for

d:/images/backup/IMG_20210529_142251_INTERVAL

which then results in

42c676f9fb7a1f3750b09737f27ffd96

But the cases in which you need to generate those names are very very rare. You will only need it of you backup your project files as well as your source files and the location of the source files has changed after a restore. Since v4.0.0 the insprj naming style has changed again, but generating the hash is the same, so you get an idea by the above example.

Studio202x v4.2.1 provides you a hint for the insprj filename by the name of the "Project" in its content window. Take that name, do a wildcard search in the project folder and you will find the corresponding insprj file.


How do insprj file look like?#

A typical insprj file in its XML structure looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<project version="2.0.0">
    <meta app="Insta360 Studio 2022 4.2.1" creation_time="1648983583" version="4.2.1"/>
    <file_group type="video_normal" folder="D:/_Media_/Insta360/DCIM/Camera01" count="2">
        <file name="VID_20220120_164239_00_662.insv"/>
        <file name="VID_20220120_164239_10_662.insv"/>
    </file_group>
    <schemes default="Project1">
        <scheme id="Project1" last_edit_time="2022.04.03 12:59" creation="2022.03.29 09:02:07.563">
            <preference trim_end="38059" ratio_height="9" favourite="0" ratio_width="16" trim_start="0">
                <bullet_time fov="1.04214" distance="0.8125"/>
                <rendering roll="0" directional_lock="0" dewarp="0" projection="64" rotate_angle="0" pitch="0" ai_raw="0" stabilization="1" stab_type="0" blend_angle="0" cold_shoe="0" accessory="0" motion_blur="0" dewarp_mode="0" yaw="0">
                    <play_rate/>
                </rendering>
                <audio denoise_type="0" volume="0.5"/>
                <optimization>
                    <calibration offset=""/>
                    <stitching dynamic_stitching="0" color_enhancement="0" audio_mode="1" remove_black_edge_value="0" is_selfie="0" under_water_correction="0" drone_suite="0" optical_flow_stitching="0" image_fusion="0" remove_black_edge="0"/>
                </optimization>
                <logo enable_logo="1" selected_logo="" logo_size="0.3" logo_location="15"/>
            </preference>
            <timeline duration_ms="149598">
                <recording>
                    <keyframes>
                        <keyframe time="15845" tilt="0" roll="0" id="point0" pan="0" fov="1.309" distance="0.600001"/>
                        <keyframe time="32467" tilt="-0.00883119" roll="0" id="point1" pan="-1.15689" fov="1.309" distance="0.600002"/>
                    </keyframes>
                    <transitions>
                        <transition easing_func="0" connection="point0-point1"/>
                    </transitions>
                    <deep_track_areas/>
                </recording>
            </timeline>
        </scheme>
        <scheme id="backup" last_edit_time="2022.03.29 09:02" creation="2022.03.29 09:02:09.414">
            <preference trim_end="149598" ratio_height="9" favourite="0" ratio_width="16" trim_start="0">
                <bullet_time fov="1.04214" distance="0.8125"/>
                <rendering roll="0" directional_lock="0" dewarp="0" projection="64" rotate_angle="0" pitch="0" ai_raw="0" stabilization="1" stab_type="0" blend_angle="0" cold_shoe="0" accessory="0" motion_blur="0" dewarp_mode="0" yaw="0">
                    <play_rate/>
                </rendering>
                <audio denoise_type="0" volume="0.5"/>
                <optimization>
                    <calibration offset=""/>
                    <stitching dynamic_stitching="0" color_enhancement="0" audio_mode="1" remove_black_edge_value="0" is_selfie="0" under_water_correction="0" drone_suite="0" optical_flow_stitching="0" image_fusion="0" remove_black_edge="0"/>
                </optimization>
                <logo enable_logo="0" selected_logo="" logo_size="0.3" logo_location="15"/>
            </preference>
            <timeline duration_ms="149598">
                <recording>
                    <keyframes/>
                    <transitions/>
                    <deep_track_areas/>
                </recording>
            </timeline>
        </scheme>
    </schemes>
    <bigboom>
        <config>
            <aspect_ratio width="16" height="9"/>
        </config>
        <clips/>
    </bigboom>
</project>

This XML represents the project file for a 5.7k video recording with the OneX2. The recording itself consists of two insv files to which the reference is made. The clip is also trimmed and two keyframes are set, connected with the standard straight connection.

The "backup" named part contains the unedited video parameters and is used if you select to "Clear current edit data" in Studio202x to revert all edits and changes done to the video.