Projects / uvcdv-capture
uvcdv-capture
MiniDV capture over USB on a modern Mac.
--vhs, which simulates the signal path from the camcorder to a capture card. Drag the line.- Version
- 1.12.1, 12 October 2026
- Runs on
- macOS on Apple Silicon. Intel should work but is untested. The command line tool also builds on Linux.
- Written in
- C on libusb (command line), Swift and AppKit (the app)
- License
- GPL-3.0
- Source
- GitHub, 12 stars
brew tap boris-timofeenko/tap && brew trust boris-timofeenko/tap && brew install uvcdv-capture
I have a box of MiniDV tapes and a Panasonic NV-GS330 camcorder. The proper way to capture MiniDV is FireWire, which modern Macs don’t have and Apple removed from macOS. Analog capture digitizes the picture again and loses quality. Some Panasonic camcorders from the mid-2000s can send the same digital stream over plain USB, in a mode called Motion DV. Windows and Linux read it. On a Mac the camera shows up, but no capture device appears, because Apple’s driver doesn’t implement that format.
uvcdv-capture reads the stream through libusb, with no drivers and no kernel extensions, and writes .dv files bit for bit as a FireWire capture would. It counts every lost packet; a clean capture shows drop=0 ovf=0, and dvrescue finds no damaged frames.
It’s for people with such a camcorder and a box of tapes. I have tested it only on my NV-GS330. If your camera has a DV-over-USB mode, the README explains how to check it in a minute.
Claude Code wrote the code; most features came from digitizing my own tapes. I asked the agent: “In Scenalyzer on a PC I could start and stop tape playback on this same camera, maybe we can do that here too?” Now the Mac does that over USB. I filmed a concert in the dark; the first night mode made it brighter but noisy, and the picture kept changing. The one that stayed applies one fixed shadow curve per scene. There is also a VHS emulation, --vhs, that simulates the signal path from the camcorder to the capture card.
The one command most people need
uvcdv-capture --play --stop --idle 15 tape01.dv
It starts the tape, captures until the recording ends and stops the tape. One hour of tape is about 13 GB as raw DV, or about 1.7 GB with tape01.mp4 as the output.
Requirements
- A Panasonic MiniDV camcorder with USB FUNCTION set to Motion DV (NV-GS and PV-GS series), on the AC adapter.
- macOS on Apple Silicon.
- ffmpeg for MP4 encoding and preview:
brew install ffmpeg.
Known limits
- Sony “USB Streaming” and JVC or Canon camcorders don’t send DV over USB.
- Tested end to end only on the NV-GS330.
- The prebuilt binaries are not code-signed; Homebrew builds from source.
