प्रॉडक्ट से जुड़ी खबरें
CameraX 1.5 लॉन्च किया गया: वीडियो रिकॉर्ड करने की शानदार सुविधा और प्रोफ़ेशनल क्वालिटी की इमेज कैप्चर करने की सुविधा
सात मिनट में पढ़ें
CameraX की टीम को वर्शन 1.5 लॉन्च करने में खुशी हो रही है! इस नए अपडेट में, प्रोफ़ेशनल क्वालिटी की इमेज कैप्चर करने की सुविधा उपलब्ध कराई गई है. साथ ही, कैमरा सेशन को पहले से ज़्यादा आसानी से कॉन्फ़िगर किया जा सकता है.
वीडियो रिकॉर्ड करने के लिए, अब उपयोगकर्ता आसानी से स्लो-मोशन या हाई-फ़्रेम-रेट वाले शानदार वीडियो कैप्चर कर सकते हैं. सबसे अहम बात यह है कि नए फ़ीचर ग्रुप एपीआई की मदद से, 10-बिट एचडीआर और 60 FPS जैसे मुश्किल कॉम्बिनेशन को आसानी से चालू किया जा सकता है. इससे, काम करने वाले डिवाइसों पर एक जैसे नतीजे मिलते हैं.
इमेज कैप्चर करने के लिए, आपको बिना प्रोसेस किए और कंप्रेस किए गए DNG (RAW) फ़ाइलें कैप्चर करने की सुविधा मिलती है. इससे आपको ज़्यादा फ़्लेक्सिबिलिटी मिलती है. इसके अलावा, अब पावरफ़ुल कैमरा एक्सटेंशन का इस्तेमाल करते समय भी, अल्ट्रा एचडीआर आउटपुट का फ़ायदा लिया जा सकता है.
इन सुविधाओं के लिए, नया SessionConfig API उपलब्ध कराया गया है. इससे कैमरा सेट अप और रीकॉन्फ़िगरेशन की प्रोसेस आसान हो जाती है. अब इन शानदार नई सुविधाओं के बारे में विस्तार से जानते हैं.
वीडियो रिकॉर्ड करने की शानदार सुविधा: हाई-स्पीड और फ़ीचर कॉम्बिनेशन
CameraX 1.5 में, वीडियो से जुड़ी सुविधाओं को बेहतर बनाया गया है. इससे, ज़्यादा क्रिएटिव और शानदार वीडियो रिकॉर्ड किए जा सकते हैं.
स्लो मोशन और हाई फ़्रेम रेट वाला वीडियो
स्लो-मोशन वीडियो की सुविधा अब उपलब्ध है. यह उन सुविधाओं में से एक है जिनका हमें बेसब्री से इंतज़ार था. अब हाई-स्पीड वीडियो (जैसे, 120 या 240 fps) कैप्चर किया जा सकता है और इसे सीधे स्लो-मोशन वीडियो में एनकोड किया जा सकता है. इसके अलावा, बहुत स्मूद वीडियो बनाने के लिए, उसी हाई फ़्रेम रेट पर रिकॉर्ड किया जा सकता है.
अगर आपको VideoCapture API के बारे में जानकारी है, तो इसे लागू करना आसान है.
1. हाई-स्पीड की सुविधा की जांच करना: यह क्वेरी करने के लिए कि डिवाइस पर यह सुविधा काम करती है या नहीं, Recorder.getHighSpeedVideoCapabilities() के नए तरीके का इस्तेमाल करें.
val cameraInfo = cameraProvider.getCameraInfo(cameraSelector)
val highSpeedCapabilities = Recorder.getHighSpeedVideoCapabilities(cameraInfo)
if (highSpeedCapabilities == null) {
// This camera device does not support high-speed video.
return
}2. इस्तेमाल के उदाहरण को कॉन्फ़िगर और बाइंड करना: videoCapabilities (जिसमें वीडियो की क्वालिटी से जुड़ी जानकारी होती है) का इस्तेमाल करके, HighSpeedVideoSessionConfig बनाएं. इसके बाद, cameraInfo.getSupportedFrameRateRanges() के ज़रिए, काम करने वाले फ़्रेम रेट की रेंज की क्वेरी करनी होगी और मनचाही रेंज सेट करनी होगी. स्लो मोशन वीडियो रिकॉर्ड करने के लिए, setSlowMotionEnabled(true) को लागू करें. ऐसा न करने पर, हाई-फ़्रेम-रेट वाले वीडियो रिकॉर्ड होंगे. वीडियो रिकॉर्ड करने के लिए, सामान्य Recorder.prepareRecording().start() का इस्तेमाल करें.
val preview = Preview.Builder().build()
val quality = highSpeedCapabilities
.getSupportedQualities(DynamicRange.SDR).first()
val recorder = Recorder.Builder()
.setQualitySelector(QualitySelector.from(quality)))
.build()
val videoCapture = VideoCapture.withOutput(recorder)
val frameRateRange = cameraInfo.getSupportedFrameRateRanges(
HighSpeedVideoSessionConfig(videoCapture, preview)
).first()
val sessionConfig = HighSpeedVideoSessionConfig(
videoCapture,
preview,
frameRateRange = frameRateRange,
// Set true for slow-motion playback, or false for high-frame-rate
isSlowMotionEnabled = true
)
cameraProvider.bindToLifecycle(
lifecycleOwner, cameraSelector, sessionConfig)
// Start recording slow motion videos.
val recording = recorder.prepareRecording(context, outputOption)
.start(executor, {})काम करने वाले डिवाइस और सीमाएं
हाई-स्पीड रिकॉर्डिंग के लिए, CameraConstrainedHighSpeedCaptureSession और CamcorderProfile की सुविधा काम करनी चाहिए. उपयोगकर्ताओं को बेहतर अनुभव देने के लिए, हमेशा यह जांच करें कि डिवाइस पर हाई-स्पीड रिकॉर्डिंग की सुविधा काम करती है या नहीं. साथ ही, इस सुविधा को सिर्फ़ उन डिवाइसों पर चालू करें जिन पर यह काम करती है. फ़िलहाल, यह सुविधा लगभग सभी Pixel डिवाइसों के बैक कैमरे और अन्य कंपनियों के चुनिंदा मॉडल पर उपलब्ध है.
ज़्यादा जानकारी के लिए, ब्लॉग पोस्ट देखें.
फ़ीचर ग्रुप एपीआई की मदद से, सुविधाओं को आसानी से मिलाएं
CameraX 1.5 में फ़ीचर ग्रुप एपीआई उपलब्ध कराया गया है. इससे, यह अनुमान लगाने की ज़रूरत नहीं पड़ती कि कौनसी सुविधाएं एक साथ काम कर सकती हैं. Android 15 के फ़ीचर कॉम्बिनेशन क्वेरी एपीआई के आधार पर, अब एक साथ कई सुविधाएं चालू की जा सकती हैं. इससे, कैमरा सेशन के दौरान कोई समस्या नहीं आती. फ़िलहाल, फ़ीचर ग्रुप में ये सुविधाएं उपलब्ध हैं: एचडीआर (HLG), 60 fps, प्रीव्यू स्टेबलाइज़ेशन, और अल्ट्रा एचडीआर. उदाहरण के लिए, Pixel 10 और Galaxy S25 सीरीज़ पर, एचडीआर, 60 fps, और प्रीव्यू स्टेबलाइज़ेशन को एक साथ चालू किया जा सकता है. आने वाले समय में, 4K रिकॉर्डिंग और अल्ट्रा-वाइड ज़ूम की सुविधा भी उपलब्ध कराई जाएगी.
फ़ीचर ग्रुप एपीआई की मदद से, इन दो ज़रूरी कामों को किया जा सकता है:
इस्तेमाल का पहला उदाहरण: सबसे अच्छी क्वालिटी को प्राथमिकता देना
अगर आपको सुविधाओं के सबसे अच्छे कॉम्बिनेशन का इस्तेमाल करके वीडियो कैप्चर करना है, तो प्राथमिकता के हिसाब से सुविधाओं की सूची दी जा सकती है. CameraX, सूची में दी गई सुविधाओं को क्रम से चालू करने की कोशिश करेगा. साथ ही, उन सुविधाओं के पहले कॉम्बिनेशन को चुनेगा जो डिवाइस पर पूरी तरह से काम करता है.
val sessionConfig = SessionConfig(
useCases = listOf(preview, videoCapture),
preferredFeatureGroup = listOf(
GroupableFeature.HDR_HLG10,
GroupableFeature.FPS_60,
GroupableFeature.PREVIEW_STABILIZATION
)
).apply {
// (Optional) Get a callback with the enabled features to update your UI.
setFeatureSelectionListener { selectedFeatures ->
updateUiIndicators(selectedFeatures)
}
}
processCameraProvider.bindToLifecycle(activity, cameraSelector, sessionConfig)इस उदाहरण में, CameraX इन क्रम में सुविधाओं को चालू करने की कोशिश करता है:
- एचडीआर + 60 FPS + प्रीव्यू स्टेबलाइज़ेशन
- एचडीआर + 60 FPS
- एचडीआर + प्रीव्यू स्टेबलाइज़ेशन
- एचडीआर
- 60 FPS + प्रीव्यू स्टेबलाइज़ेशन
- 60 FPS
- प्रीव्यू स्टेबलाइज़ेशन
- कोई नहीं
इस्तेमाल का दूसरा उदाहरण: उपयोगकर्ताओं के लिए सेटिंग का यूज़र इंटरफ़ेस (यूआई) बनाना
अब सेटिंग के यूज़र इंटरफ़ेस (यूआई) में, यह सटीक तौर पर दिखाया जा सकता है कि आपके ऐप्लिकेशन में कौनसे फ़ीचर कॉम्बिनेशन काम करते हैं. साथ ही, नीचे दी गई इमेज की तरह, काम न करने वाले विकल्पों के लिए टॉगल बंद किए जा सकते हैं.
टॉगल को धुंधला करना है या नहीं, यह तय करने के लिए, फ़ीचर कॉम्बिनेशन की सुविधा की जांच करने के लिए, इन कोड का इस्तेमाल करें. शुरुआत में, हर सुविधा की स्थिति की क्वेरी करें. किसी सुविधा को चालू करने के बाद, बाकी सुविधाओं की क्वेरी करें. साथ ही, यह देखें कि अब काम करने से जुड़ी पाबंदियों की वजह से, उनके टॉगल धुंधले करने ज़रूरी हैं या नहीं.
fun disableFeatureIfNotSuported(
enabledFeatures: Set<GroupableFeature>,
featureToCheck:GroupableFeature
) {
val sessionConfig = SessionConfig(
useCases = useCases,
requiredFeatureGroup = enabledFeatures + featureToCheck
)
val isSupported = cameraInfo.isFeatureGroupSupported(sessionConfig)
if (!isSupported) {
// disable the toggle for featureToCheck
}
}ज़्यादा जानकारी के लिए, फ़ीचर ग्रुप के बारे में बनी ब्लॉग पोस्ट देखें.
वीडियो को बेहतर बनाने की अन्य सुविधाएं
- कैमरे से जुड़ी सुविधाओं में एक साथ सुधार: CameraX 1.5.1 की मदद से, अब नॉन-कंपोज़िशन मोड में, हर SingleCameraConfig के लिए, प्रीव्यू + ImageCapture + VideoCapture के इस्तेमाल के उदाहरणों को एक साथ बाइंड किया जा सकता है. इसके अलावा, कंपोज़िशन मोड (CompositionSettings के साथ इस्तेमाल के वही उदाहरण) में, अब
CameraEffectसेट किया जा सकता है. यह फ़ाइनल कंपोज़िशन के नतीजे पर लागू होता है. - डाइनैमिक म्यूटिंग: अब
PendingRecording.withAudioEnabled(boolean initialMuted)का इस्तेमाल करके, म्यूट की गई स्थिति में रिकॉर्डिंग शुरू की जा सकती है. साथ ही, उपयोगकर्ता कोRecording.mute(boolean muted)का इस्तेमाल करके, बाद में अनम्यूट करने की अनुमति दी जा सकती है. - स्टोरेज कम होने की समस्या को बेहतर तरीके से हैंडल करना: CameraX अब
VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGEगड़बड़ी की जानकारी देता है. इससे, आपका ऐप्लिकेशन स्टोरेज कम होने की स्थितियों को आसानी से हैंडल कर सकता है और उपयोगकर्ता को इसकी जानकारी दे सकता है. - कम रोशनी में बेहतर रिकॉर्डिंग: काम करने वाले डिवाइसों (जैसे, Pixel 10 सीरीज़) पर, CameraControl.enableLowLightBoostAsync को चालू करके, अंधेरे वाले माहौल में प्रीव्यू और वीडियो स्ट्रीम को अपने-आप बेहतर बनाया जा सकता है.
प्रोफ़ेशनल क्वालिटी की इमेज कैप्चर करने की सुविधा
CameraX 1.5 में, ImageCapture को बेहतर बनाया गया है. इससे, डेवलपर को बेहतर क्वालिटी और ज़्यादा फ़्लेक्सिबिलिटी मिलती है.
DNG (RAW) कैप्चर की मदद से, क्रिएटिविटी दिखाएं
पोस्ट-प्रोसेसिंग पर पूरी तरह से कंट्रोल पाने के लिए, CameraX अब DNG (RAW) कैप्चर की सुविधा देता है. इससे, कैमरे के सेंसर से सीधे तौर पर, बिना प्रोसेस किए और कंप्रेस किए गए इमेज डेटा को ऐक्सेस किया जा सकता है. इससे, प्रोफ़ेशनल क्वालिटी की एडिटिंग और कलर ग्रेडिंग की जा सकती है. एपीआई की मदद से, सिर्फ़ DNG फ़ाइल कैप्चर की जा सकती है. साथ ही, JPEG और DNG आउटपुट को एक साथ कैप्चर किया जा सकता है. JPEG और DNG फ़ाइलें एक साथ कैप्चर करने का तरीका जानने के लिए, यहां दिया गया सैंपल कोड देखें.
val capabilities = ImageCapture.getImageCaptureCapabilities(cameraInfo)
val imageCapture = ImageCapture.Builder().apply {
if (capabilities.supportedOutputFormats
.contains(OUTPUT_FORMAT_RAW_JPEG)) {
// Capture both RAW and JPEG formats.
setOutputFormat(OUTPUT_FORMAT_RAW_JPEG)
}
}.build()
// ... bind imageCapture to lifecycle ...
// Provide separate output options for each format.
val outputOptionRaw = /* ... configure for image/x-adobe-dng ... */
val outputOptionJpeg = /* ... configure for image/jpeg ... */
imageCapture.takePicture(
outputOptionRaw,
outputOptionJpeg,
executor,
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(results: OutputFileResults) {
// This callback is invoked twice: once for the RAW file
// and once for the JPEG file.
}
override fun onError(exception: ImageCaptureException) {}
}
)कैमरा एक्सटेंशन के लिए अल्ट्रा एचडीआर की सुविधा
कैमरा एक्सटेंशन (जैसे, नाइट मोड) की शानदार कंप्यूटेशनल फ़ोटोग्राफ़ी के साथ-साथ, अल्ट्रा एचडीआर के शानदार रंग और डाइनैमिक रेंज का फ़ायदा लें. यह सुविधा, हाल ही में लॉन्च हुए कई प्रीमियम Android फ़ोन पर उपलब्ध है. जैसे, Pixel 9/10 सीरीज़ और Samsung S24/S25 सीरीज़.
// Support UltraHDR when Extension is enabled.
val extensionsEnabledCameraSelector = extensionsManager
.getExtensionEnabledCameraSelector(
CameraSelector.DEFAULT_BACK_CAMERA, ExtensionMode.NIGHT)
val imageCapabilities = ImageCapture.getImageCaptureCapabilities(
cameraProvider.getCameraInfo(extensionsEnabledCameraSelector)
val imageCapture = ImageCapture.Builder()
.apply {
if (imageCapabilities.supportedOutputFormats
.contains(OUTPUT_FORMAT_JPEG_ULTRA_HDR) {
setOutputFormat(OUTPUT_FORMAT_JPEG_ULTRA_HDR)
}
}.build()मुख्य एपीआई और डिवाइस का बेहतर तरीके से इस्तेमाल
कॉन्फ़िगर करने का नया तरीका: SessionConfig
ऊपर दिए गए उदाहरणों में देखा जा सकता है कि SessionConfig, CameraX 1.5 में एक नया कॉन्सेप्ट है. यह कॉन्फ़िगरेशन को केंद्रीकृत करता है और एपीआई को इन दो मुख्य तरीकों से आसान बनाता है:
- अब
unbind()कॉल को मैन्युअल तरीके से करने की ज़रूरत नहीं है: CameraX एपीआई, लाइफ़साइकल के बारे में जानकारी रखते हैं. जब गतिविधि या अन्यLifecycleOwnerबंद हो जाता है, तो यह आपके इस्तेमाल के उदाहरणों को अपने-आप “अनबाइंड” कर देगा. हालांकि, इस्तेमाल के उदाहरणों को अपडेट करने या कैमरे बदलने के लिए, आपको फिर से बाइंड करने से पहले,unbind()याunbindAll()को कॉल करना होगा. अब CameraX 1.5 की मदद से, नयाSessionConfigबाइंड करने पर, CameraX आपके लिए सेशन को आसानी से अपडेट कर देता है. इससे, अनबाइंड कॉल करने की ज़रूरत नहीं पड़ती. - फ़्रेम रेट को कंट्रोल करने का तय तरीका:
SessionConfigका नया एपीआई, फ़्रेम रेट को मैनेज करने का तय तरीका उपलब्ध कराता है. पिछलाsetTargetFrameRateसिर्फ़ एक हिंट था. हालांकि, यह नया तरीका गारंटी देता है कि कॉन्फ़िगरेशन के सफल होने पर, तय की गई फ़्रेम रेट की रेंज लागू की जाएगी. सटीक जानकारी पाने के लिए,CameraInfo.getSupportedFrameRateRanges(SessionConfig)का इस्तेमाल करके, काम करने वाले फ़्रेम रेट की क्वेरी करनी होगी. पूराSessionConfigपास करके, CameraX स्ट्रीम कॉन्फ़िगरेशन के आधार पर, काम करने वाली रेंज का सटीक तौर पर पता लगा सकता है.
Camera-Compose अब स्टेबल है
हमें पता है कि आपको Jetpack Compose कितना पसंद है. हमें यह बताते हुए खुशी हो रही है कि camera-compose लाइब्रेरी का वर्शन 1.5.1 अब स्टेबल है! इस रिलीज़ में, CameraXViewfinder के इस्तेमाल से जुड़ी अहम गड़बड़ियों को ठीक किया गया है. इनमें Compose की सुविधाएं शामिल हैं. जैसे, moveableContentOf और Pager. साथ ही, प्रीव्यू स्ट्रेच होने की समस्या को भी ठीक किया गया है. आने वाली रिलीज़ में, हम camera-compose में और सुविधाएं जोड़ेंगे.
ImageAnalysis और CameraControl में सुधार
- टॉर्च की रोशनी को अडजस्ट करना: नए एपीआई की मदद से, डिवाइस की टॉर्च की रोशनी को बेहतर तरीके से कंट्रोल किया जा सकता है. CameraInfo.getMaxTorchStrengthLevel() का इस्तेमाल करके, ज़्यादा से ज़्यादा रोशनी की क्वेरी की जा सकती है. इसके बाद, CameraControl.setTorchStrengthLevel() की मदद से, मनचाही रोशनी सेट की जा सकती है.
- NV21 की सुविधा
ImageAnalysis: अबImageAnalysisसे सीधे NV21 इमेज फ़ॉर्मैट का अनुरोध किया जा सकता है. इससे, अन्य लाइब्रेरी और एपीआई के साथ इंटिग्रेशन आसान हो जाता है.ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21)को लागू करके, यह सुविधा चालू की जा सकती है.
आज ही शुरू करें
आज ही अपनी डिपेंडेंसी को CameraX 1.5 पर अपडेट करें और नई सुविधाओं के बारे में जानें. हमें यह देखने का बेसब्री से इंतज़ार है कि आप क्या बनाते हैं.
CameraX 1.5 का इस्तेमाल करने के लिए, कृपया अपनी libs.versions.toml में ये डिपेंडेंसी जोड़ें. (हमारा सुझाव है कि 1.5.1 का इस्तेमाल करें. इसमें, अहम गड़बड़ियों को ठीक किया गया है. साथ ही, कैमरे से जुड़ी सुविधाओं में भी सुधार किया गया है.)
[versions]
camerax = "1.5.1"
[libraries]
..
androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "camerax" }
androidx-camera-compose = { module = "androidx.camera:camera-compose", version.ref = "camerax" }
androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "camerax" }
androidx-camera-lifecycle = { group = "androidx.camera", name = "camera-lifecycle", version.ref = "camerax" }
androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "camerax" }
androidx-camera-extensions = { module = "androidx.camera:camera-extensions", version.ref = "camerax" }इसके बाद, इन्हें अपने मॉड्यूल build.gradle.kts डिपेंडेंसी में जोड़ें:
dependencies {
..
implementation(libs.androidx.camera.core)
implementation(libs.androidx.camera.lifecycle)
implementation(libs.androidx.camera.camera2)
implementation(libs.androidx.camera.view) // for PreviewView
implementation(libs.androidx.camera.compose) // for compose UI
implementation(libs.androidx.camera.extensions) // For Extensions
}क्या आपके कोई सवाल हैं या आपको CameraX की टीम से संपर्क करना है? CameraX डेवलपर के चर्चा ग्रुप में शामिल हों या गड़बड़ी की रिपोर्ट करें:
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
हर साल, Google I/O में अलग-अलग इकोसिस्टम और प्रॉडक्ट के बारे में नई घोषणाएं और संसाधन उपलब्ध कराए जाते हैं. इनमें Android डेवलपमेंट भी शामिल है. डेवलपमेंट, एआई और एजेंट की मदद से काम करने वाले टूल की ओर बढ़ रहा है. इसलिए, हमने अपनी पेशकशों को बढ़ाया है, ताकि Android के लिए डेवलपमेंट करने के तरीके के हिसाब से आपको बेहतर सहायता मिल सके.
Simona Milanovic • दो मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O ‘26 में, हमने दिखाया कि Android इकोसिस्टम में हुए नए बदलावों की मदद से, अपने ऐप्लिकेशन की क्वालिटी को कैसे बेहतर बनाया जा सकता है. साथ ही, डेवलपमेंट की प्रोसेस को कैसे ज़्यादा असरदार बनाया जा सकता है.
Ataul Munim • तीन मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Google I/O 2026 में, हमने बताया कि Android अब सिर्फ़ एक ऑपरेटिंग सिस्टम नहीं है, बल्कि एक इंटेलिजेंस सिस्टम है. हमने यह भी दिखाया कि सिस्टम के साथ, नेटिव तौर पर इंटेलिजेंट अनुभव कैसे बनाए जा सकते हैं. साथ ही, अपने ऐप्लिकेशन में Google के एआई की सुविधा कैसे जोड़ी जा सकती है.
Jingyu Shi • दो मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी अहम जानकारी हर हफ़्ते अपने इनबॉक्स में पाएं.