Ana içeriğe geç

JPEG Görüntü Canlı Yayını

Cihazın JPEG canlı yayın modunu başlatın ve SDK'nın ilettiği her eksiksiz JPEG görüntüsünü ekranda gösterin.

Ön Koşullar

  • Cihaz bağlı ve hazırdır; LiveStreamingAPI protokolüne uyar.
  • supportsJPEGImageLiveStreaming değeri true olmalıdır.
  • Kullanıcı arayüzünüz, veri callback’ini engellemeden görüntülerin kodunu çözebilmeli ve görüntüyü yenileyebilmelidir.

API Referansı

Framework

AIBuds.xcframework

İçe Aktarma

Swift
import AIBuds
import UIKit

Özellikler

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

Örnek Yöntemi

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 öğesine bakın.

Callback Değerleri

İşleyiciDeğerlerAnlamı
sessionStartCompletionHandlersuccess, errorCanlı yayın oturumunun başlayıp başlamadığını bildirir.
jpegDataReceivedHandlerjpegDataEksiksiz bir JPEG görüntüsünü Data / NSData olarak iletir.
sessionFinishHandlerisUserInitiatedStop, errorOturumun nihai sonucunu ve durdurmanın kullanıcı tarafından başlatılıp başlatılmadığını bildirir.

Dönüş Değeri

Yöntem doğrudan değer döndürmez. Medya ve yaşam döngüsü sonuçları işleyiciler aracılığıyla iletilir.

Kullanım Örnekleri

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)
        }
    }
)

Hata Yönetimi

  • Geçersiz JPEG verisini reddedin; son geçerli görüntüyü değiştirmeyin.
  • sessionStartCompletionHandler hatasını başarısız oturum başlangıcı olarak ele alın.
  • sessionFinishHandler içinde kullanıcı durdurmasıyla kesintiyi ayırın; varsa error değerini kullanın.
  • SDK’nın sağladığı callback sırasının ötesinde kare kaybı, kare hızı veya sıralama garantisi çıkarmayın.

En İyi Uygulamalar

  1. Her JPEG karesini saklamayın; gösterilen görüntüyü değiştirin veya sınırlı tampon kullanın.
  2. Callback birikmesini önlemek için görüntü kod çözme ve kullanıcı arayüzüne atama işlemlerini hafif tutun.
  3. Yeni oturum başladığında kare sayaçlarını ve sunum durumunu temizleyin.
  4. Özellikten çıkarken yalnızca görüntü görünümünü gizlemek yerine stopLiveStreaming() çağırın.

Notlar

  • Genel SDK sabit bir JPEG çözünürlüğü veya kare hızı belirtmez.
  • JPEG modu AIBudsLiveStream oynatma sınıflarını gerektirmez.
  • jpegDataReceivedHandler, ham piksel tamponları yerine sıkıştırılmış JPEG verisi sağlar.