[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-index":3,"doc-en-audio_sync_and_multicam":54},{"zh":4,"en":30},[5,9,12,15,18,21,24,27],{"slug":6,"title":7,"lang":8},"快速开始","快速开始 — Oak Video Editor Manual","zh",{"slug":10,"title":11,"lang":8},"基本功能","基本功能 — Oak Video Editor Manual",{"slug":13,"title":14,"lang":8},"节点","节点 — Oak Video Editor Manual",{"slug":16,"title":17,"lang":8},"LUT","LUT — Oak Video Editor Manual",{"slug":19,"title":20,"lang":8},"直方图","直方图 — Oak Video Editor Manual",{"slug":22,"title":23,"lang":8},"代理剪辑","代理剪辑 — Oak Video Editor Manual",{"slug":25,"title":26,"lang":8},"音频同步和多机位剪辑","音频同步和多机位剪辑 — Oak Video Editor Manual",{"slug":28,"title":29,"lang":8},"index","Oak Video Editor 使用手册 — Oak Video Editor Manual",[31,35,38,41,43,46,49,52],{"slug":32,"title":33,"lang":34},"quick_start","Quick Start — Oak Video Editor Manual","en",{"slug":36,"title":37,"lang":34},"basic_features","Basic Features — Oak Video Editor Manual",{"slug":39,"title":40,"lang":34},"nodes","Nodes — Oak Video Editor Manual",{"slug":42,"title":17,"lang":34},"lut",{"slug":44,"title":45,"lang":34},"histogram","Histogram — Oak Video Editor Manual",{"slug":47,"title":48,"lang":34},"proxy_editing","Proxy Editing — Oak Video Editor Manual",{"slug":50,"title":51,"lang":34},"audio_sync_and_multicam","Audio Sync and Multicam Editing — Oak Video Editor Manual",{"slug":28,"title":53,"lang":34},"Oak Video Editor User Manual — Oak Video Editor Manual",{"slug":50,"title":51,"lang":34,"html":55},"\u003C!DOCTYPE html>\n\n\u003Chtml lang=\"en\" data-content_root=\".\u002F\">\n  \u003Chead>\n    \u003Cmeta charset=\"utf-8\" \u002F>\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \u002F>\u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \u002F>\n\n    \u003Ctitle>Audio Sync and Multicam Editing &#8212; Oak Video Editor Manual\u003C\u002Ftitle>\n    \u003Clink rel=\"stylesheet\" type=\"text\u002Fcss\" href=\"_static\u002Fpygments.css?v=5ecbeea2\" \u002F>\n    \u003Clink rel=\"stylesheet\" type=\"text\u002Fcss\" href=\"_static\u002Fbasic.css?v=b08954a9\" \u002F>\n    \u003Clink rel=\"stylesheet\" type=\"text\u002Fcss\" href=\"_static\u002Falabaster.css?v=27fed22d\" \u002F>\n    \u003Cscript src=\"_static\u002Fdocumentation_options.js?v=7f00635f\">\u003C\u002Fscript>\n    \u003Cscript src=\"_static\u002Fdoctools.js?v=fd6eb6e6\">\u003C\u002Fscript>\n    \u003Cscript src=\"_static\u002Fsphinx_highlight.js?v=6ffebe34\">\u003C\u002Fscript>\n    \u003Clink rel=\"index\" title=\"Index\" href=\"genindex.html\" \u002F>\n    \u003Clink rel=\"search\" title=\"Search\" href=\"search.html\" \u002F>\n    \u003Clink rel=\"prev\" title=\"Proxy Editing\" href=\"proxy_editing.html\" \u002F>\n   \n  \u003Clink rel=\"stylesheet\" href=\"_static\u002Fcustom.css\" type=\"text\u002Fcss\" \u002F>\n  \n\n  \n  \n\n  \u003C\u002Fhead>\u003Cbody>\n  \n\n    \u003Cdiv class=\"document\">\n      \u003Cdiv class=\"documentwrapper\">\n        \u003Cdiv class=\"bodywrapper\">\n          \n\n          \u003Cdiv class=\"body\" role=\"main\">\n            \n  \u003Csection id=\"audio-sync-and-multicam-editing\">\n\u003Ch1>Audio Sync and Multicam Editing\u003Ca class=\"headerlink\" href=\"#audio-sync-and-multicam-editing\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh1>\n\u003Cp>Oak provides audio-sync tools based on timecode and waveforms, as well as basic multicam editing support.\u003C\u002Fp>\n\u003Csection id=\"audio-sync\">\n\u003Ch2>Audio Sync\u003Ca class=\"headerlink\" href=\"#audio-sync\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh2>\n\u003Csection id=\"synchronize-by-source-time\">\n\u003Ch3>Synchronize by Source Time\u003Ca class=\"headerlink\" href=\"#synchronize-by-source-time\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>Use case: different cameras or recorders share the same source timecode \u002F BWF time reference.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Operation: select multiple clips on the timeline → right-click → \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Synchronize\u003C\u002Fspan> \u003Cspan class=\"pre\">by\u003C\u002Fspan> \u003Cspan class=\"pre\">Source\u003C\u002Fspan> \u003Cspan class=\"pre\">Time\u003C\u002Fspan>\u003C\u002Fcode>.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Oak reads each footage item’s \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">source_start_time\u003C\u002Fspan>\u003C\u002Fcode>, calculates the time offset, and moves the clips to the corresponding positions.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fsection>\n\u003Csection id=\"synchronize-by-waveform\">\n\u003Ch3>Synchronize by Waveform\u003Ca class=\"headerlink\" href=\"#synchronize-by-waveform\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>Use case: no reliable timecode, but the audio content is the same across sources.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Operation: select two or more clips with cached waveforms on the timeline → right-click → \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Synchronize\u003C\u002Fspan> \u003Cspan class=\"pre\">by\u003C\u002Fspan> \u003Cspan class=\"pre\">Waveform\u003C\u002Fspan>\u003C\u002Fcode> (shortcut \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Ctrl+Shift+W\u003C\u002Fspan>\u003C\u002Fcode>).\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>The algorithm extracts an RMS envelope and estimates the offset using normalized cross-correlation.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Window size is 50 ms; maximum supported offset is 10 minutes.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fsection>\n\u003Csection id=\"timecode-bwf-auto-detection\">\n\u003Ch3>Timecode \u002F BWF Auto-Detection\u003Ca class=\"headerlink\" href=\"#timecode-bwf-auto-detection\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>When footage is imported, \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">FFmpegDecoder\u003C\u002Fspan>\u003C\u002Fcode> automatically probes:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">timecode\u003C\u002Fspan>\u003C\u002Fcode>: LTC \u002F VITC timecode strings.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">time_reference\u003C\u002Fspan>\u003C\u002Fcode>: the BWF \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">bext\u003C\u002Fspan>\u003C\u002Fcode> chunk sample reference.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>Detected source start times are written to the footage’s \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">FootageDescription\u003C\u002Fspan>\u003C\u002Fcode> and saved with the project.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>If a file does not contain these metadata fields, \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Synchronize\u003C\u002Fspan> \u003Cspan class=\"pre\">by\u003C\u002Fspan> \u003Cspan class=\"pre\">Source\u003C\u002Fspan> \u003Cspan class=\"pre\">Time\u003C\u002Fspan>\u003C\u002Fcode> cannot be used.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fsection>\n\u003C\u002Fsection>\n\u003Csection id=\"multicam-editing\">\n\u003Ch2>Multicam Editing\u003Ca class=\"headerlink\" href=\"#multicam-editing\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Oak’s basic multicam feature treats the tracks inside a nested Sequence as different camera angles.\u003C\u002Fp>\n\u003Csection id=\"creating-a-multicam-clip\">\n\u003Ch3>Creating a Multicam Clip\u003Ca class=\"headerlink\" href=\"#creating-a-multicam-clip\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Col class=\"arabic simple\">\n\u003Cli>\u003Cp>Place each camera’s footage on a different track of the same Sequence and align them using the methods above.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>On the timeline, select the nested Sequence clip (its \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">connected_viewer\u003C\u002Fspan>\u003C\u002Fcode> must be a Sequence).\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Right-click → check \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Multi-Cam\u003C\u002Fspan>\u003C\u002Fcode>.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Oak creates a \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">MultiCamNode\u003C\u002Fspan>\u003C\u002Fcode>, rewires the Sequence output into it, and connects each track to \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">kSourcesInput\u003C\u002Fspan>\u003C\u002Fcode>.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003C\u002Fsection>\n\u003Csection id=\"switching-angles\">\n\u003Ch3>Switching Angles\u003Ca class=\"headerlink\" href=\"#switching-angles\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>Open the \u003Cstrong>Multicam\u003C\u002Fstrong> panel (hidden by default; open it from the \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Window\u003C\u002Fspan>\u003C\u002Fcode> menu) to see a grid of angle thumbnails.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Shortcuts:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cp>\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">1\u003C\u002Fspan>\u003C\u002Fcode>–\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">9\u003C\u002Fspan>\u003C\u002Fcode>: switch to the corresponding angle and split the clip at the playhead.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Ctrl+1\u003C\u002Fspan>\u003C\u002Fcode>–\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Ctrl+9\u003C\u002Fspan>\u003C\u002Fcode>: switch angle without splitting.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>Clicking a thumbnail in the Multicam panel also switches and splits.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Switching creates an undo command; press \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Ctrl+Z\u003C\u002Fspan>\u003C\u002Fcode> to undo.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fsection>\n\u003Csection id=\"multicam-output\">\n\u003Ch3>Multicam Output\u003Ca class=\"headerlink\" href=\"#multicam-output\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>\u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">MultiCamNode\u003C\u002Fspan>\u003C\u002Fcode>’s \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">kCurrentInput\u003C\u002Fspan>\u003C\u002Fcode> determines which angle is currently output.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>In preview mode, \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">RenderProcessor\u003C\u002Fspan>\u003C\u002Fcode> generates a \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">multicam_output\u003C\u002Fspan>\u003C\u002Fcode> attribute for \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">MulticamDisplay\u003C\u002Fspan>\u003C\u002Fcode> to show all angles; final output is still controlled by the currently selected angle.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fsection>\n\u003C\u002Fsection>\n\u003Csection id=\"limitations\">\n\u003Ch2>Limitations\u003Ca class=\"headerlink\" href=\"#limitations\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>There is no dedicated multicam sync wizard; you must first align the tracks inside a Sequence manually.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Only the simple \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">Sequence\u003C\u002Fspan> \u003Cspan class=\"pre\">→\u003C\u002Fspan> \u003Cspan class=\"pre\">MultiCamNode\u003C\u002Fspan>\u003C\u002Fcode> structure is supported.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>There is no cut-list export.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>The README roadmap lists “full multicam angle switching” as a 0.5 milestone, so the current implementation is still early.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Csection id=\"audio-sync-limitations\">\n\u003Ch3>Audio Sync Limitations\u003Ca class=\"headerlink\" href=\"#audio-sync-limitations\" title=\"Link to this heading\">¶\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul class=\"simple\">\n\u003Cli>\u003Cp>Waveform sync relies on cached regions of the \u003Ccode class=\"docutils literal notranslate\">\u003Cspan class=\"pre\">AudioWaveformCache\u003C\u002Fspan>\u003C\u002Fcode>; uncached regions are filled with zeros, which may reduce accuracy.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>There is no UI for manually entering or correcting source start times; detection is fully automatic.\u003C\u002Fp>\u003C\u002Fli>\n\u003Cli>\u003Cp>Only overall offset alignment is supported; stretch \u002F speed-change sync is not supported.\u003C\u002Fp>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fsection>\n\u003C\u002Fsection>\n\u003C\u002Fsection>\n\n\n          \u003C\u002Fdiv>\n          \n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"sphinxsidebar\" role=\"navigation\" aria-label=\"Main\">\n        \u003Cdiv class=\"sphinxsidebarwrapper\">\n\u003Ch1 class=\"logo\">\u003Ca href=\"index.html\">Oak Video Editor Manual\u003C\u002Fa>\u003C\u002Fh1>\n\n\n\n\n\n\n\n\n\u003Ch3>Navigation\u003C\u002Fh3>\n\u003Cul class=\"current\">\n\u003Cli class=\"toctree-l1\">\u003Ca class=\"reference internal\" href=\"quick_start.html\">Quick Start\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l1\">\u003Ca class=\"reference internal\" href=\"basic_features.html\">Basic Features\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l1\">\u003Ca class=\"reference internal\" href=\"nodes.html\">Nodes\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l1\">\u003Ca class=\"reference internal\" href=\"lut.html\">LUT\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l1\">\u003Ca class=\"reference internal\" href=\"histogram.html\">Histogram\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l1\">\u003Ca class=\"reference internal\" href=\"proxy_editing.html\">Proxy Editing\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l1 current\">\u003Ca class=\"current reference internal\" href=\"#\">Audio Sync and Multicam Editing\u003C\u002Fa>\u003Cul>\n\u003Cli class=\"toctree-l2\">\u003Ca class=\"reference internal\" href=\"#audio-sync\">Audio Sync\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l2\">\u003Ca class=\"reference internal\" href=\"#multicam-editing\">Multicam Editing\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli class=\"toctree-l2\">\u003Ca class=\"reference internal\" href=\"#limitations\">Limitations\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\u003Csearch id=\"searchbox\" style=\"display: none\" role=\"search\">\n  \u003Ch3 id=\"searchlabel\">Quick search\u003C\u002Fh3>\n    \u003Cdiv class=\"searchformwrapper\">\n    \u003Cform class=\"search\" action=\"search.html\" method=\"get\">\n      \u003Cinput type=\"text\" name=\"q\" aria-labelledby=\"searchlabel\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\"\u002F>\n      \u003Cinput type=\"submit\" value=\"Go\" \u002F>\n    \u003C\u002Fform>\n    \u003C\u002Fdiv>\n\u003C\u002Fsearch>\n\u003Cscript>document.getElementById('searchbox').style.display = \"block\"\u003C\u002Fscript>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"clearer\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"footer\">\n      &#169;2025, Oak Video Editor Community.\n      \n      |\n      Powered by \u003Ca href=\"https:\u002F\u002Fwww.sphinx-doc.org\u002F\">Sphinx 9.1.0\u003C\u002Fa>\n      &amp; \u003Ca href=\"https:\u002F\u002Falabaster.readthedocs.io\">Alabaster 1.0.0\u003C\u002Fa>\n      \n      |\n      \u003Ca href=\"_sources\u002Faudio_sync_and_multicam.rst.txt\"\n          rel=\"nofollow\">Page source\u003C\u002Fa>\n    \u003C\u002Fdiv>\n\n    \n\n    \n  \u003C\u002Fbody>\n\u003C\u002Fhtml>"]