- Android 14 mengurangi kebutuhan penggunaan aplikasi terpisah untuk webcam PC, dan memungkinkan penyediaan mode webcam USB di tingkat OS
- Opsi USB Preferences yang baru dapat mengubah perangkat ke mode UVC (USB Video Class) sehingga PC Windows, macOS, dan Linux mengenalinya sebagai webcam USB standar
- Namun fitur ini tidak aktif secara otomatis; konfigurasi kernel, susunan UVC, pembaruan USB HAL, dan aplikasi sistem Webcam Service harus semuanya sesuai
- Webcam Service meneruskan frame Camera2 API ke node
/dev/video, dan pengguna dapat mengontrol pratinjau, zoom, serta pergantian lensa dari notifikasi - Bahkan perangkat yang sudah diperbarui ke Android 14 pun bisa dikecualikan jika memiliki kernel lama atau keterbatasan HAL, sehingga dukungan nyata bergantung pada implementasi pabrikan
Mode webcam USB di Android 14
- Mulai Android 14, fitur untuk menggunakan smartphone sebagai webcam PC bisa menjadi bagian dari Android OS itu sendiri
- Pada masa COVID, penggunaan platform rapat video seperti Zoom dan Google Meet meningkat, tetapi webcam yang bagus sulit didapat atau mahal, dan kualitas webcam bawaan laptop juga terbatas
- Kamera smartphone memiliki kualitas gambar yang lebih baik daripada kebanyakan webcam, sehingga sebelumnya banyak pengguna memakai perangkat lunak pihak ketiga untuk menggunakan smartphone seperti webcam
- Di Android 14, opsi USB webcam dapat muncul di USB Preferences
- Mode USB yang sudah ada meliputi transfer file/Android Auto (MTP), USB tethering (NCM), MIDI, dan PTP
- Jika memilih USB webcam, mode USB akan beralih ke UVC bila perangkat mendukungnya
- PC Windows, macOS, dan Linux yang terhubung akan mengenali perangkat Android sebagai webcam USB standar
- Ini juga mungkin berfungsi di perangkat Android lain
Syarat yang diperlukan untuk mengaktifkan fitur
- Dukungan webcam di Android 14 bukan fitur yang aktif secara default
- Agar benar-benar berfungsi, diperlukan empat syarat
- Pengaturan kernel Linux diaktifkan
- Konfigurasi UVC gadget
- Pembaruan USB HAL
- Aplikasi sistem baru sudah diprainstal
Persyaratan konfigurasi kernel
- Pengaturan kernel Linux yang diperlukan adalah
CONFIG_USB_CONFIGFS_F_UVC - Pengaturan ini diperlukan agar perangkat Android dapat di-mount sebagai UVC gadget
- Banyak perangkat yang ditingkatkan ke Android 14 dan hampir semua perangkat yang dirilis dengan Android 14 kemungkinan memiliki kernel dengan pengaturan ini aktif
- Generic Kernel Image (GKI) mengaktifkan pengaturan tersebut secara default mulai
android12-5.10 - Perangkat yang dirilis dengan Android 12 atau lebih baru dan menggunakan Linux kernel 5.10 atau lebih baru wajib memakai kernel GKI
- Generic Kernel Image (GKI) mengaktifkan pengaturan tersebut secara default mulai
- Di ekosistem Android, peningkatan versi mayor kernel jarang terjadi, dan karena program Google Requirements Freeze (GRF) memungkinkan implementasi vendor lama tetap disertifikasi, beberapa perangkat yang ditingkatkan ke Android 14 mungkin tidak dapat mendukung fitur webcam USB
- Cara paling langsung untuk memeriksa dukungan adalah melihat versi kernel dan apakah pengaturan tersebut aktif
- Periksa versi kernel:
adb shell "cat /proc/version"
- Periksa konfigurasi kernel:
adb shell "zcat /proc/config.gz | grep 'CONFIG_USB_CONFIGFS_F_UVC'"
- Periksa versi kernel:
- Sebagai contoh, Galaxy Z Fold 5 yang menjalankan Android 13 menggunakan GKI
android13-5.15dan memilikiCONFIG_USB_CONFIGFS_F_UVC=y, sehingga bila ditingkatkan ke Android 14, perangkat itu dapat mendukung fitur webcam USB asalkan prasyarat lainnya juga terpenuhi
Aplikasi sistem Webcam Service
- Android 14 QPR1 beta untuk beberapa perangkat Pixel menyertakan aplikasi sistem baru bernama Webcam Service
- Nama paketnya adalah
com.android.deviceaswebcam - Bergantung pada pustaka bersama
libjni_deviceAsWebcam.so - Aplikasi dan pustaka ini direncanakan akan disertakan dalam rilis kode sumber Android 14 mendatang
- Nama paketnya adalah
- Aplikasi Webcam Service mengimplementasikan layanan DeviceAsWebcam yang mengubah perangkat Android menjadi webcam
- Layanan ini meneruskan frame kamera ke node
/dev/videoyang dapat dibaca oleh perangkat host - Berdasarkan kebijakan SELinux, node
/dev/videohanya dapat diakses oleh proses di domaindevice_as_webcam- Satu-satunya pihak yang benar-benar mengaksesnya adalah aplikasi sistem Webcam Service
- Karena itu, dukungan webcam USB native di Android 14 dapat dimanfaatkan oleh produsen perangkat, tetapi tidak bisa dimanfaatkan langsung oleh aplikasi pihak ketiga
Cara memulai webcam USB dan kontrol pengguna
- Saat opsi USB webcam yang baru di USB Preferences diaktifkan, sistem menyiarkan intent
android.hardware.usb.action.USB_STATE- Intent tersebut menyertakan extras
connecteddanuvc
- Intent tersebut menyertakan extras
- Webcam Service memiliki receiver yang menerima intent ini
- Extra
uvcdisetel ketrue - Metode framework
android.hardware.usb#isUvcSupportEnabled()mengembalikantrue - Jika kedua syarat terpenuhi, sistem akan memulai layanan
- Extra
isUvcSupportEnabled()mengembalikantruesaat properti sistemro.usb.uvc.enabledbernilaitrue- Properti ini harus disetel oleh OEM pada saat build
- Jika tidak disetel, opsi USB webcam tidak akan muncul di USB Preferences dan Webcam Service juga tidak akan dimulai
- Properti tersebut hanya dapat dibaca oleh aplikasi sistem seperti Settings dan Webcam Service
- Saat Webcam Service dimulai, notifikasi baru akan muncul agar pengguna dapat mengatur webcam
- Mengetuk notifikasi akan membuka pratinjau kamera
- Pengguna dapat melakukan zoom in/out atau mengganti lensa
- Secara internal, aplikasi Webcam Service memulai foreground service agar tidak dihentikan oleh sistem
- Aplikasi ini menggunakan Camera2 API dan mendukung streaming 720p (1280×720) atau 1080p (1920×1080)
- Di host yang terhubung, nama perangkat webcam akan ditampilkan sebagai Android Webcam
ConfigFS dan USB HAL
- Nama yang tampil di host, parameter video, dan metode pengodean yang tepat bergantung pada bagaimana produsen perangkat mengonfigurasi UVC gadget dengan configfs
- Pada perangkat Pixel berbasis Tensor, konfigurasi function UVC gadget milik Google ada di file
init.gs[101|201].usb.rcdi dalam/vendor/etc/init/hw - Agar Android dapat mengalihkan mode USB yang dipilih di Settings menjadi UVC, dibutuhkan USB HAL yang telah diperbarui
- Karena program GRF, banyak perangkat yang ditingkatkan ke Android 14 kemungkinan tidak akan menerima USB HAL yang diperbarui, dan dalam kasus itu fitur ini tidak akan berfungsi
Dukungan platform dan keterbatasan
- Dengan implementasi fitur webcam USB native di Android, Google memungkinkan produsen perangkat yang menginginkan fitur ini untuk mengadopsinya
- Jika aplikasi Webcam Service benar-benar disertakan di AOSP seperti yang diperkirakan, produsen perangkat dapat memanfaatkannya untuk mengimplementasikan fungsi webcam
- Ini bisa dibandingkan dengan Continuity Camera milik Apple, tetapi pendekatan Android bekerja di berbagai platform
- Ponsel yang menjalankan Android 14 dan memenuhi persyaratan dapat beralih menjadi webcam USB standar dan digunakan di semua PC
1 komentar
Komentar Hacker News
scrcpy sudah sangat bagus untuk penggunaan seperti ini: https://github.com/Genymobile/scrcpy
Untuk men-streaming kamera ponsel di OBS, cukup tunggu perangkat dengan
adb, dapatkan IPwlan0, hubungkan denganadb tcpip 5555danadb connect, lalu jalankanscrcpy -e --v4l2-sink=/dev/video0 --lock-video-orientation=1 -n -NKalau bisa build dari source, saya juga menambahkan commit tambahan di atas PR itu, dan dengan dukungan mode capture berkecepatan tinggi Android yang terbatas, streaming kamera 120fps/240fps jadi memungkinkan. Untuk rapat mungkin tidak terlalu berguna, tetapi ini bermanfaat untuk menangkap video VR mixed reality ber-frame rate tinggi. Sejauh yang saya tahu, tidak ada aplikasi webcam Android, baik proprietary maupun open source, yang melampaui 60fps
adbsudah cukup lengkap, jadi saya ingin saran untuk dua hal yang masih kurang di sisi saya. Yang pertama adalah cara mengatur port tetap ADB/TCP atau meneruskannya otomatis ke PC, karena Android sekarang mengganti port setiap kali. Yang kedua adalah cara menyalakan ADB/TCP di hotspot mobile, karena Android mengeluh “Please connect to WiFi”Selain dua hal itu, berkat scrcpy, KDE Connect, dan Waydroid, integrasi Linux-Android hampir sempurna, sampai-sampai pengguna Apple pun bisa iri
Sedikit menyamping, tetapi saat lockdown saya mencari cara memakai iPhone sebagai webcam dan menemukan VDO.Ninja: https://vdo.ninja/
Awalnya itu adalah sarana untuk mengirim feed video ke OBS, dan saya menggunakannya untuk membuat input webcam. Seiring proyeknya membesar, ia juga bisa dipakai seperti Zoom, dengan berbagi video dan audio desktop langsung di dalam browser, dan berkat itu saya bisa menjalankan malam nonton film virtual jarak jauh
Bisa juga lewat UI pembuatan room, tetapi semuanya dapat dikonfigurasi hanya dengan parameter URL, sehingga jauh lebih fleksibel dan solid: https://docs.vdo.ninja/master/how-does-it-work
Kalau membuat URL pengirim dan penerima, keduanya otomatis terhubung lewat WebRTC. Misalnya, saya bisa membuat source yang menangkap jendela VLC untuk mengirim video dan audio, lalu dua URL tujuan menerima video·audio itu sambil masing-masing juga mengirim audio mikrofon satu sama lain. Jadi kami bisa menonton dan mendengar film bersama di dalam browser sambil tetap mengobrol. Saya sama sekali tidak terkait dengan proyek ini; saya hanya merasa ini benar-benar hebat
OBS adalah tool yang dipakai untuk men-streaming layar komputer ke tempat seperti Twitch: https://obsproject.com/
Ini tambahan fitur yang menyenangkan. Perusahaan-perusahaan telah menghabiskan waktu dan usaha untuk membuat kamera dengan fitur seperti tracking atau portrait mode
Namun rasanya fitur ini datang agak terlambat dibandingkan masa pandemi, ketika semuanya tiba-tiba beralih ke remote dan orang-orang berebut mencari webcam. Akan lebih baik kalau fitur ini disediakan saat itu, alih-alih membuat orang membeli aplikasi pihak ketiga
Bagi saya, ini terlalu sedikit dan terlalu terlambat. Saya tidak ingin menjadi orang yang melontarkan “hot take” seperti ini, tapi dengarkan sebentar: sampai 2013 saya hanya memakai telepon kabel tanpa ponsel, lalu mulai dengan Nexus 4, dan setiap 2–3 tahun berganti sampai Pixel 6. Namun besok iPhone pertama saya akan dikirim
Alasannya banyak. Ponsel Google tidak bisa dicolokkan ke layar eksternal untuk mirroring, dan keluaran DisplayPort secara eksplisit dinonaktifkan di source code tanpa alasan: https://twitter.com/MishaalRahman/status/1189998588023234560 Padahal fitur ini berfungsi baik di ponsel lain
Saya juga tidak bisa mengakses pesan SMS di ponsel Android tanpa aplikasi terpisah. Sudah mencoba
adb backuptapi tidak bisa; mungkin bisa kalau di-root, tapi setahu saya proses rooting biasanya menghapus semuanyaBackup ponsel juga tidak bisa diakses. Hanya disimpan di server Google, dan satu-satunya cara mendekatinya adalah memulihkannya ke ponsel. Secara fisik saya memegang perangkat yang saya beli sendiri, tapi tidak bisa mengakses semua hal di dalamnya. iPhone bisa dicolokkan ke Windows atau Mac untuk men-dump backup ke komputer, dan di dalamnya ada pesan, pengaturan sistem, kontak, foto, database, hampir semuanya. Mungkin hanya kunci proteksi hardware yang menjadi pengecualian
Tidak perlu dibahas lagi soal ulah Google: kekacauan banyaknya messenger, berbagai layanan yang ditutup, dukungan yang kurang, serta integrasi iklan dan pelacakan yang makin kuat. Apple juga tidak sempurna, tapi saya merasa untuk sementara layak mencoba masuk ke dalam walled garden. Di iOS ada output layar, akses ke perangkat sendiri, messaging yang masuk akal, dan setidaknya kesan bahwa privasi diperhatikan. Ironisnya, saya merasa lebih punya kendali saat memakai produk Apple dibanding produk Google
Misalnya, kita tidak bisa tahu kecepatan pengisian daya atau perkiraan waktu pengisian, sehingga sulit memastikan apakah kita sudah memilih charger dan kabel fast charging yang kompatibel dengan iPhone dari beberapa charger yang ada. Lalu meskipun Chrome atau Firefox terpasang, saat memilih teks dan menekan pencarian web, ia tetap membuka Safari. Ada banyak gangguan kecil seperti ini, dan karena sistem operasinya terlalu tertutup, tidak banyak yang bisa dilakukan
Android jauh lebih mudah dikustomisasi, dan sideloading seperti menjalankan emulator GBA di iPhone juga lebih mudah. Di ekosistem Android juga ada lebih banyak perangkat menarik seperti ponsel lipat Samsung. Integrasi ekosistem dengan Mac memang bagus, tapi sulit mengatakan salah satunya jelas lebih baik
Tidak ada layanan yang dimatikan Google yang berdampak pada saya, dan saya juga kurang tahu apa yang dimaksud dengan kekacauan messenger. Dukungan apa yang kurang juga tidak jelas
Pixel 1 XL sangat bagus, tetapi setelah sekitar 2 tahun kameranya terus gagal, butuh lebih dari 3 detik untuk terbuka atau sering crash. Pada akhirnya daya tahan baterainya memburuk, dan baterai pengganti juga menurun kualitasnya hanya dalam beberapa bulan, jadi saya pindah
Pixel 3a jatuh dari saku dan pecah dua bulan sebelum dukungan pembaruan keamanannya berakhir. Secara keseluruhan itu ponsel yang lumayan, tetapi Google tidak mendukungnya selama yang saya harapkan. Pixel 6 Pro sejauh ini baik-baik saja, tetapi Pixel 5 milik istri saya punya masalah seperti performa lambat dan koneksi seluler yang tidak stabil
Pelajarannya mungkin “jangan beli ponsel Pixel”, tetapi alternatifnya bisa lebih seperti mimpi buruk dari sisi keamanan. Ponsel Galaxy dulu punya jumlah aplikasi sampah prainstal yang sulit dipercaya dan harus dihapus. Pixel hanya punya aplikasi Google dan sebagian besar bisa dihapus, jadi kekhawatiran privasi dan keamanannya lebih kecil dibanding ponsel yang mungkin sudah dipasangi aplikasi dari 30 perusahaan dan tidak bisa dihapus
Saya sudah banyak mengkritik Apple selama bertahun-tahun, jadi mengecewakan bahwa pada akhirnya berpindah platform tampak seperti pilihan terbaik
Beberapa ketidaknyamanan memang terlihat cukup menjengkelkan, tetapi tidak sampai membuat saya mau menerima batasan bahwa untuk menulis kode di komputer pilihan saya dan menjalankannya di ponsel saya atau ponsel teman, saya harus membayar langganan rutin dan mengajukannya ke reviewer yang bisa menolak karena alasan apa pun
Di sistem seperti ini, akses root
adbdimungkinkan, dan dengan begitu database pesan SMS SQLite juga bisa diakses. Mirroring layar melalui mode alternatif DP di USB-C berfungsi secara bawaan, dan “mode desktop” Android juga bisa diaktifkan, meski masih cukup dasar dan eksperimentalFairphone didukung lama, mudah diperbaiki, dan juga bisa menjalankan kernel mainline (postmarketOS, dll.). Tentu saja, dari sisi sistem operasi, ponsel Android mana pun tetap bergantung pada Google
Saya setuju dengan banyak keluhan terhadap Google, tetapi pindah ke Apple terasa seperti menukar satu keburukan dengan keburukan lain. Saya tidak akan pernah menyebut ponsel Apple sebagai “milik saya”, dan juga tidak merasa Apple menyediakan “akses ke perangkat sendiri”
Saya sudah memakai aplikasi Camo selama lebih dari setahun. Aplikasinya bekerja sangat baik, dan juga mendukung melihat kamera lewat Wi-Fi, jadi tidak perlu kabel. Akun dasarnya gratis: https://reincubate.com/camo/
Ini sudah dilakukan sejak beberapa tahun lalu. Saya tidak tahu dalam arti apa dukungannya belum ada
Jika fitur ini masuk, Pixel 6a yang saat ini seharga 250 dolar kemungkinan besar akan menjadi webcam dengan rasio harga-kinerja terbaik di pasar
Di sebuah situs diskon yang sangat menyebalkan tertulis bahwa setelah 6 bulan, kunci operatornya akan terbuka otomatis. Saya tidak akan memasang tautan karena situs itu terlalu menyebalkan. Untuk memulai timer 6 bulan, ponselnya harus diaktivasi
Sepengetahuan saya, di Nokia N900 ini sudah bisa dilakukan dengan gstreamer pada 2009. Saya memang tidak benar-benar membuat dan memakai perangkat video, tetapi saya rasa
v4l2sinksudah ada saat itu. Saya cukup sering memakainya untuk streaming dengan jendela jarak jauh dan OpenCVItu satu-satunya ponsel bagus yang pernah saya miliki sejauh ini. Saya berharap di perangkat Android hal-hal seperti itu semudah itu, tetapi anehnya hampir selalu tidak demikian
Itu juga pekerjaan yang sulit dan layak dihormati. Namun rasanya sudut pandang yang keras dan konservatif terhadap perangkat lunak seperti ini sudah lama benar-benar mendominasi apa yang dibuat. Komputasi yang berusaha memberi pijakan kuat bagi power user makin berkurang. Teknologi terus mengambil jarak dan menjadi makin sulit dipahami. Ironisnya, ini karena kita terus kehilangan jalur masuk untuk menyelam lebih dalam dan menjadi ahli atau penjelajah
Akan bagus kalau ponsel Android bisa dipakai sebagai dashcam. Kapan itu akan mungkin? Rasanya seperti fitur yang semestinya bisa saja ada
Ini memang fitur yang bagus untuk dimiliki, tetapi kebanyakan orang sepertinya tetap ingin memegang ponselnya saat Zoom. Meski begitu, mungkin banyak juga orang yang punya ponsel cadangan