SDK Siaran IVS: Sumber Gambar Khusus (Streaming Latensi Rendah) - Amazon Interactive Video Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

SDK Siaran IVS: Sumber Gambar Khusus (Streaming Latensi Rendah)

Panduan ini mengasumsikan Anda sudah terbiasa dengan cara menyiapkan sesi siaran (Android,iOS) dan bagaimana caranyagunakan API mixer.

Sumber input gambar khusus memungkinkan aplikasi menyediakan input gambarnya sendiri ke SDK siaran, alih-alih dibatasi pada kamera preset atau berbagi layar. Sumber gambar khusus bisa sesederhana tanda air semi-transparan atau adegan statis “be right back”, atau dapat memungkinkan aplikasi untuk melakukan pemrosesan khusus tambahan seperti menambahkan filter kecantikan ke kamera.

Anda dapat memiliki beberapa sumber gambar khusus, seperti tanda air plus kamera dengan filter kecantikan. Bila Anda menggunakan sumber input gambar khusus untuk kontrol kustom kamera (seperti menggunakan pustaka filter kecantikan yang memerlukan akses kamera), SDK siaran tidak lagi bertanggung jawab untuk mengelola kamera. Sebagai gantinya, aplikasi bertanggung jawab untuk menangani siklus hidup kamera dengan benar. Lihat dokumentasi platform resmi tentang bagaimana aplikasi Anda mengelola kamera.

Android

Setelah Anda membuat sesi siaran, buat sumber masukan gambar:

SurfaceSource surfaceSource = broadcastSession.createImageInputSource();

Metode ini mengembalikanSurfaceSource, yang merupakan sumber gambar yang didukung oleh Android standarPermukaan. Secara otomatis dilampirkan ke sesi siaran, jadi tidak perlu menggunakanattachDevice(...)metode sesudahnya. Namun,SurfaceSourceperlu terikat ke slot; ini dibahas nanti di bawah ini. YangSurfaceSourcedapat diubah ukurannya dan diputar. Anda juga dapat membuatImagePreviewViewuntuk menampilkan pratinjau isinya.

Untuk mengambil yang mendasariSurface:

Surface surface = surfaceSource.getInputSurface();

IniSurfacedapat digunakan sebagai buffer keluaran untuk produsen gambar seperti Camera2, OpenGL ES, dan pustaka lainnya. Kasus penggunaan yang paling sederhana adalah langsung menggambar bitmap statis atau warna ke Canvas Surface. Namun, banyak pustaka (seperti pustaka filter kecantikan) menyediakan metode yang memungkinkan aplikasi untuk menentukan eksternalSurfaceuntuk rendering. Anda dapat menggunakan metode seperti itu untuk melewati iniSurfaceke pustaka filter, yang memungkinkan perpustakaan untuk menampilkan frame yang diproses untuk sesi siaran untuk streaming.

Akhirnya,SurfaceSourceharus terikat keMixer.Slotuntuk dialirkan oleh sesi siaran:

broadcastSession.getMixer().bind(surfaceSource, "customSlot");

YangKode sampel Androidmemiliki beberapa contoh yang menggunakan sumber gambar kustom dengan cara yang berbeda:

  • Tanda air semi-transparan ditambahkan diMixerActivity.

  • File MP4 dilingkarkan diMixerActivity.

  • YangCameraManagerkelas utilitas melakukan pengelolaan kustom kamera perangkat menggunakan metode Camera2 diCustomActivity, yang menerapkan filter sepia sederhana. Contoh ini sangat membantu karena menunjukkan cara mengelola kamera dan meneruskan kebiasaan sesi siaranSurfaceSourceke permintaan pengambilan kamera. Jika Anda menggunakan pustaka eksternal lainnya, ikuti dokumentasi mereka tentang cara mengkonfigurasi pustaka ke output ke AndroidSurfacedisediakan oleh sesi siaran.

iOS

Setelah Anda membuat sesi siaran, buat sumber masukan gambar:

let customSource = broadcastSession.createImageSource(withName: "customSourceName")

Metode ini mengembalikanIVSCustomImageSource, yang merupakan sumber gambar yang memungkinkan aplikasi untuk mengirimkanCMSampleBufferssecara manual. Untuk format piksel yang didukung, lihat Referensi SDK Siaran iOS; tautan ke versi terbaru ada diCatatan Rilis Amazon IVSuntuk rilis SDK siaran terbaru. Sumber tidak secara otomatis dilampirkan ke sesi siaran, jadi Anda harus melampirkan sumber gambar ke sesi dan mengikatnya ke slot sebelum sumber akan streaming:

broadcastSession.attach(customSource, toSlotWithName: "customSourceSlot", onComplete: nil)

Setelah sumber kustom dilampirkan dan terikat, aplikasi dapat mengirimkanCMSampleBufferslangsung ke sumber kustom. Anda dapat memilih untuk menggunakanonCompletecallback untuk mulai melakukannya.

Sampel yang dikirimkan ke sumber khusus akan dialirkan dalam sesi siaran:

customSource.onSampleBuffer(sampleBuffer)

Untuk streaming video, gunakan metode ini dalam callback. Misalnya, jika Anda menggunakan kamera, maka setiap kali buffer sampel baru diterima dari sebuahAVCaptureSession, aplikasi dapat meneruskan buffer sampel ke sumber gambar khusus. Jika diinginkan, aplikasi dapat menerapkan pemrosesan lebih lanjut (seperti filter kecantikan) sebelum mengirimkan sampel ke sumber gambar khusus.

Untuk gambar statis, setelah sampel pertama, aplikasi perlu mengirimkan ulang sampel jika pengikatan slot sumber gambar kustom diubah atau sumbernya terlepas dan dipasang kembali ke sesi siaran. Misalnya, jika Anda menghapus slot dari dan kemudian menambahkan slot ke mixer, Anda harus mengirimkan kembali sampel.

YangAplikasi sampel iOSmemiliki beberapa contoh yang menggunakan sumber gambar kustom dengan cara yang berbeda:

  • Tanda air semi-transparan ditambahkanMixerViewController.

  • File MP4 dilingkarkanMixerViewController.

  • Implementasi CIFilter dengan kamera perangkat ditambahkanCustomSourcesViewController. Ini memungkinkan aplikasi untuk mengelola kamera perangkat secara independen dari Amazon IVS Broadcast SDK. Ini menggunakanAVCaptureSessionuntuk menangkap gambar dari kamera perangkat, memproses gambar menggunakan implementasi CIFilter, dan mengirimkanCMSampleBufferskepadacustomSourceuntuk live streaming.