A toolkit for working with Insta360 camera video files (*.insv).
Maven and JDK 8 or later are required to build InsvTools as a jar.
Сommand:
mvn clean package -DskipTests
Produces archive target/release-package/insvtools-${version}.zip with jar file and all dependencies.
Maven and GraalVM with native-image tool (including dependencies, see https://www.graalvm.org/latest/reference-manual/native-image/#prerequisites) are required to build InsvTools native image.
Commands:
mvn clean test-compile
mvn exec:exec@java-agent -Pnative -Dagent
mvn package -Pnative -Dagent -DskipTests
Produces archive target/release-package/insvtools-native-${version}.zip with standalone executable file insvtools.
It's assumed in this section that you are using native image to run InsvTools. If you are using jar, just replace insvtools with java -jar insvtools.jar in the following examples.
The InsvTools can be used to cut the video files based on start time and/or end time.
Command line to cut video files:
insvtools cut [--start-time=<time>] [--end-time=<time>] [--group=<true/false>] [--out-file=<filename>] <filename>
Parameters:
| Parameter | Description |
|---|---|
[--start-time=<time>] |
Start time in format [MM:]SS[.SSS] |
[--end-time=<time>] |
End time in format [MM:]SS[.SSS] |
[--timestamp-scale=<scale>] |
Gyro records timestamp scale (autodetect by default) |
[--group=<true/false>] |
Process the whole group of files related to specified file (true by default) |
[--out-file=<filename>] |
Use specified output file (by default 'cut' suffix will be added to the original file name) |
<filename> |
Input *.insv file name |
For example, we have group of files related to the same video: VID_20221218_231825_00_677.insv, VID_20221218_231825_10_677.insv and LRV_20221218_231825_11_677.insv.
To cut clip starting from 10 seconds 500 milliseconds and ending at 100 seconds 125 milliseconds we can use command line:
insvtools cut --start-time=10.500 --end-time=100.125 VID_20221218_231825_00_677.insv
All three files will be processed and new files: VID_20221218_231825_00_677.cut.insv, VID_20221218_231825_10_677.cut.insv and LRV_20221218_231825_11_677.cut.insv will be created. If, for some reason, we need to process only one of these files, we can specify --group false parameter:
insvtools cut --start-time=10.500 --end-time=100.125 --group=false VID_20221218_231825_00_677.insv
To cut clip starting from 10 seconds 500 milliseconds till the end of the file, we can specify only --start-time parameter:
insvtools cut --start-time=10.500 VID_20221218_231825_00_677.insv
Similarly, to cut clip from the beginning and ending at some point in time, we can specify only --end-time parameter:
insvtools cut --end-time=1:40.124 VID_20221218_231825_00_677.insv
The insvtools also has a set of other commands, but these commands will be helpful mostly for *.insv file format explorers and shouldn't be interested by end users.
Here is usage help for other commands:
insvtools <cmd> [parameters] <filename>
Commands and parameters:
dump-meta - dump insv file metadata
[--frame-type=<frame-type>] - dump only specified integer frame type (by default all frames will be dumped)
[--dump-file=<filename>] - dump file name (by default 'meta.json' suffix will be added to the original file name)
decompose-meta - store insv file metadata to file-per-frame
[--frame-type=<frame-type>] - store only specified integer frame type (by default all frames will be stored)
compose-meta - compose file-per-frame metadata to the insv file
remove-meta - remove insv file metadata
extract-meta - extract insv file metadata as one file
[--meta-file=<filename>] - metadata file name (by default 'meta' suffix will be added to the original file name)
replace-meta - replace insv file metadata with another from file
[--meta-file=<filename>] - metadata file name (by default 'meta' suffix will be added to the original file name)