Behind the Scene: Membangun Manual Webcam Stable untuk macOS
Masalahnya: webcam bagus, tapi tampilannya tetap "webcam" Saya membangun sendiri aplikasi pengatur webcam untuk macOS, karena alat yang saya butuhkan belum ada di App Store. Namany

Masalahnya: webcam bagus, tapi tampilannya tetap "webcam"
Saya membangun sendiri aplikasi pengatur webcam untuk macOS, karena alat yang saya butuhkan belum ada di App Store. Namanya Manual Webcam Stable, dan artikel ini adalah cerita di balik pembuatannya.
Semua berawal dari streaming. Saya ingin tampilan kamera yang lebih profesional, lebih cinematic. Warna yang terkontrol, exposure yang tidak "bernapas" naik-turun, fokus yang tidak lari-lari.
Masalahnya, macOS tidak menyediakan pengaturan manual untuk webcam USB. Kamera dibiarkan serba otomatis. Di Windows, pengguna bisa membuka panel properti kamera dan mengatur brightness, exposure, focus, sampai white balance. Di MacBook, pilihan itu praktis tidak ada.
Saya sempat mencari aplikasi di App Store yang bisa melakukan hal ini dengan benar. Hasilnya nihil. Jadi saya putuskan: kalau belum ada yang membuat, saya buat sendiri.
Inspirasi dari mas Amik, Ruang Visual
Ide aplikasi ini datang dari mas Amik, kreator Ruang Visual di TikTok. Beliau membuat ekosistem alat khusus streaming: pengaturan webcam, preset, sampai software untuk mempercantik tampilan live di TikTok.
Salah satu karyanya adalah aplikasi pengatur webcam untuk Windows, Webcam Setting Ruang Visual versi 3.2.0. Aplikasi inilah yang menjadi basis versi macOS saya.
Satu hal yang penting saya tegaskan: saya meminta izin langsung kepada mas Amik sebelum membedah dan memporting aplikasinya. Setelah izin itu saya dapat, barulah saya leluasa mempelajari cara kerjanya dan membawanya ke macOS. Terima kasih banyak, mas Amik, atas kepercayaannya.
Tantangan terbesar: macOS tidak punya "jalan" yang sama
Memporting aplikasi ini tidak semudah menerjemahkan kode dari satu bahasa ke bahasa lain. Masalah utamanya ada di cara aplikasi berbicara dengan kamera.
Versi Windows dibangun dengan WinForms dan DirectShow. Windows punya antarmuka resmi, IAMVideoProcAmp dan IAMCameraControl, yang memang dirancang untuk mengatur properti kamera. Tinggal panggil, nilai berubah.
Di macOS, tidak ada API publik yang setara. AVFoundation bisa menampilkan video dan mengatur sebagian hal di kamera bawaan, tapi tidak memberi akses penuh ke kontrol hardware webcam USB.
Sebelum sampai ke solusi yang sekarang, saya sempat mencoba beberapa pendekatan di proyek-proyek eksperimen sebelumnya. Salah satunya memakai filter gambar (CIFilter) untuk mengubah warna dan kecerahan. Hasilnya memang terlihat di preview, tapi hanya di aplikasi saya sendiri. Begitu dibuka di OBS atau Zoom, gambarnya kembali seperti semula. Itu bukan yang saya cari.
Pemecahannya: bicara langsung ke hardware lewat UVC
Jawabannya ternyata ada di standar yang dipakai hampir semua webcam USB: UVC (USB Video Class). Webcam UVC menerima perintah langsung lewat jalur USB, tanpa perlu API khusus dari sistem operasi.
Jadi aplikasi saya memakai IOKit untuk mengirim perintah UVC ke Video Control interface webcam. Alurnya kira-kira begini:
- Aplikasi menemukan webcam USB eksternal lewat AVFoundation.
- IOKit membuka interface kontrol USB milik webcam tersebut.
- Aplikasi bertanya ke kamera: berapa nilai minimum, maksimum, dan nilai saat ini (GET_MIN, GET_MAX, GET_CUR).
- Saat slider digeser, aplikasi mengirim nilai baru (SET_CUR).
- Kamera menyimpan nilai itu di hardware-nya sendiri.
Karena perubahan terjadi di hardware, hasilnya ikut terbawa ke OBS, Zoom, Google Meet, Photo Booth, dan aplikasi lain. Persis seperti versi Windows-nya.
Setiap fitur dari versi Windows lalu saya petakan satu per satu ke padanan UVC-nya:
Fitur
Jalur di macOS
Brightness, Contrast, Hue, Saturation, Sharpness, Gamma
UVC Processing Unit
White Balance + Auto, Backlight Comp, ISO/Gain, PowerLine 50/60 Hz
UVC Processing Unit
Exposure + Auto Exposure
UVC Camera Terminal
Low Light
Camera Terminal, AE Priority (padanan terdekat)
Focus + Auto Focus
UVC Camera Terminal
Zoom, Pan, Tilt
UVC Camera Terminal
Preview
AVCaptureVideoPreviewLayer
Preset .json
PresetManager di Application Support
Login lisensi
Endpoint server yang sama dengan versi Windows
Tentu tidak semuanya mulus. Beberapa kendala yang saya temui di jalan:
- Webcam sedang dipakai aplikasi lain. Sebagian webcam menolak dibuka saat OBS atau Zoom aktif. Saya menambahkan mekanisme cadangan, tapi untuk model tertentu solusi paling aman tetap: tutup aplikasi lain, atur setelan, lalu buka lagi.
- Pan dan Tilt digabung. Di standar UVC, keduanya adalah satu kontrol berukuran 8 byte. Menggeser pan tanpa merusak tilt butuh penyimpanan nilai internal.
- Kamera bawaan MacBook bukan UVC USB. FaceTime HD tidak bisa dikontrol lewat jalur ini. Aplikasi menampilkan pesan yang jelas, bukan diam-diam gagal.
- Akses USB dan App Sandbox. IOKit butuh akses langsung ke perangkat USB, sehingga pengaturan sandbox harus disesuaikan untuk distribusi di luar App Store.
Lebih dari sekadar porting
Setelah fondasinya berjalan, saya menambahkan beberapa hal yang saya butuhkan sendiri saat streaming:
- Color Tone (Red, Yellow, Blue). Tiga tombol cepat untuk nuansa warna hangat kemerahan, hangat kekuningan, atau dingin kebiruan. Semuanya lewat white balance hardware, jadi tetap terbawa ke aplikasi streaming.
- Reset per slider. Tombol kecil di ujung setiap slider untuk mengembalikan satu setelan ke nilai pabrik, selain tombol reset semua.
- Nilai selalu jujur. Setelah mode Auto dinyalakan atau dimatikan, aplikasi membaca ulang nilai dari hardware. Angka di layar selalu sama dengan kondisi kamera sebenarnya.
- Preset yang lebih aman. Simpan, update, load, hapus, kunci, serta export dan import file .json. Ada juga penanda "perubahan belum disimpan" dan Master Lock untuk melindungi preset penting.
- Kontrol otomatis menyesuaikan kamera. Setiap model webcam mendukung kontrol berbeda. Slider yang tidak didukung langsung nonaktif, lengkap dengan keterangannya.
Uji coba tertutup: dari "untuk saya" menjadi "untuk kita"
Awalnya aplikasi ini murni untuk kebutuhan saya sendiri. Tapi saya penasaran, apakah masalah yang sama juga dialami streamer lain yang memakai MacBook.
Saya lalu memberi akses ke beberapa orang untuk mencobanya. Feedback yang masuk positif: mereka akhirnya bisa mengunci exposure, mengatur fokus manual, dan menyimpan setelan favorit sebagai preset. Tampilan kamera jadi lebih konsisten sepanjang live.
Dari situ saya yakin aplikasi ini layak dibuka untuk lebih banyak orang.
Sekarang giliran kamu mencoba
Manual Webcam Stable v.1 kini saya buka untuk uji coba publik lewat repository GitHub. Di sana tersedia aplikasi dan panduan penggunaannya.
Repository GitHub: https://github.com/khincc00/WSRV-macOS.git
atau dowload melalui GDrive: https://drive.google.com/drive/folders/1CORhxIBznohxkymWYaKQ0KfBrHte2Ald?usp=share_link
Yang kamu butuhkan:
- MacBook atau Mac dengan macOS 12 (Monterey) atau lebih baru
- Webcam USB eksternal standar UVC, misalnya Logitech, Razer, atau AverMedia
Kalau kamu mencoba, saya sangat menunggu masukanmu. Webcam apa yang kamu pakai, kontrol mana yang jalan, dan mana yang belum. Setiap laporan membantu aplikasi ini jadi lebih stabil untuk semua orang.
Terakhir, sekali lagi terima kasih untuk mas Amik dari Ruang Visual. Tanpa aplikasi dan izin beliau, versi macOS ini tidak akan ada.
What do you think?
Comments
Loading comments...