Adding changes version 1

This commit is contained in:
2026-02-06 17:56:05 +01:00
parent 93fa820275
commit fdd275ac0e
30 changed files with 7068 additions and 888 deletions
+10
View File
@@ -0,0 +1,10 @@
[
{
"reference": "Gnommo Documentation - https://github.com/example/gnommo",
"context": ""
},
{
"reference": "FFmpeg Documentation - https://ffmpeg.org/documentation.html",
"context": ""
}
]
+17 -3
View File
@@ -1,5 +1,19 @@
Welcome to GnommoEditor, a code-first video editing system. [S1]
[S1]
This is the first slide. It appears immediately. [cite:Gnommo Documentation - https://github.com/example/gnommo]
In this example, we demonstrate how slides appear at specific timestamps based on markers in the transcript. [S2]
[S2]
However, this is the second slide. It should appear 1 second prior to when I say "however"
And that's the end of our demo.
[S3]
[video:Zoomin_MontageZoom]
This is me talking alongside a video. The video is constrained within the red square. Notice how the video stops immediately when we make the transition to the next slide. [cite:FFmpeg Documentation - https://ffmpeg.org/documentation.html]
[S4]
I will continue to talk without pause, but in the finished recording - there will be a pause before the narration continues. Now a video will play that pauses the narration
[S5]
[video:gnommologo]
Notice how my voice continues after the video finished.
[S6]
+26
View File
@@ -0,0 +1,26 @@
{
"S1": {
"image": "example.001.png",
"type": "fullscreen"
},
"S2": {
"image": "example.002.png",
"type": "fullscreen"
},
"S3": {
"image": "example.003.png",
"type": "fullscreen"
},
"S4": {
"image": "example.004.png",
"type": "fullscreen"
},
"S5": {
"image": "example.005.png",
"type": "fullscreen"
},
"S6": {
"image": "example.006.png",
"type": "fullscreen"
}
}
@@ -0,0 +1,2 @@
file '/Users/jenstandstad/Projects/gnommo/example/media/videos/intermediate/talking_head_batch0.mov'
file '/Users/jenstandstad/Projects/gnommo/example/media/videos/intermediate/segments/segment_0002.mov'
@@ -0,0 +1,497 @@
[
{
"word": "This",
"start": 10.72,
"end": 11.4
},
{
"word": "is",
"start": 11.4,
"end": 11.6
},
{
"word": "the",
"start": 11.6,
"end": 11.78
},
{
"word": "first",
"start": 11.78,
"end": 11.98
},
{
"word": "slide.",
"start": 11.98,
"end": 12.44
},
{
"word": "It",
"start": 13.02,
"end": 13.3
},
{
"word": "appears",
"start": 13.3,
"end": 13.66
},
{
"word": "immediately.",
"start": 13.66,
"end": 14.3
},
{
"word": "However,",
"start": 15.34,
"end": 16.02
},
{
"word": "this",
"start": 16.34,
"end": 16.46
},
{
"word": "is",
"start": 16.46,
"end": 16.58
},
{
"word": "the",
"start": 16.58,
"end": 16.76
},
{
"word": "second",
"start": 16.76,
"end": 17.04
},
{
"word": "slide.",
"start": 17.04,
"end": 17.4
},
{
"word": "It",
"start": 17.74,
"end": 17.96
},
{
"word": "should",
"start": 17.96,
"end": 18.2
},
{
"word": "appear",
"start": 18.2,
"end": 18.54
},
{
"word": "one",
"start": 18.54,
"end": 18.98
},
{
"word": "second",
"start": 18.98,
"end": 19.46
},
{
"word": "prior",
"start": 19.46,
"end": 19.88
},
{
"word": "to",
"start": 19.88,
"end": 20.1
},
{
"word": "the",
"start": 20.1,
"end": 20.22
},
{
"word": "word",
"start": 20.22,
"end": 20.52
},
{
"word": "to",
"start": 20.52,
"end": 21.14
},
{
"word": "say",
"start": 21.14,
"end": 21.42
},
{
"word": "whoever",
"start": 21.42,
"end": 21.8
},
{
"word": "the",
"start": 21.8,
"end": 22.16
},
{
"word": "first",
"start": 22.16,
"end": 22.4
},
{
"word": "time.",
"start": 22.4,
"end": 22.68
},
{
"word": "This",
"start": 24.28,
"end": 24.96
},
{
"word": "is",
"start": 24.96,
"end": 25.12
},
{
"word": "me",
"start": 25.12,
"end": 25.36
},
{
"word": "taking,",
"start": 25.36,
"end": 25.74
},
{
"word": "talking",
"start": 26.12,
"end": 27.12
},
{
"word": "alongside",
"start": 27.12,
"end": 27.64
},
{
"word": "a",
"start": 27.64,
"end": 27.88
},
{
"word": "video.",
"start": 27.88,
"end": 28.16
},
{
"word": "The",
"start": 28.16,
"end": 28.92
},
{
"word": "video",
"start": 28.92,
"end": 29.18
},
{
"word": "is",
"start": 29.18,
"end": 29.36
},
{
"word": "constrained",
"start": 29.36,
"end": 29.76
},
{
"word": "within",
"start": 29.76,
"end": 30.14
},
{
"word": "the",
"start": 30.14,
"end": 30.32
},
{
"word": "red",
"start": 30.32,
"end": 30.48
},
{
"word": "square.",
"start": 30.48,
"end": 30.9
},
{
"word": "Notice",
"start": 31.26,
"end": 31.44
},
{
"word": "how",
"start": 31.44,
"end": 31.74
},
{
"word": "the",
"start": 31.74,
"end": 31.92
},
{
"word": "video",
"start": 31.92,
"end": 32.14
},
{
"word": "stops",
"start": 32.14,
"end": 32.44
},
{
"word": "immediately",
"start": 32.44,
"end": 32.94
},
{
"word": "when",
"start": 32.94,
"end": 33.36
},
{
"word": "we",
"start": 33.36,
"end": 33.54
},
{
"word": "make",
"start": 33.54,
"end": 33.74
},
{
"word": "the",
"start": 33.74,
"end": 33.94
},
{
"word": "transition",
"start": 33.94,
"end": 34.38
},
{
"word": "to",
"start": 34.38,
"end": 34.68
},
{
"word": "the",
"start": 34.68,
"end": 34.8
},
{
"word": "next",
"start": 34.8,
"end": 35.02
},
{
"word": "slide.",
"start": 35.02,
"end": 35.48
},
{
"word": "I",
"start": 37.18,
"end": 37.72
},
{
"word": "will",
"start": 37.72,
"end": 37.78
},
{
"word": "continue",
"start": 37.78,
"end": 38.08
},
{
"word": "to",
"start": 38.08,
"end": 38.32
},
{
"word": "talk",
"start": 38.32,
"end": 38.56
},
{
"word": "without",
"start": 38.56,
"end": 38.88
},
{
"word": "pause,",
"start": 38.88,
"end": 39.24
},
{
"word": "but",
"start": 39.46,
"end": 39.56
},
{
"word": "in",
"start": 39.56,
"end": 39.68
},
{
"word": "the",
"start": 39.68,
"end": 39.74
},
{
"word": "finished",
"start": 39.74,
"end": 39.98
},
{
"word": "recording",
"start": 39.98,
"end": 40.46
},
{
"word": "there",
"start": 40.46,
"end": 41.18
},
{
"word": "will",
"start": 41.18,
"end": 41.36
},
{
"word": "be",
"start": 41.36,
"end": 41.54
},
{
"word": "a",
"start": 41.54,
"end": 41.64
},
{
"word": "pause",
"start": 41.64,
"end": 41.92
},
{
"word": "before",
"start": 41.92,
"end": 42.28
},
{
"word": "the",
"start": 42.28,
"end": 42.5
},
{
"word": "narration",
"start": 42.5,
"end": 43.0
},
{
"word": "continues.",
"start": 43.0,
"end": 43.64
},
{
"word": "Now",
"start": 44.38,
"end": 44.52
},
{
"word": "a",
"start": 44.52,
"end": 44.68
},
{
"word": "video",
"start": 44.68,
"end": 44.9
},
{
"word": "will",
"start": 44.9,
"end": 45.08
},
{
"word": "play",
"start": 45.08,
"end": 45.36
},
{
"word": "that",
"start": 45.36,
"end": 45.76
},
{
"word": "pauses",
"start": 45.76,
"end": 46.52
},
{
"word": "the",
"start": 46.52,
"end": 46.76
},
{
"word": "narration.",
"start": 46.76,
"end": 47.2
},
{
"word": "Notice",
"start": 48.64,
"end": 49.18
},
{
"word": "how",
"start": 49.18,
"end": 49.42
},
{
"word": "my",
"start": 49.42,
"end": 49.58
},
{
"word": "voice",
"start": 49.58,
"end": 49.8
},
{
"word": "continues",
"start": 49.8,
"end": 50.36
},
{
"word": "after",
"start": 50.36,
"end": 50.84
},
{
"word": "the",
"start": 50.84,
"end": 51.02
},
{
"word": "video",
"start": 51.02,
"end": 51.24
},
{
"word": "finished.",
"start": 51.24,
"end": 51.76
}
]
+39
View File
@@ -0,0 +1,39 @@
{
"talking_head": {
"source_file": "talking_head.mov",
"output_file": "talking_head_processed.mov",
"cutout": "talkinghead",
"always_visible": true,
"filter": [
{
"type": "chroma_key",
"color": [131, 177, 83],
"similarity": 0.04,
"blend": 0.025,
"spill": 0.05
},
{
"type": "mask",
"left": 0.05,
"right": 0.10
}
]
},
"gnommologo": {
"source_file": "Logo.mov",
"is_shared": true,
"cutout": "fullscreen",
"pause_narration": 0 ,
"take": 10,
"skip": 0
},
"Zoomin_MontageZoom": {
"description": "Montage zoom",
"source_file": "MontageZoom.mp4",
"output_file": "MontageZoom.mp4",
"pause_narration":3,
"cutout": "square",
"is_shared": true,
"filter": []
}
}
+31 -7
View File
@@ -1,11 +1,35 @@
{
"id": "VideoExample",
"name": "Example",
"description": "In this video, I demonstrate the Gnommo video editing pipeline - a code-first approach to creating presenter-mode videos from Keynote presentations.",
"footer": "Subscribe for more tutorials!\nTwitter: @example",
"resolution": [1920, 1080],
"fps": 30,
"talkinghead": {
"x": 50,
"y": 600,
"targetheight": 400
},
"defaultSlideType": "square",
"background_video": ""
"gnommo_scratch": null,
"defaultSlideType": "fullscreen",
"keynote_file": "media/example.key",
"transcript": "media/videos/talking_head.transcript.json",
"background": "shared_assets/solarpunk.png",
"videos": "media/videos/videos.json",
"slides": "media/slides/Example/slides.json",
"audio": "media/audio/audio.json",
"main_video": "talking_head",
"cutouts": {
"talkinghead": {
"x": "-10%",
"y": "40%",
"height": "60%"
},
"square": {
"x": "45%",
"y": "3%",
"width": "53%",
"height": "94%"
},
"fullscreen": {
"x": "0%",
"y": "0%",
"height": "100%"
}
}
}
-10
View File
@@ -1,10 +0,0 @@
{
"S1": {
"image": "S1.png",
"type": "square"
},
"S2": {
"image": "S2.png",
"type": "square"
}
}
-8
View File
@@ -1,8 +0,0 @@
t,word
0.00,Hello
0.30,world
0.60,[S1]
1.50,Second
1.80,slide
2.00,[S2]
2.50,End
1 t word
2 0.00 Hello
3 0.30 world
4 0.60 [S1]
5 1.50 Second
6 1.80 slide
7 2.00 [S2]
8 2.50 End
-6
View File
@@ -1,6 +0,0 @@
{
"talking_head": {
"file": "media/talking_head.mp4",
"preprocess": []
}
}