Repository navigation
v0.3.0
Remote VideoToolbox for FFmpeg: use a Mac or Apple Silicon system over LAN as an IP-based H.264/HEVC encode/decode/transcoding accelerator.
1-minute quickstart
- On the Mac server, download
vtremoted-macos-arm64.tar.gz(Apple Silicon) orvtremoted-macos-x86_64.tar.gz(Intel Mac). - On the client, download the FFmpeg build for your platform:
ffmpeg-linux-x86_64.tar.gz,ffmpeg-macos-arm64.tar.gz,ffmpeg-macos-x86_64.tar.gz, orffmpeg-windows-x86_64.tar.gz. - Start
vtremotedon the Mac:
tar -xzf vtremoted-macos-arm64.tar.gz
./vtremoted/vtremoted --listen 0.0.0.0:5555 --log-level 1- Run a remote encode from the client:
mkdir -p ffmpeg-client
tar -xzf ffmpeg-linux-x86_64.tar.gz -C ffmpeg-client
./ffmpeg-client/ffmpeg -i input.mkv \
-c:v h264_videotoolbox_remote \
-vt_remote_host <MAC_IP>:5555 \
-b:v 6000k \
output.mkvWhich asset do I need?
vtremoted-macos-arm64.tar.gz: macOS server binary for Apple Silicon Macs.vtremoted-macos-x86_64.tar.gz: macOS server binary for Intel Macs.ffmpeg-linux-x86_64.tar.gz: FFmpeg client build for Linux.ffmpeg-macos-arm64.tar.gz: FFmpeg client build for Apple Silicon Macs.ffmpeg-macos-x86_64.tar.gz: FFmpeg client build for Intel Macs.ffmpeg-windows-x86_64.tar.gz: FFmpeg client build for Windows.SHA256SUMS.txt: checksums for all release tarballs.
What changed in this release?
Fixed
- Fixed missing
inet_ptonreturn value check in OBS plugin client, preventing confusing errors on invalid addresses. - Fixed potential NULL dereference in OBS encoder when video output is not yet attached.
- Improved
read_exactin OBS plugin client to distinguish disconnection from errors and retry on transient failures (EAGAIN/EINTR). - Added warning log when side-data allocation fails during remote decode, preventing silent metadata loss.
- Fixed hardcoded 2-plane assumption in
fill_frame_from_view; now copies all planes reported by the remote server. - Replaced force unwraps on
baseAddress!in Swift server decode/encode paths with safe guards, preventing crashes on malformed zero-length payloads. - Replaced unsynchronized Swift Array with
UnsafeMutableBufferPointerfor concurrent plane error collection, eliminating potential data race.
CI
- Added
swift teststep to both macOS arm64 and x86_64 CI jobs, enabling the 38 existing unit tests that were previously not run in CI. - Added
timeout-minutesto Swift (15 min) and FFmpeg (45 min) build jobs to prevent runaway CI usage. - Added mock-based integration tests (
run_mock_roundtrip.sh,run_mock_decode.sh) to the Linux FFmpeg CI build.