auto-editor 24.13.1__tar.gz → 24.19.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {auto-editor-24.13.1/auto_editor.egg-info → auto_editor-24.19.1}/PKG-INFO +10 -35
- {auto-editor-24.13.1 → auto_editor-24.19.1}/README.md +9 -34
- auto_editor-24.19.1/auto_editor/__init__.py +2 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/formats/fcp11.py +1 -1
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/formats/fcp7.py +6 -6
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/formats/json.py +21 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/formats/shotcut.py +3 -3
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/make_layers.py +10 -3
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/preview.py +2 -1
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/render/audio.py +2 -2
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/render/video.py +1 -1
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/container.py +7 -7
- {auto-editor-24.13.1 → auto_editor-24.19.1/auto_editor.egg-info}/PKG-INFO +10 -35
- auto-editor-24.13.1/auto_editor/__init__.py +0 -2
- {auto-editor-24.13.1 → auto_editor-24.19.1}/LICENSE +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/ae-ffmpeg/ae_ffmpeg/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/ae-ffmpeg/ae_ffmpeg/py.typed +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/ae-ffmpeg/setup.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/__main__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/analyze.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/edit.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/ffwrapper.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/formats/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/formats/utils.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/help.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lang/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lang/json.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lang/libmath.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lang/palet.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lib/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lib/contracts.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lib/data_structs.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/lib/err.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/output.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/render/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/render/subtitle.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/desc.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/info.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/levels.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/palet.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/repl.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/subdump.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/subcommands/test.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/timeline.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/__init__.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/bar.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/chunks.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/cmdkw.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/encoder.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/func.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/log.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/utils/types.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/validate_input.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/vanparse.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor/wavfile.py +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor.egg-info/SOURCES.txt +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor.egg-info/dependency_links.txt +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor.egg-info/entry_points.txt +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor.egg-info/requires.txt +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/auto_editor.egg-info/top_level.txt +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/pyproject.toml +0 -0
- {auto-editor-24.13.1 → auto_editor-24.19.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: auto-editor
|
3
|
-
Version: 24.
|
3
|
+
Version: 24.19.1
|
4
4
|
Summary: Auto-Editor: Effort free video editing!
|
5
5
|
Author-email: WyattBlue <wyattblue@auto-editor.com>
|
6
6
|
License: Unlicense
|
@@ -60,10 +60,10 @@ The `--edit` option is how auto-editor makes automated cuts.
|
|
60
60
|
For example, edit out motionlessness in a video by setting `--edit motion`.
|
61
61
|
|
62
62
|
```
|
63
|
-
# cut out sections where
|
64
|
-
auto-editor example.mp4 --edit motion:threshold=
|
63
|
+
# cut out sections where the total motion is less than 2%.
|
64
|
+
auto-editor example.mp4 --edit motion:threshold=0.02
|
65
65
|
|
66
|
-
#
|
66
|
+
# `--edit audio:threshold=0.04,stream=all` is used by defaut.
|
67
67
|
auto-editor example.mp4
|
68
68
|
|
69
69
|
# Different tracks can be set with different attribute.
|
@@ -73,34 +73,14 @@ auto-editor multi-track.mov --edit "(or audio:stream=0 audio:threshold=10%,strea
|
|
73
73
|
Different editing methods can be used together.
|
74
74
|
```
|
75
75
|
# 'threshold' is always the first argument for edit-method objects
|
76
|
-
auto-editor example.mp4 --edit "(or audio:
|
76
|
+
auto-editor example.mp4 --edit "(or audio:0.03 motion:0.06)"
|
77
77
|
```
|
78
78
|
|
79
79
|
You can also use `dB` unit, a volume unit familiar to video-editors (case sensitive):
|
80
80
|
```
|
81
|
-
auto-editor example.mp4 --edit audio
|
81
|
+
auto-editor example.mp4 --edit audio:-19dB
|
82
82
|
auto-editor example.mp4 --edit audio:-7dB
|
83
83
|
auto-editor example.mp4 --edit motion:-19dB
|
84
|
-
|
85
|
-
# The `dB` unit is a just a macro that expands into an S-expression:
|
86
|
-
# '-19dB
|
87
|
-
# > '(pow 10 (/ -19 20))
|
88
|
-
# (eval '(pow 10 (/ -19 20)))
|
89
|
-
# > 0.11220184543019636
|
90
|
-
```
|
91
|
-
|
92
|
-
### Working With Multiple Audio Tracks
|
93
|
-
By default, only the first audio track will used for editing (track 0). You can change this with these commands.
|
94
|
-
|
95
|
-
Use all audio tracks for editing:
|
96
|
-
```
|
97
|
-
auto-editor multi-track.mov --edit audio:stream=all
|
98
|
-
```
|
99
|
-
|
100
|
-
Use only the second, fourth, and sixth audio track:
|
101
|
-
```
|
102
|
-
# track numbers start at 0
|
103
|
-
auto-editor so-many-tracks.mp4 --edit "(or audio:stream=1 audio:stream=3 audio:stream=5)"
|
104
84
|
```
|
105
85
|
|
106
86
|
### See What Auto-Editor Cuts Out
|
@@ -119,12 +99,10 @@ auto-editor example.mp4 --export premiere
|
|
119
99
|
```
|
120
100
|
|
121
101
|
Auto-Editor can also export to:
|
122
|
-
|
123
102
|
- DaVinci Resolve with `--export resolve`
|
124
103
|
- Final Cut Pro with `--export final-cut-pro`
|
125
104
|
- ShotCut with `--export shotcut`
|
126
|
-
|
127
|
-
Other editors, like Sony Vegas, can understand the `premiere` format. If your favorite editor doesn't, you can use ` --export clip-sequence` which creates many video clips that can be imported and manipulated like normal.
|
105
|
+
- Individual media clips with `--export clip-sequence`
|
128
106
|
|
129
107
|
### Naming Timelines
|
130
108
|
By default, auto-editor will name the timeline to "Auto-Editor Media Group" if the export supports naming.
|
@@ -188,14 +166,11 @@ List all available options:
|
|
188
166
|
auto-editor --help
|
189
167
|
```
|
190
168
|
|
191
|
-
Use `--help` with a specific option
|
169
|
+
Use `--help` with a specific option to learn more about it:
|
192
170
|
|
193
171
|
```
|
194
|
-
auto-editor
|
195
|
-
|
196
|
-
|
197
|
-
default: 1.0
|
198
|
-
Scale the output video's resolution by NUM factor
|
172
|
+
auto-editor -c:v --help
|
173
|
+
auto-editor --margin --help
|
199
174
|
```
|
200
175
|
|
201
176
|
<h3 align="center">Auto-Editor is available on all major platforms</h3>
|
@@ -43,10 +43,10 @@ The `--edit` option is how auto-editor makes automated cuts.
|
|
43
43
|
For example, edit out motionlessness in a video by setting `--edit motion`.
|
44
44
|
|
45
45
|
```
|
46
|
-
# cut out sections where
|
47
|
-
auto-editor example.mp4 --edit motion:threshold=
|
46
|
+
# cut out sections where the total motion is less than 2%.
|
47
|
+
auto-editor example.mp4 --edit motion:threshold=0.02
|
48
48
|
|
49
|
-
#
|
49
|
+
# `--edit audio:threshold=0.04,stream=all` is used by defaut.
|
50
50
|
auto-editor example.mp4
|
51
51
|
|
52
52
|
# Different tracks can be set with different attribute.
|
@@ -56,34 +56,14 @@ auto-editor multi-track.mov --edit "(or audio:stream=0 audio:threshold=10%,strea
|
|
56
56
|
Different editing methods can be used together.
|
57
57
|
```
|
58
58
|
# 'threshold' is always the first argument for edit-method objects
|
59
|
-
auto-editor example.mp4 --edit "(or audio:
|
59
|
+
auto-editor example.mp4 --edit "(or audio:0.03 motion:0.06)"
|
60
60
|
```
|
61
61
|
|
62
62
|
You can also use `dB` unit, a volume unit familiar to video-editors (case sensitive):
|
63
63
|
```
|
64
|
-
auto-editor example.mp4 --edit audio
|
64
|
+
auto-editor example.mp4 --edit audio:-19dB
|
65
65
|
auto-editor example.mp4 --edit audio:-7dB
|
66
66
|
auto-editor example.mp4 --edit motion:-19dB
|
67
|
-
|
68
|
-
# The `dB` unit is a just a macro that expands into an S-expression:
|
69
|
-
# '-19dB
|
70
|
-
# > '(pow 10 (/ -19 20))
|
71
|
-
# (eval '(pow 10 (/ -19 20)))
|
72
|
-
# > 0.11220184543019636
|
73
|
-
```
|
74
|
-
|
75
|
-
### Working With Multiple Audio Tracks
|
76
|
-
By default, only the first audio track will used for editing (track 0). You can change this with these commands.
|
77
|
-
|
78
|
-
Use all audio tracks for editing:
|
79
|
-
```
|
80
|
-
auto-editor multi-track.mov --edit audio:stream=all
|
81
|
-
```
|
82
|
-
|
83
|
-
Use only the second, fourth, and sixth audio track:
|
84
|
-
```
|
85
|
-
# track numbers start at 0
|
86
|
-
auto-editor so-many-tracks.mp4 --edit "(or audio:stream=1 audio:stream=3 audio:stream=5)"
|
87
67
|
```
|
88
68
|
|
89
69
|
### See What Auto-Editor Cuts Out
|
@@ -102,12 +82,10 @@ auto-editor example.mp4 --export premiere
|
|
102
82
|
```
|
103
83
|
|
104
84
|
Auto-Editor can also export to:
|
105
|
-
|
106
85
|
- DaVinci Resolve with `--export resolve`
|
107
86
|
- Final Cut Pro with `--export final-cut-pro`
|
108
87
|
- ShotCut with `--export shotcut`
|
109
|
-
|
110
|
-
Other editors, like Sony Vegas, can understand the `premiere` format. If your favorite editor doesn't, you can use ` --export clip-sequence` which creates many video clips that can be imported and manipulated like normal.
|
88
|
+
- Individual media clips with `--export clip-sequence`
|
111
89
|
|
112
90
|
### Naming Timelines
|
113
91
|
By default, auto-editor will name the timeline to "Auto-Editor Media Group" if the export supports naming.
|
@@ -171,14 +149,11 @@ List all available options:
|
|
171
149
|
auto-editor --help
|
172
150
|
```
|
173
151
|
|
174
|
-
Use `--help` with a specific option
|
152
|
+
Use `--help` with a specific option to learn more about it:
|
175
153
|
|
176
154
|
```
|
177
|
-
auto-editor
|
178
|
-
|
179
|
-
|
180
|
-
default: 1.0
|
181
|
-
Scale the output video's resolution by NUM factor
|
155
|
+
auto-editor -c:v --help
|
156
|
+
auto-editor --margin --help
|
182
157
|
```
|
183
158
|
|
184
159
|
<h3 align="center">Auto-Editor is available on all major platforms</h3>
|
@@ -140,7 +140,7 @@ def fcp11_write_xml(
|
|
140
140
|
"ref": ref,
|
141
141
|
"offset": fraction(clip.start),
|
142
142
|
"duration": fraction(clip.dur),
|
143
|
-
"start": fraction(
|
143
|
+
"start": fraction(clip.offset),
|
144
144
|
"tcFormat": "NDF",
|
145
145
|
}
|
146
146
|
asset = SubElement(spine, "asset-clip", clip_properties)
|
@@ -296,7 +296,7 @@ def fcp7_read_xml(path: str, ffmpeg: FFmpeg, log: Log) -> v3:
|
|
296
296
|
|
297
297
|
start = clipitem["start"]
|
298
298
|
dur = clipitem["end"] - start
|
299
|
-
offset =
|
299
|
+
offset = clipitem["in"]
|
300
300
|
|
301
301
|
vobjs[t].append(
|
302
302
|
TlVideo(start, dur, sources[file_id], offset, speed, stream=0)
|
@@ -324,7 +324,7 @@ def fcp7_read_xml(path: str, ffmpeg: FFmpeg, log: Log) -> v3:
|
|
324
324
|
|
325
325
|
start = clipitem["start"]
|
326
326
|
dur = clipitem["end"] - start
|
327
|
-
offset =
|
327
|
+
offset = clipitem["in"]
|
328
328
|
|
329
329
|
aobjs[t].append(
|
330
330
|
TlAudio(
|
@@ -414,8 +414,8 @@ def fcp7_write_xml(name: str, output: str, tl: v3, log: Log) -> None:
|
|
414
414
|
|
415
415
|
_start = f"{clip.start}"
|
416
416
|
_end = f"{clip.start + clip.dur}"
|
417
|
-
_in = f"{
|
418
|
-
_out = f"{
|
417
|
+
_in = f"{clip.offset}"
|
418
|
+
_out = f"{clip.offset + clip.dur}"
|
419
419
|
|
420
420
|
clipitem = ET.SubElement(track, "clipitem", id=f"clipitem-{j+1}")
|
421
421
|
ET.SubElement(clipitem, "name").text = src.path.stem
|
@@ -473,8 +473,8 @@ def fcp7_write_xml(name: str, output: str, tl: v3, log: Log) -> None:
|
|
473
473
|
|
474
474
|
_start = f"{aclip.start}"
|
475
475
|
_end = f"{aclip.start + aclip.dur}"
|
476
|
-
_in = f"{
|
477
|
-
_out = f"{
|
476
|
+
_in = f"{aclip.offset}"
|
477
|
+
_out = f"{aclip.offset + aclip.dur}"
|
478
478
|
|
479
479
|
if not src.videos:
|
480
480
|
clip_item_num = j + 1
|
@@ -173,6 +173,27 @@ def read_v1(tl: Any, log: Log) -> v3:
|
|
173
173
|
vtl: VSpace = []
|
174
174
|
atl: ASpace = [[] for _ in range(len(src.audios))]
|
175
175
|
|
176
|
+
# Verify chunks
|
177
|
+
last_end: int | None = None
|
178
|
+
if type(chunks) is not list:
|
179
|
+
log.error("chunks key must be an array")
|
180
|
+
|
181
|
+
for i, chunk in enumerate(chunks):
|
182
|
+
if type(chunk) is not list or len(chunk) != 3:
|
183
|
+
log.error(f"Invalid chunk at chunk {i}")
|
184
|
+
if type(chunk[0]) is not int or chunk[0] < 0:
|
185
|
+
log.error(f"Invalid start at chunk {i}")
|
186
|
+
if type(chunk[1]) is not int or chunk[1] <= chunk[0]:
|
187
|
+
log.error(f"Invalid end at chunk {i}")
|
188
|
+
if type(chunk[2]) is not float or chunk[2] < 0.0 or chunk[2] > 99999.0:
|
189
|
+
log.error(f"Invalid speed at chunk {i}")
|
190
|
+
|
191
|
+
if i == 0 and chunk[0] != 0:
|
192
|
+
log.error("First chunk must start with 0")
|
193
|
+
if i != 0 and chunk[0] != last_end:
|
194
|
+
log.error(f"Invalid start at chunk {i}")
|
195
|
+
last_end = chunk[1]
|
196
|
+
|
176
197
|
for c in clipify(chunks, src):
|
177
198
|
if src.videos:
|
178
199
|
if len(vtl) == 0:
|
@@ -92,7 +92,7 @@ def shotcut_write_mlt(output: str, tl: v3) -> None:
|
|
92
92
|
|
93
93
|
for clip in clips:
|
94
94
|
src = clip.src
|
95
|
-
length = to_timecode((clip.offset
|
95
|
+
length = to_timecode((clip.offset + clip.dur) / tb, "standard")
|
96
96
|
|
97
97
|
if clip.speed == 1:
|
98
98
|
resource = f"{src.path}"
|
@@ -127,8 +127,8 @@ def shotcut_write_mlt(output: str, tl: v3) -> None:
|
|
127
127
|
|
128
128
|
producers = 0
|
129
129
|
for i, clip in enumerate(clips):
|
130
|
-
_in = to_timecode(clip.offset /
|
131
|
-
_out = to_timecode((clip.offset
|
130
|
+
_in = to_timecode(clip.offset / tb, "standard")
|
131
|
+
_out = to_timecode((clip.offset + clip.dur) / tb, "standard")
|
132
132
|
|
133
133
|
tag_name = f"chain{i}"
|
134
134
|
if clip.speed != 1:
|
@@ -42,7 +42,7 @@ def clipify(chunks: Chunks, src: FileInfo, start: int = 0) -> list[Clip]:
|
|
42
42
|
if dur == 0:
|
43
43
|
continue
|
44
44
|
|
45
|
-
offset = chunk[0]
|
45
|
+
offset = int(chunk[0] / chunk[2])
|
46
46
|
|
47
47
|
if not (clips and clips[-1].start == round(start)):
|
48
48
|
clips.append(Clip(start, dur, offset, chunk[2], src))
|
@@ -125,7 +125,14 @@ def make_timeline(
|
|
125
125
|
if inp is None:
|
126
126
|
tb, res = Fraction(30), (1920, 1080)
|
127
127
|
else:
|
128
|
-
tb = inp.get_fps() if args.frame_rate is None else args.frame_rate
|
128
|
+
tb = round(inp.get_fps() if args.frame_rate is None else args.frame_rate, 2)
|
129
|
+
ntsc = Fraction(30_000, 1001)
|
130
|
+
film_ntsc = Fraction(24_000, 1001)
|
131
|
+
if tb == round(ntsc, 2):
|
132
|
+
tb = ntsc
|
133
|
+
elif tb == round(film_ntsc, 2):
|
134
|
+
tb = film_ntsc
|
135
|
+
|
129
136
|
res = inp.get_res() if args.resolution is None else args.resolution
|
130
137
|
|
131
138
|
try:
|
@@ -228,7 +235,7 @@ def make_timeline(
|
|
228
235
|
if dur == 0:
|
229
236
|
continue
|
230
237
|
|
231
|
-
offset = chunk[1]
|
238
|
+
offset = int(chunk[1] / chunk[3])
|
232
239
|
|
233
240
|
if not (clips and clips[-1].start == round(start)):
|
234
241
|
clips.append(Clip(start, dur, offset, chunk[3], chunk[0]))
|
@@ -32,7 +32,8 @@ def all_cuts(tl: v3, in_len: int) -> list[int]:
|
|
32
32
|
oe: list[tuple[int, int]] = []
|
33
33
|
|
34
34
|
for clip in tl.a[0]:
|
35
|
-
|
35
|
+
old_offset = clip.offset * clip.speed
|
36
|
+
oe.append((round(old_offset * clip.speed), round(old_offset + clip.dur)))
|
36
37
|
|
37
38
|
cut_lens = []
|
38
39
|
i = 0
|
@@ -208,8 +208,8 @@ def make_new_audio(
|
|
208
208
|
del leng
|
209
209
|
|
210
210
|
samp_list = samples[(clip.src, clip.stream)]
|
211
|
-
samp_start = clip.offset * sr
|
212
|
-
samp_end = round((clip.offset + clip.dur * clip.speed
|
211
|
+
samp_start = round(clip.offset * clip.speed * sr / tb)
|
212
|
+
samp_end = round((clip.offset + clip.dur) * clip.speed * sr / tb)
|
213
213
|
if samp_end > len(samp_list):
|
214
214
|
samp_end = len(samp_list)
|
215
215
|
|
@@ -244,7 +244,7 @@ def render_av(
|
|
244
244
|
for lobj in layer:
|
245
245
|
if isinstance(lobj, TlVideo):
|
246
246
|
if index >= lobj.start and index < (lobj.start + lobj.dur):
|
247
|
-
_i = lobj.offset +
|
247
|
+
_i = round((lobj.offset + index - lobj.start) * lobj.speed)
|
248
248
|
obj_list.append(VideoFrame(_i, lobj.src))
|
249
249
|
elif index >= lobj.start and index < lobj.start + lobj.dur:
|
250
250
|
obj_list.append(lobj)
|
@@ -53,7 +53,7 @@ hevc_en = ["hevc", "libx265", "hevc_videotoolbox", "hevc_amf", "hevc_nvenc", "he
|
|
53
53
|
av1_en = ["av1", "libaom-av1", "av1_nvenc", "av1_amf"]
|
54
54
|
prores_en = ["prores", "prores_videotoolbox", "prores_aw", "prores_ks"]
|
55
55
|
aac_en = ["aac", "aac_at", "libfdk_aac"]
|
56
|
-
|
56
|
+
opus_en = ["opus", "libopus"]
|
57
57
|
|
58
58
|
h265: DictContainer = {
|
59
59
|
"allow_video": True,
|
@@ -80,7 +80,7 @@ mp4: DictContainer = {
|
|
80
80
|
"allow_subtitle": True,
|
81
81
|
"allow_image": True,
|
82
82
|
"vcodecs": h264_en + hevc_en + av1_en + ["vp9", "mpeg4", "mpeg2video", "mjpeg"],
|
83
|
-
"acodecs": aac_en + ["mp3", "
|
83
|
+
"acodecs": aac_en + opus_en + ["mp3", "flac", "vorbis", "libvorbis", "ac3", "mp2"],
|
84
84
|
"vstrict": True,
|
85
85
|
}
|
86
86
|
ogg: DictContainer = {
|
@@ -88,16 +88,16 @@ ogg: DictContainer = {
|
|
88
88
|
"allow_audio": True,
|
89
89
|
"allow_subtitle": True,
|
90
90
|
"vcodecs": ["libtheora", "theora"],
|
91
|
-
"acodecs": ["libvorbis", "vorbis", "flac", "
|
91
|
+
"acodecs": opus_en + ["libvorbis", "vorbis", "flac", "speex"],
|
92
92
|
"vstrict": True,
|
93
93
|
}
|
94
94
|
|
95
95
|
mka_audio = (
|
96
96
|
["libvorbis", "vorbis"]
|
97
97
|
+ aac_en
|
98
|
+
+ opus_en
|
98
99
|
+ [
|
99
100
|
"mp3",
|
100
|
-
"opus",
|
101
101
|
"flac",
|
102
102
|
"ac3",
|
103
103
|
"mp2",
|
@@ -172,11 +172,11 @@ containers: dict[str, DictContainer] = {
|
|
172
172
|
},
|
173
173
|
"opus": {
|
174
174
|
"allow_audio": True,
|
175
|
-
"acodecs": ["
|
175
|
+
"acodecs": opus_en + ["flac", "libvorbis", "vorbis", "speex"],
|
176
176
|
},
|
177
177
|
"oga": {
|
178
178
|
"allow_audio": True,
|
179
|
-
"acodecs": ["flac", "libvorbis", "vorbis", "
|
179
|
+
"acodecs": opus_en + ["flac", "libvorbis", "vorbis", "speex"],
|
180
180
|
},
|
181
181
|
"flac": {
|
182
182
|
"allow_audio": True,
|
@@ -188,7 +188,7 @@ containers: dict[str, DictContainer] = {
|
|
188
188
|
"allow_audio": True,
|
189
189
|
"allow_subtitle": True,
|
190
190
|
"vcodecs": ["vp9", "vp8"] + av1_en,
|
191
|
-
"acodecs": ["
|
191
|
+
"acodecs": opus_en + ["vorbis", "libvorbis"],
|
192
192
|
"scodecs": ["webvtt"],
|
193
193
|
"vstrict": True,
|
194
194
|
"sstrict": True,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: auto-editor
|
3
|
-
Version: 24.
|
3
|
+
Version: 24.19.1
|
4
4
|
Summary: Auto-Editor: Effort free video editing!
|
5
5
|
Author-email: WyattBlue <wyattblue@auto-editor.com>
|
6
6
|
License: Unlicense
|
@@ -60,10 +60,10 @@ The `--edit` option is how auto-editor makes automated cuts.
|
|
60
60
|
For example, edit out motionlessness in a video by setting `--edit motion`.
|
61
61
|
|
62
62
|
```
|
63
|
-
# cut out sections where
|
64
|
-
auto-editor example.mp4 --edit motion:threshold=
|
63
|
+
# cut out sections where the total motion is less than 2%.
|
64
|
+
auto-editor example.mp4 --edit motion:threshold=0.02
|
65
65
|
|
66
|
-
#
|
66
|
+
# `--edit audio:threshold=0.04,stream=all` is used by defaut.
|
67
67
|
auto-editor example.mp4
|
68
68
|
|
69
69
|
# Different tracks can be set with different attribute.
|
@@ -73,34 +73,14 @@ auto-editor multi-track.mov --edit "(or audio:stream=0 audio:threshold=10%,strea
|
|
73
73
|
Different editing methods can be used together.
|
74
74
|
```
|
75
75
|
# 'threshold' is always the first argument for edit-method objects
|
76
|
-
auto-editor example.mp4 --edit "(or audio:
|
76
|
+
auto-editor example.mp4 --edit "(or audio:0.03 motion:0.06)"
|
77
77
|
```
|
78
78
|
|
79
79
|
You can also use `dB` unit, a volume unit familiar to video-editors (case sensitive):
|
80
80
|
```
|
81
|
-
auto-editor example.mp4 --edit audio
|
81
|
+
auto-editor example.mp4 --edit audio:-19dB
|
82
82
|
auto-editor example.mp4 --edit audio:-7dB
|
83
83
|
auto-editor example.mp4 --edit motion:-19dB
|
84
|
-
|
85
|
-
# The `dB` unit is a just a macro that expands into an S-expression:
|
86
|
-
# '-19dB
|
87
|
-
# > '(pow 10 (/ -19 20))
|
88
|
-
# (eval '(pow 10 (/ -19 20)))
|
89
|
-
# > 0.11220184543019636
|
90
|
-
```
|
91
|
-
|
92
|
-
### Working With Multiple Audio Tracks
|
93
|
-
By default, only the first audio track will used for editing (track 0). You can change this with these commands.
|
94
|
-
|
95
|
-
Use all audio tracks for editing:
|
96
|
-
```
|
97
|
-
auto-editor multi-track.mov --edit audio:stream=all
|
98
|
-
```
|
99
|
-
|
100
|
-
Use only the second, fourth, and sixth audio track:
|
101
|
-
```
|
102
|
-
# track numbers start at 0
|
103
|
-
auto-editor so-many-tracks.mp4 --edit "(or audio:stream=1 audio:stream=3 audio:stream=5)"
|
104
84
|
```
|
105
85
|
|
106
86
|
### See What Auto-Editor Cuts Out
|
@@ -119,12 +99,10 @@ auto-editor example.mp4 --export premiere
|
|
119
99
|
```
|
120
100
|
|
121
101
|
Auto-Editor can also export to:
|
122
|
-
|
123
102
|
- DaVinci Resolve with `--export resolve`
|
124
103
|
- Final Cut Pro with `--export final-cut-pro`
|
125
104
|
- ShotCut with `--export shotcut`
|
126
|
-
|
127
|
-
Other editors, like Sony Vegas, can understand the `premiere` format. If your favorite editor doesn't, you can use ` --export clip-sequence` which creates many video clips that can be imported and manipulated like normal.
|
105
|
+
- Individual media clips with `--export clip-sequence`
|
128
106
|
|
129
107
|
### Naming Timelines
|
130
108
|
By default, auto-editor will name the timeline to "Auto-Editor Media Group" if the export supports naming.
|
@@ -188,14 +166,11 @@ List all available options:
|
|
188
166
|
auto-editor --help
|
189
167
|
```
|
190
168
|
|
191
|
-
Use `--help` with a specific option
|
169
|
+
Use `--help` with a specific option to learn more about it:
|
192
170
|
|
193
171
|
```
|
194
|
-
auto-editor
|
195
|
-
|
196
|
-
|
197
|
-
default: 1.0
|
198
|
-
Scale the output video's resolution by NUM factor
|
172
|
+
auto-editor -c:v --help
|
173
|
+
auto-editor --margin --help
|
199
174
|
```
|
200
175
|
|
201
176
|
<h3 align="center">Auto-Editor is available on all major platforms</h3>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|