मुख्य कंटेंट तक स्किप करें

JPEG Image लाइव स्ट्रीमिंग

डिवाइस का JPEG live-stream mode शुरू करें और SDK से मिली हर पूरी JPEG image render करें।

आवश्यकताएँ

  • डिवाइस connected और ready है तथा LiveStreamingAPI के अनुरूप है।
  • supportsJPEGImageLiveStreaming का मान true है।
  • आपका UI data callback को block किए बिना images decode और replace कर सकता है।

API संदर्भ

Framework

AIBuds.xcframework

Import

Swift
import AIBuds
import UIKit

गुण

Swift
/// Whether JPEG image live streaming is supported
var supportsJPEGImageLiveStreaming: Bool { get }

Instance विधि

Swift
/// Start JPEG image live streaming
/// - Parameters:
///   - sessionStartCompletionHandler: Session start completion handler
///   - jpegDataReceivedHandler: JPEG data received handler
///   - sessionFinishHandler: Session finish handler
func startJPEGImageLiveStreaming(
    withSessionStartCompletionHandler sessionStartCompletionHandler:
        AIBudsLiveStreamingSessionStartCompletionHandler?,
    jpegDataReceivedHandler: AIBudsLiveStreamingJpegDataReceivedHandler?,
    sessionFinishHandler: AIBudsLiveStreamingSessionFinishHandler?
)

startJPEGImageLiveStreaming देखें।

Callback मान

Handlerमानअर्थ
sessionStartCompletionHandlersuccess, errorLive-stream session शुरू हुआ या नहीं बताता है।
jpegDataReceivedHandlerjpegDataएक पूरी JPEG image को Data / NSData के रूप में देता है।
sessionFinishHandlerisUserInitiatedStop, errorअंतिम session result और stop उपयोगकर्ता ने शुरू किया था या नहीं बताता है।

Return मान

Method सीधे value return नहीं करता। Media और lifecycle results handlers से मिलते हैं।

उपयोग के उदाहरण

Swift
guard let streamingDevice = device as? LiveStreamingAPI,
    streamingDevice.supportsJPEGImageLiveStreaming
else { return }

streamingDevice.startJPEGImageLiveStreaming(
    withSessionStartCompletionHandler: { success, error in
        DispatchQueue.main.async {
            self.setStreamingActive(success)
            if let error { self.show(error) }
        }
    },
    jpegDataReceivedHandler: { jpegData in
        // Decode away from the UI update, then assign the image on the main queue.
        guard let image = UIImage(data: jpegData) else { return }
        DispatchQueue.main.async {
            self.imageView.image = image
        }
    },
    sessionFinishHandler: { userStopped, error in
        DispatchQueue.main.async {
            self.setStreamingActive(false)
            self.handleFinish(userStopped: userStopped, error: error)
        }
    }
)

त्रुटि प्रबंधन

  • अंतिम valid image बदले बिना invalid JPEG data reject करें।
  • sessionStartCompletionHandler failure को failed session start मानें।
  • sessionFinishHandler में user stop और interruption अलग करें और मौजूद होने पर error उपयोग करें।
  • SDK callback sequence से आगे frame loss, frame rate या ordering guarantee का अनुमान न लगाएँ।

श्रेष्ठ अभ्यास

  1. हर JPEG frame न रखें; displayed image बदलें या bounded buffer उपयोग करें।
  2. Callback backlog से बचने के लिए image decoding और UI assignment हल्के रखें।
  3. नया session शुरू होने पर frame counters और presentation state साफ़ करें।
  4. Feature छोड़ते समय केवल image view छिपाने के बजाय stopLiveStreaming() बुलाएँ।

नोट्स

  • Public SDK fixed JPEG resolution या frame rate तय नहीं करता।
  • JPEG mode को AIBudsLiveStream playback classes की आवश्यकता नहीं है।
  • jpegDataReceivedHandler compressed JPEG data देता है, raw pixel buffers नहीं।