- Android 14 अलग ऐप्स की मदद से PC webcam बनाने की जरूरत को कम करते हुए, OS स्तर पर USB webcam mode उपलब्ध करा सकता है
- नया USB Preferences विकल्प डिवाइस को UVC(USB Video Class) mode में बदलता है, जिससे Windows, macOS, Linux PC उसे एक standard USB webcam की तरह पहचानते हैं
- हालांकि यह फीचर अपने-आप चालू नहीं होता; kernel config, UVC setup, USB HAL update, और Webcam Service system app—सबका सही होना जरूरी है
- Webcam Service Camera2 API frames को
/dev/videonode तक पहुंचाती है, और यूज़र notification से preview, zoom और lens switch को control कर सकते हैं - Android 14 में upgrade हुए डिवाइस भी पुराने kernel या HAL सीमाओं की वजह से बाहर रह सकते हैं, इसलिए वास्तविक support निर्माता के implementation पर निर्भर करता है
Android 14 का USB webcam mode
- Android 14 से स्मार्टफोन को PC webcam की तरह इस्तेमाल करने की क्षमता Android OS में ही शामिल हो सकती है
- COVID के दौर में Zoom, Google Meet जैसे video conferencing platforms का उपयोग बढ़ा, लेकिन अच्छी webcam पाना मुश्किल या महंगा था, और laptop की built-in webcam quality भी सीमित रही
- स्मार्टफोन कैमरे ज्यादातर webcams से बेहतर image quality देते हैं, इसलिए पहले कई यूज़र third-party software की मदद से फोन को webcam की तरह इस्तेमाल करते थे
- Android 14 में USB Preferences में USB webcam विकल्प दिखाई दे सकता है
- मौजूदा USB modes में file transfer/Android Auto(MTP), USB tethering(NCM), MIDI, PTP आदि शामिल हैं
- USB webcam चुनने पर, अगर डिवाइस support करता है, तो USB mode UVC में बदल जाता है
- जुड़े हुए Windows, macOS, Linux PC Android डिवाइस को standard USB webcam की तरह पहचानते हैं
- यह दूसरे Android डिवाइसों पर भी संभव हो सकता है
फीचर को सक्रिय करने के लिए जरूरी शर्तें
- Android 14 का webcam support default रूप से चालू रहने वाला फीचर नहीं है
- इसे वास्तव में काम करने के लिए चार शर्तें जरूरी हैं
- Linux kernel setting enabled हो
- UVC gadget configuration हो
- USB HAL update हो
- नया system app पहले से शामिल हो
kernel setting की आवश्यकताएँ
- जरूरी Linux kernel setting है
CONFIG_USB_CONFIGFS_F_UVC - यह setting Android डिवाइस को UVC gadget के रूप में mount होने देती है
- Android 14 में upgrade होने वाले कई डिवाइस और Android 14 के साथ आने वाले लगभग सभी डिवाइसों में यह setting enabled kernel होने की संभावना है
- Generic Kernel Image(GKI) में
android12-5.10से यह setting default रूप से enabled है - Android 12 या उससे ऊपर के साथ लॉन्च हुए और Linux kernel 5.10 या उससे ऊपर इस्तेमाल करने वाले डिवाइसों में GKI kernel होना चाहिए
- Generic Kernel Image(GKI) में
- Android ecosystem में major kernel version upgrade कम होते हैं, और Google Requirements Freeze(GRF) program के कारण पुराने vendor implementations भी certify हो सकते हैं, इसलिए कुछ Android 14 upgrade डिवाइस USB webcam फीचर support नहीं कर पाएंगे
- support की जांच का सबसे सीधा तरीका kernel version और setting enabled होने की पुष्टि करना है
- kernel version जांचें:
adb shell "cat /proc/version"
- kernel setting जांचें:
adb shell "zcat /proc/config.gz | grep 'CONFIG_USB_CONFIGFS_F_UVC'"
- kernel version जांचें:
- उदाहरण के तौर पर, Android 13 चला रहा Galaxy Z Fold 5
android13-5.15GKI इस्तेमाल करता है और उसमेंCONFIG_USB_CONFIGFS_F_UVC=yमौजूद है, इसलिए Android 14 में upgrade होने पर, अगर बाकी शर्तें पूरी हों, तो वह USB webcam फीचर support कर सकता है
Webcam Service system app
- कुछ Pixel डिवाइसों के Android 14 QPR1 beta में Webcam Service नाम का नया system app शामिल है
- इसका package name
com.android.deviceaswebcamहै - यह
libjni_deviceAsWebcam.soshared library पर निर्भर करता है - यह app और library Android 14 के आने वाले source code release में शामिल होने वाले हैं
- इसका package name
- Webcam Service app Android डिवाइस को webcam में बदलने वाली DeviceAsWebcam service को implement करता है
- यह service camera frames को host डिवाइस द्वारा पढ़े जा सकने वाले
/dev/videonode तक पहुंचाती है - SELinux policy के अनुसार
/dev/videonode तक सिर्फdevice_as_webcamdomain के process ही पहुंच सकते हैं- वास्तव में यह access सिर्फ Webcam Service system app के पास है
- इसलिए Android 14 का native USB webcam support डिवाइस निर्माता इस्तेमाल कर सकते हैं, लेकिन third-party apps इसे सीधे इस्तेमाल नहीं कर सकते
USB webcam शुरू होने का तरीका और user control
- जब USB Preferences में नया USB webcam विकल्प on किया जाता है, तो system
android.hardware.usb.action.USB_STATEintent broadcast करता है- इस intent में
connectedऔरuvcextras शामिल होते हैं
- इस intent में
- Webcam Service में इस intent को पाने वाला receiver मौजूद है
uvcextratrueपर set होandroid.hardware.usb#isUvcSupportEnabled()framework methodtrueलौटाए- ये दोनों शर्तें पूरी होने पर system service शुरू होती है
isUvcSupportEnabled()तबtrueलौटाता है जब system propertyro.usb.uvc.enabledका मानtrueहो- यह property OEM को build time पर set करनी होती है
- अगर यह set न हो, तो USB Preferences में USB webcam विकल्प नहीं दिखेगा और Webcam Service भी शुरू नहीं होगी
- यह property सिर्फ Settings और Webcam Service जैसे system apps ही पढ़ सकते हैं
- Webcam Service शुरू होने पर यूज़र को webcam configure करने के लिए नया notification दिखता है
- notification पर tap करने से camera preview खुलता है
- यूज़र zoom in/out या lens switch कर सकते हैं
- अंदरूनी रूप से Webcam Service app, system द्वारा बंद होने से बचने के लिए foreground service शुरू करती है
- यह Camera2 API का उपयोग करती है और 720p(1280×720) या 1080p(1920×1080) streaming support करती है
- जुड़े हुए host पर webcam device name Android Webcam के रूप में दिखता है
ConfigFS और USB HAL
- host को दिखने वाला नाम, video parameters और सटीक encoding तरीका इस बात पर निर्भर करता है कि डिवाइस निर्माता configfs के जरिए UVC gadget को कैसे configure करता है
- Tensor आधारित Pixel डिवाइसों में Google का UVC gadget function configuration
/vendor/etc/init/hwके अंदरinit.gs[101|201].usb.rcfiles में मौजूद है - Android को Settings में चुने गए USB mode को UVC में बदलने के लिए updated USB HAL की जरूरत होती है
- GRF program की वजह से Android 14 में upgrade होने वाले कई डिवाइस updated USB HAL नहीं पा सकते, और ऐसी स्थिति में यह फीचर काम नहीं करेगा
platform support और सीमाएँ
- Google ने Android में native USB webcam फीचर implement किया है, इसलिए जिन डिवाइस निर्माताओं को यह फीचर चाहिए वे इसे अपना सकते हैं
- अगर Webcam Service app उम्मीद के मुताबिक AOSP में शामिल होती है, तो डिवाइस निर्माता webcam फीचर implementation में इसका उपयोग कर सकेंगे
- इसकी तुलना Apple के Continuity Camera से की जा सकती है, लेकिन Android का तरीका कई platforms पर काम करता है
- Android 14 चलाने वाले और जरूरी शर्तें पूरी करने वाले फोन standard USB webcam में बदलकर किसी भी PC पर इस्तेमाल किए जा सकते हैं
1 टिप्पणियां
Hacker News की रायें
scrcpy इस काम के लिए पहले से ही शानदार है: https://github.com/Genymobile/scrcpy
OBS में फ़ोन कैमरा स्ट्रीम करने के लिए,
adbसे डिवाइस का इंतज़ार करें,wlan0का IP लें,adb tcpip 5555औरadb connectसे कनेक्ट करें, फिरscrcpy -e --v4l2-sink=/dev/video0 --lock-video-orientation=1 -n -Nचलाएँअगर आप source से build कर सकते हैं, तो मैंने PR के ऊपर कुछ अतिरिक्त commits भी जोड़े हैं, और Android के सीमित high-speed capture mode को support किया है, जिससे 120fps/240fps कैमरा स्ट्रीमिंग संभव हो जाती है। मीटिंग्स के लिए इसकी बहुत उपयोगिता नहीं है, लेकिन high-frame mixed-reality VR वीडियो capture करने में यह उपयोगी है। मेरी जानकारी में, proprietary हो या open source, 60fps से ऊपर जाने वाला कोई Android webcam app नहीं है
adbtools का काफ़ी अच्छा सेटअप है, इसलिए मेरी तरफ़ से छूटी दो चीज़ों पर सलाह चाहिए। एक है ADB/TCP fixed port सेट करने या उसे PC पर auto-forward करने का तरीका; Android अब हर बार port बदल देता है। दूसरी है mobile hotspot पर ADB/TCP चालू करने का तरीका, जहाँ Android “Please connect to WiFi” कहकर शिकायत करता हैइन दोनों को छोड़ दें तो scrcpy, KDE Connect और Waydroid की वजह से Linux-Android integration लगभग परफ़ेक्ट है, और Apple users को भी जलन हो सकती है
थोड़ा side topic है, लेकिन lockdown के दौरान iPhone को webcam की तरह इस्तेमाल करने का तरीका खोजते हुए मुझे VDO.Ninja मिला: https://vdo.ninja/
शुरू में यह OBS को video feed भेजने का साधन था, और उससे मैंने webcam input बनाया। project बड़ा हुआ तो browser के अंदर desktop video और audio sharing को सीधे दिखाने वाला, Zoom जैसा इस्तेमाल भी संभव हो गया, और इसी से मैं remote virtual movie nights चला पाया
room बनाने वाले UI से भी किया जा सकता है, लेकिन सिर्फ़ URL parameters से सब कुछ configure किया जा सकता था, इसलिए यह कहीं ज़्यादा flexible और robust था: https://docs.vdo.ninja/master/how-does-it-work
sender और receiver URLs बनाने पर वे WebRTC से अपने-आप connect हो जाते हैं। उदाहरण के लिए, VLC window capture करके video और audio भेजने वाला source बनाया जा सकता था, और दो destination URLs वह video/audio receive करते हुए अपने-अपने mic audio भी एक-दूसरे को भेज सकते थे। इसलिए browser के अंदर साथ में movie देखना-सुनना और बातचीत करना संभव था। मेरा इस project से कोई संबंध नहीं है, बस मुझे यह वाकई बेहतरीन लगता है
OBS वह tool है जिसका इस्तेमाल computer screen को Twitch जैसी जगहों पर stream करने के लिए किया जाता है: https://obsproject.com/
स्वागतयोग्य नया feature है। कंपनियाँ tracking features या portrait mode जैसी चीज़ों वाले cameras बनाने में समय और मेहनत लगाती रही हैं
हालांकि pandemic के समय, जब सब कुछ अचानक remote हो गया था और लोग webcam पाने के लिए परेशान थे, उस समय की तुलना में यह थोड़ा देर से आया लगता है। उस वक्त third-party apps खरीदवाने के बजाय यह feature दे दिया जाता तो अच्छा होता
मेरे लिए यह बहुत कम और बहुत देर से आया। मैं इस तरह का “hot take” देने वाला व्यक्ति नहीं बनना चाहता, लेकिन ज़रा सुनिए: 2013 तक मैं मोबाइल फोन के बिना सिर्फ़ landline इस्तेमाल करता था, फिर Nexus 4 से शुरू किया और हर 2–3 साल में बदलते हुए Pixel 6 तक आया। लेकिन कल मेरा पहला iPhone डिलीवर होने वाला है
वजहें कई हैं। Google फोन को external display से जोड़कर mirror नहीं किया जा सकता, और DisplayPort output को बिना किसी वजह source code में साफ़ तौर पर disable किया गया है: https://twitter.com/MishaalRahman/status/1189998588023234560 यह feature दूसरे फोन पर ठीक से काम करता है
Android फोन के text messages तक भी अलग app के बिना पहुंच नहीं मिलती।
adb backupकरके भी नहीं हुआ, और शायद root करने पर संभव हो, लेकिन मेरी जानकारी में आम तौर पर rooting process में सब कुछ wipe हो जाता हैफोन backup तक भी पहुंच नहीं है। वह सिर्फ़ Google servers पर store होता है, और उसके करीब पहुंचने का एकमात्र तरीका उसे फोन पर restore करना है। मैंने जो physical device खरीदी है वह मेरे हाथ में है, फिर भी उसके अंदर मौजूद हर चीज़ तक मेरी पहुंच नहीं है। iPhone को Windows या Mac से जोड़कर backup computer पर dump किया जा सकता है, और उसमें messages, system settings, contacts, photos, databases, लगभग सब कुछ होता है। शायद hardware protection keys जैसी चीज़ें ही exception हों
Google की चालबाज़ियों की तो बात ही मत कीजिए। messaging apps की भरमार, कई services बंद करना, कमज़ोर support, ads और tracking का और गहरा integration—ऐसी चीज़ें। Apple भी perfect नहीं है, लेकिन मुझे लगता है कि कुछ समय के लिए walled garden के अंदर जाना आज़माने लायक है। iOS में display output, अपनी device तक access, समझ में आने वाली messaging, और कम से कम privacy की परवाह करने जैसा एहसास है। विडंबना यह है कि Google products की तुलना में Apple products इस्तेमाल करते समय मुझे ज़्यादा control महसूस होता है
उदाहरण के लिए charging speed या अनुमानित charging time पता नहीं चल सकता, इसलिए यह confirm करना मुश्किल होता है कि कई chargers में से iPhone-compatible fast charger और cable चुने हैं या नहीं; और Chrome या Firefox installed होने के बावजूद text select करके web search दबाएं तो Safari में जाता है। ऐसी छोटी-छोटी परेशानियां बहुत हैं, और operating system इतना बंद है कि आप कुछ कर नहीं सकते
Android को customize करना कहीं ज़्यादा आसान है, और iPhone पर GBA emulator चलाने जैसी sideloading भी आसान है। Samsung flip phones जैसे ज़्यादा दिलचस्प devices भी Android ecosystem में कई हैं। Mac के साथ ecosystem integration अच्छा है, लेकिन यह कहना मुश्किल है कि कोई एक side साफ़ तौर पर बेहतर है
Google ने जिन services को बंद किया, उनमें से किसी ने मुझे प्रभावित नहीं किया, और messaging apps की भरमार से आपका मतलब क्या है यह भी मुझे ठीक से नहीं पता। किस तरह का support कम है, यह भी स्पष्ट नहीं है
Pixel 1 XL शानदार था, लेकिन करीब 2 साल बाद camera लगातार fail होने लगा, launch होने में 3 सेकंड से ज़्यादा लगते थे या वह अक्सर crash हो जाता था। आखिर में battery life खराब हो गई, और replacement battery भी कुछ महीनों में degrade हो गई, इसलिए आगे बढ़ गया
Pixel 3a security updates खत्म होने से दो महीने पहले जेब से गिरकर टूट गया। कुल मिलाकर ठीक phone था, लेकिन Google ने उतना लंबा support नहीं दिया जितनी उम्मीद थी। Pixel 6 Pro अब तक ठीक है, लेकिन मेरी पत्नी के Pixel 5 में slow performance और unstable cellular connection जैसी समस्याएं हैं
सीख शायद यह हो सकती है कि “Pixel phone मत खरीदो”, लेकिन alternatives security के लिहाज़ से और भी nightmare हो सकते हैं। Galaxy phones में हटाने लायक garbage apps अविश्वसनीय संख्या में pre-installed थे। Pixel में सिर्फ़ Google apps होते हैं और उनमें से ज़्यादातर हटाए जा सकते हैं, इसलिए 30 company apps पहले से installed होने और शायद उन्हें delete न कर पाने की तुलना में privacy और security की चिंता कम है
मैंने सालों तक Apple की बहुत आलोचना की है, इसलिए यह निराशाजनक है कि आखिरकार platform switch करना ही सबसे अच्छा लग रहा है
कुछ असुविधाएं काफ़ी irritate करने वाली लगती हैं, लेकिन इतनी नहीं कि मैं अपनी पसंद के computer पर code लिखने और उसे अपने phone या दोस्त के phone पर चलाने के लिए regular subscription fee दूं, और फिर उसे ऐसे reviewer को submit करूं जो किसी भी वजह से reject कर सकता है
ऐसे systems में root
adbaccess मिल सकता है, और फिर SQLite messages database तक भी access मिल जाता है। USB-C के DP alternate mode से screen mirroring default रूप से काम करती है, और Android का “desktop mode” भी enable किया जा सकता है, हालांकि वह काफ़ी basic और experimental state में हैFairphone लंबे समय तक support देता है, repair करना आसान है, और mainline kernel भी चला सकता है (postmarketOS आदि)। बेशक operating system के मामले में कोई भी Android phone अभी भी Google पर निर्भर रहता है
Google को लेकर कई शिकायतों से मैं सहमत हूं, लेकिन Apple की तरफ़ जाना एक बुराई को दूसरी बुराई से बदलने जैसा लगता है। मैं Apple phone को कभी “मेरा” नहीं कहूंगा, और मुझे यह भी नहीं लगता कि Apple “अपनी device तक access” देता है
मैं एक साल से ज़्यादा समय से Camo app इस्तेमाल कर रहा हूं। यह बहुत अच्छे से काम करता है, और Wi-Fi पर camera देखने को भी support करता है, इसलिए cable की ज़रूरत नहीं पड़ती। basic account free है: https://reincubate.com/camo/
यह तो कई सालों से किया जा रहा था। समझ नहीं आ रहा कि किस मायने में support अभी तक नहीं था
यह feature आ गया तो अभी 250 डॉलर का Pixel 6a market में value-for-money के लिहाज से सबसे अच्छा webcam बन सकता है
किसी बहुत ही परेशान करने वाली discount site पर लिखा था कि 6 महीने बाद carrier lock अपने-आप हट जाता है। Link नहीं दूँगा क्योंकि वह site बहुत irritating है। 6 महीने का timer शुरू करने के लिए phone को activate करना जरूरी है
मेरी जानकारी में Nokia N900 पर 2009 में gstreamer से यह संभव था। सच में video device बनाकर इस्तेमाल तो नहीं किया था, लेकिन
v4l2sinkतब भी पहले से रहा होगा। Remote window और OpenCV से streaming के लिए मैंने इसे कई बार इस्तेमाल किया थाअब तक मेरे पास रहा इकलौता सचमुच अच्छा phone वही था। काश Android devices पर भी चीजें इतनी आसान होतीं, लेकिन अजीब तरह से लगभग हमेशा ऐसा नहीं होता
वह भी मुश्किल काम है और सम्मान के लायक है। लेकिन लगता है कि software को लेकर यह कठोर और conservative नजरिया लंबे समय से बनने वाली चीजों पर पूरी तरह हावी रहा है। Power users को मजबूत आधार देने वाली computing लगातार कम होती जा रही है। Technology लगातार दूरी बढ़ा रही है और ज्यादा जटिल होती जा रही है। विडंबना यह है कि और गहराई में जाकर expert या explorer बनने के entry points हम लगातार खोते जा रहे हैं
अच्छा होगा अगर Android phone को dashcam की तरह इस्तेमाल किया जा सके। यह कब संभव होगा? यह तो स्वाभाविक feature जैसा लगता है
feature होना अच्छा है, लेकिन शायद ज्यादातर लोग Zoom के दौरान भी phone अपने हाथ में रखना चाहेंगे। फिर भी extra phone रखने वाले लोग काफी हो सकते हैं