Loading...
Loading...
Compare original and translation side by side
| Is | Is not |
|---|---|
| Audio-energy-driven cam switching | Face / framing detection (no face_recognition, no MediaPipe) |
| Single-source audio (one cam's mic) | Multi-mic mix / per-speaker gating |
| Hard cuts, with optional PiP inset | Crossfades / opacity transitions / sliding animations |
| HyperFrames composition / |
| Coverage-aware (won't pick a cam outside its sidecar window) | Frame-accurate beat alignment / VAD-edge cuts |
| 支持功能 | 不支持功能 |
|---|---|
| 基于音频能量的机位切换 | 人脸/取景检测(无face_recognition,无MediaPipe) |
| 单源音频(单个机位的麦克风) | 多麦克风混音/按说话人门控 |
| 硬切,可选画中画嵌入 | 交叉淡入淡出/透明度过渡/滑动动画 |
基于 | HyperFrames合成 / |
| 覆盖范围感知(不会选择超出其副文件时间窗口的机位) | 帧级精准节拍对齐/基于语音活动检测(VAD)的边缘剪辑 |
.sync.jsonautoedit.pydelta_secondsoverlap_in_referencerender_cuts.pyrender_pip.pyffmpeg -itsoffsetdeltas[].sync.jsonautoedit.pydelta_secondsoverlap_in_referencerender_cuts.pyrender_pip.pydeltas[]ffmpeg -itsoffsetdelta_seconds[k]overlap_in_reference[k]t_ref - delta_k-infcam[k] - mean(other covered cams)rotationmin_dwell=8max_dwell=15greedy--switch-thresholdmin_dwell=4max_dwell=18delta_seconds[k]overlap_in_reference[k]t_ref - delta_k-infcam[k] - mean(other covered cams)rotationmin_dwell=8max_dwell=15greedy--switch-thresholdedl.jsonedl.json{
"_about": "EDL produced by wjs-editing-multicam/autoedit.py. Times in reference timeline. Render scripts apply ffmpeg -itsoffset deltas[k] per input.",
"_help": {
"inputs": "Original media paths, in cam-index order (cam 0, cam 1, ...).",
"deltas": "Per-cam delta_seconds from each sidecar. Render uses ffmpeg -itsoffset deltas[k].",
"duration_sec": "Output duration in reference timeline.",
"audio_source": "Cam index whose audio track becomes the master. Single source — not a mix.",
"coverage": "[start, end] per cam in reference timeline.",
"edl": "List of {cam, start, end} segments. Times are reference-timeline seconds."
},
"inputs": ["cam_a.MOV", "cam_b.MOV"],
"deltas": [0.0, 12.345],
"duration_sec": 4512,
"audio_source": 0,
"coverage": [[0.0, 4512.0], [12.345, 4499.835]],
"edl": [{"cam": 0, "start": 0, "end": 13}, {"cam": 1, "start": 13, "end": 28}, ...]
}autoedit.py_about_help{
"_about": "EDL produced by wjs-editing-multicam/autoedit.py. Times in reference timeline. Render scripts apply ffmpeg -itsoffset deltas[k] per input.",
"_help": {
"inputs": "Original media paths, in cam-index order (cam 0, cam 1, ...).",
"deltas": "Per-cam delta_seconds from each sidecar. Render uses ffmpeg -itsoffset deltas[k].",
"duration_sec": "Output duration in reference timeline.",
"audio_source": "Cam index whose audio track becomes the master. Single source — not a mix.",
"coverage": "[start, end] per cam in reference timeline.",
"edl": "List of {cam, start, end} segments. Times are reference-timeline seconds."
},
"inputs": ["cam_a.MOV", "cam_b.MOV"],
"deltas": [0.0, 12.345],
"duration_sec": 4512,
"audio_source": 0,
"coverage": [[0.0, 4512.0], [12.345, 4499.835]],
"edl": [{"cam": 0, "start": 0, "end": 13}, {"cam": 1, "start": 13, "end": 28}, ...]
}autoedit.py_about_help| Script | What it does |
|---|---|
| Hard cuts only. |
| Hard cuts + corner picture-in-picture overlay. Main cam = EDL row's |
-itsoffset deltas[k]| 脚本 | 功能 |
|---|---|
| 仅硬切效果。基于每个片段的 |
| 硬切效果 + 角落画中画叠加。主机位为EDL行中的 |
-itsoffset deltas[k]--mode rotation--mode greedy--min-dwellaudio_source--audio-source <cam-index>--mode rotation--mode greedy--min-dwellaudio_source--audio-source <cam-index>working_dir/
cam_a.MOV # ORIGINAL, untouched
cam_a.MOV.sync.json # from wjs-syncing-multicam
cam_b.MOV # ORIGINAL, untouched
cam_b.MOV.sync.json
edl.json # from autoedit.py
multicam_render.mp4 # from render_cuts.py OR render_pip.pyworking_dir/
cam_a.MOV # 原始文件,未修改
cam_a.MOV.sync.json # 来自wjs-syncing-multicam
cam_b.MOV # 原始文件,未修改
cam_b.MOV.sync.json
edl.json # 来自autoedit.py
multicam_render.mp4 # 来自render_cuts.py 或 render_pip.pyaudio_sourceautoedit.pyffmpeg -ss A -t 120--min-dwell--mode--audio-sourcepipdeltas[]autoedit.pyaudio_sourceffmpeg -ss A -t 120--min-dwell--mode--audio-sourcepipdeltas[]autoedit.py