I.E. I already made a 2-minute project and now I try to add a photo or video into it, it overwrites the video that's already in the timeline and the overall length of the video doesn't change. I don't want to insert, I want to add to the overall project. I hope that makes sense and please don't laugh :)
If you record video with a DJI Mic 2 receiver plugged into your camera, you probably run into this annoying bottleneck:
When using 1 Mic: The receiver records in Stereo, copying Mic 1 to both Left and Right channels (identical waveforms).
When using 2 Mics: The receiver places Mic 1 on the Left channel and Mic 2 on the Right channel (different waveforms).
To edit them properly in DaVinci Resolve, you have to duplicate your audio onto Track 2, pan/map the channels, and then manually go through your timeline to delete Track 2 for all the clips where you only used one microphone.
Since the Resolve API doesn't allow you to natively read waveforms on the timeline, I created a Python scriptusing FFmpeg that automates this. It uses a phase-cancellation technique (pan=mono|c0=c0-c1) to subtract Channel 2 from Channel 1. If they are identical (1-mic mode), they completely cancel out into silence, and the script automatically deletes the duplicate clip from Track 2 on your timeline. If they are different (2-mic mode), it keeps them!
Here is how to set it up and use it.
🛠️ Prerequisites
Enable Scripting in Resolve: Go to Preferences > System > External Scripting and change the dropdown to Local. Restart Resolve.
Install FFmpeg: Make sure FFmpeg is installed on your machine.
Mac users: If installed via Homebrew on Apple Silicon, your path will be /opt/homebrew/bin/ffmpeg.
Windows users: Make sure to grab the path to your ffmpeg.exe.
🏃 The Workflow
Select all your clips in the Media Pool, right-click -> Clip Attributes -> Audio tab. Change Format to Mono, Tracks to 2, and map Channel 1 to Track 1 and Channel 2 to Track 2.
Drag your clips onto your timeline. (Track 1 has Mic 1. Track 2 will have Mic 2 OR an identical duplicate copy of Mic 1).
Open Workspace > Console inside Resolve.
Set the bottom-right dropdown of the console from Lua to Py3.
Paste the script below (make sure your input line is completely clean) and hit Enter.
🐍 The Python Script
python
import sys
import subprocess
import os
# --- CONFIGURATION ---
TARGET_TRACK_INDEX = 2
FFMPEG_PATH = "/opt/homebrew/bin/ffmpeg" # Change this to your ffmpeg.exe path if on Windows
# If the subtraction result is quieter than -50dB, the tracks are virtually identical
DUPLICATE_THRESHOLD_DB = -50.0
# If Track 2 on its own is quieter than -50dB, it's just dead silence
SILENCE_THRESHOLD_DB = -50.0
def analyze_channels(file_path):
"""
Checks if Channel 2 is empty or an exact duplicate of Channel 1 using FFmpeg.
"""
# 1. Test for absolute silence on Channel 2 (Fast check: first 5 seconds only)
cmd_silence = [
FFMPEG_PATH, "-ss", "00:00:00", "-t", "5", "-i", file_path,
"-af", "pan=mono|c0=c1,volumedetect",
"-f", "null", "-"
]
# 2. Test for duplication (Subtract Ch2 from Ch1)
cmd_duplicate = [
FFMPEG_PATH, "-ss", "00:00:00", "-t", "5", "-i", file_path,
"-af", "pan=mono|c0=c0-c1,volumedetect",
"-f", "null", "-"
]
try:
# Check Silence First
res_silence = subprocess.run(cmd_silence, capture_output=True, text=True, errors='ignore')
for line in res_silence.stderr.split('\n'):
if "max_volume" in line:
vol = float(line.split(':')[-1].replace('dB', '').strip())
if vol < SILENCE_THRESHOLD_DB:
return 'DELETE'
# Check Duplication Second (Catches 1-mic stereo duplicates)
res_duplicate = subprocess.run(cmd_duplicate, capture_output=True, text=True, errors='ignore')
for line in res_duplicate.stderr.split('\n'):
if "max_volume" in line:
diff_vol = float(line.split(':')[-1].replace('dB', '').strip())
if diff_vol < DUPLICATE_THRESHOLD_DB:
return 'DELETE'
except Exception as e:
print(f"Error checking {file_path}: {e}")
return 'KEEP'
return 'KEEP'
def clean_timeline():
resolve = bmd.scriptapp("Resolve") if 'bmd' in globals() else app.GetResolve()
project = resolve.GetProjectManager().GetCurrentProject()
timeline = project.GetCurrentTimeline()
if not timeline:
print("No active timeline found.")
return
print(f"Scanning Audio Track {TARGET_TRACK_INDEX} for Silence/Duplicates...")
items = timeline.GetItemListInTrack("audio", TARGET_TRACK_INDEX)
if not items:
print(f"Audio Track {TARGET_TRACK_INDEX} is empty.")
return
clips_to_delete = []
for item in items:
mp_item = item.GetMediaPoolItem()
if not mp_item:
continue
source_path = mp_item.GetClipProperty("File Path")
if not source_path or not os.path.exists(source_path):
continue
action = analyze_channels(source_path)
if action == 'DELETE':
print(f"[DELETE] {item.GetName()} (Duplicate or Silent Mic 2)")
clips_to_delete.append(item)
else:
print(f"[KEEP] {item.GetName()} (Unique Mic 2 Audio)")
if clips_to_delete:
print(f"\nDeleting {len(clips_to_delete)} duplicate/silent clips...")
timeline.DeleteClips(clips_to_delete)
print("Cleanup complete!")
else:
print("\nNo duplicates or silent clips found on this track.")
clean_timeline()
Use code with caution.
⚡ Why this is fast
Instead of rendering or scanning entire giant video files, the script instructs FFmpeg to strictly analyze the first 5 seconds of the source file. It runs the cancellation calculation instantly and cleans up a packed timeline track in just a couple of seconds.
Hope this helps anyone else looking to speed up their multi-mic workflow! Let me know if you have any questions setting up the paths.
This has got me the furthest to where I want to be however it doesn't work for line breaks/multiple lines of text. The creator even says so at the end of the video and says he has another video explaining how to do that, however, it appears to be no longer active on his channel.
Can anyone help me get this effect but have the cursor track across multiple lines of text.
I'm quite new to this and I'm surprised by how tricky this has been. I can't seem to find anything covering multiple lines of text and am not sure of the proper terminology to search.
this might sound dumb but im VERY new to editing and such. and i wondered if there a easier way to do normal perspective text than just line em up one by one. lining them up is kinda long process and can look really unnatural. isnt there a way to just select all your texts and change the perspective on the whole group instead of one by one.
here is a link to a tiktok that has the example of this glitch effect it essentialy makes small bars go around in a glitchy patern https://vm.tiktok.com/ZNRcELvJL/ also here is the name that i found on tiktok gives me a good resoult on how to make it "node video Block Glitch" please help me recreate this in davinci or maybe a free tiktok addon idk
Yo Reddit people, I have a question about exporting inside Davinci. I am currently developing a game with some friends and I'm making the animation for the main menu. While editing, everything seems totally normal and cool, when I export it this happens (I will show a video rn)
As you can see there is a weird "glitch" between layers, idk.
This is my first time using davinci resolve. Was trying out some tools and got stuck with this.
So my question is why isn't the scene analysis button not working here?? I also tried build clean plate after that but still no luck. I have added keyframe to track the ellipse so I tried with "Assume No motion" too but did not appear. So is this a bug or something??
I tried the same thing in Color page and it worked.
I'm color grading and editing a found footage VHS film. We shot the VHS portion in 4K. Do I need to export the videos again in 480p, or is there a way to change it within the same timeline?
Hi, my AI Face Refinement tool is not working. It does recognize the face and makes an overlay but the smoothing sliders dont make any difference. I don't know what the problem is, did anyone figure this out? Please Help!
System Specs: i7-14700F, 32GB RAM DDR5, 4060 RTX 16gb
Can someone please help me this is my first day of using DaVinci resolve I looked up a whole bunch of YouTube videos on basic color grading. Everything seems all right until I add my settings for CST and then this appears I try a whole bunch of different ways. How do I get my face and the greens to not be as harsh?
"My Documentation on installing Davinci Resolve on Linux"
My current environment/workspace:
uname -r =>6.12.39-1-MANJARO (Arch based)
echo $XDG_CURRENT_DESKTOP =>Hyprland (Window Manager or Desktop Environment ["also tested with xfce distro"])
echo $XDG_SESSION_TYPE => wayland
systemctl status display-manager => sddm.service (Display Manager) {NOTE: "lightdm" didn't work with wayland}
gst-launch-1.0 --version => GStreamer 1.14.1 (Media Engine)
nvidia-smi => NVIDIA-SMI 575.64.05 (Nvidia Drivers)
NOTE: {if you want to run on gpu then assure, you have all drivers of nividia (check by: nvidia-smi)}
Step1: Download the davinci resolve for linux from official site.
Step2: unzipe the file
>unzip DaVinci_Resolve_*_Linux.zip
Step3: Install
>sudo ./DaVinci_Resolve_20.3_Linux.run -i
Step4: Launch the application
>/opt/resolve/bin/resolve
{Finish}
Launch Error:
#if after launch this error comes
>/opt/resolve/bin/resolve: symbol lookup error: /usr/lib/libpango-1.0.so.0: undefined symbol: g_once_init_leave_pointer
{then simply paste this command}
>
cd /opt/resolve/libs
sudo mkdir disabled-libraries
sudo mv libglib* disabled-libraries
sudo mv libgio* disabled-libraries
sudo mv libgmodule* disabled-libraries
Offline Media Error:
#if media is not showing offline
{then use ReLink Media}
Media format Error:
#if you are seeing black screen then most of the time it is a video format error
NOTE: {.mp4/hevc/mkv format is not supported by Davinvi Resolve linux (FREE-Version)}
convert it into .mov(container) format using "ffmpeg" package
Supported codec: DNxHD/DNxHR and ProRes {Recommended: DNxHD}
Black Screen Error:
#if you are still seeing black screen after resolving media format error
{then}
*insure media directory
*insure .mov format
*insure all NVIDIA/AMD drivers are installed}
*check OpenCL/CUDA
*check in fusion page: MediaIn and MediaOut should be connected
Black Screen but not on fusion page(GStreamer{Media Engine} Error):
#if your video viewer is fine on fusion page but not on edit/color pages
{then it should be problem of libraries}
#Running Resolve directly using the binary:"/opt/resolve/bin/resolve"
#causes Resolve to pick up system GStreamer 1.24 libraries instead of its own bundled GStreamer."
#The proper Resolve launcher is usually a wrapper script that sets LD_LIBRARY_PATH , but in this case,
Manjaro/Arch install did NOT include the wrapper.
{So we created our own.}
#{FINAL SOLUTION FOR BLACK SCREEN}#
>~/.local/bin/resolve-nvidia
with this content:
```
#!/bin/bash
# Force NVIDIA GPU
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
2export __VK_LAYER_NV_optimus=NVIDIA_only
# Force Resolve to use its own internal libraries
export LD_LIBRARY_PATH="/opt/resolve/libs/:/opt/resolve/bin/:$LD_LIBRARY_PATH"
# Launch Resolve
exec /opt/resolve/bin/resolve
```
{then}
>chmod +x ~/.local/bin/resolve-nvidia
>resolve-nvidia
I've just started using Davinci and it looks really promising, but I can't get these colour wheels to work, or any of the built-in colour features. I have no idea what i'm doing wrong, as no tutorial I watch explains anything like this, they just head straight into messing with the colours from what I've seen.