Demo Beberapa Host di IVS - Amazon IVS

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

Demo Beberapa Host di IVS

Skenario: Alice (A) menyiarkan ke saluran Amazon IVS-nya dan ingin mengundang Bob (B) di atas panggung sebagai tamu. (Dalam siaran nyata, A dan B akan menjadi gambar Alice dan Bob.)

Skenario Demo: Alice (A) menyiarkan ke saluran Amazon IVS-nya dan ingin mengundang Bob (B) di atas panggung sebagai tamu.

1. Buat Panggung

Berikut adalah CreateStagepermintaan menggunakan Amazon IVS Stage API:

POST /CreateStage HTTP/1.1 Content-type: application/json { "name": "string", "participantTokenConfigurations": [ { "userId": "9529828585", "attributes": {"displayName": "Alice"} }, { "userId": "4875935192", "attributes": {"displayName": "Bob"} } ] }

Anda dapat membuat token peserta terlebih dahulu saat membuat panggung, seperti yang dilakukan di sini. Anda juga dapat membuat token untuk tahap yang ada, dengan menelepon CreateParticipantToken. Untuk setiap peserta, Anda dapat meneruskan kustom userId dan setattributes. (Penting: Bidang attributes dan userId permintaan diekspos ke semua peserta tahap. Ini tidak boleh digunakan untuk mengidentifikasi pribadi, rahasia, atau informasi sensitif.)

Berikut adalah respon jaringan untuk permintaan di atas:

HTTP/1.1 200 Content-type: application/json { "stage": { "arn": "arn:aws:ivs:us-west-2:123456789012:stage/abcdABCDefgh", "name": "alice-stage" }, "participantTokens": [ { "participantId": "e94e506e-f7...", "token": "eyJhbGci0iJ...", "userId": "9529828585", "attributes": {"displayName" : "Alice"}, "expirationTime": number }, { "participantId": "b5c6a79a-6e...", "token": "eyJhbGci0iJ...", "userId": "4875935192", "attributes": {"displayName" : "Bob"}, "expirationTime": number } ] }

2. Mendistribusikan Token Peserta

Klien sekarang memiliki token untuk Alice (A) dan Bob (B). Secara default, token berlaku selama 1 jam; secara opsional Anda dapat meneruskan kustom duration saat Anda membuat panggung. Token dapat digunakan untuk bergabung dengan panggung.

Cara mendistribusikan token dari server Anda ke setiap klien (misalnya, melalui WebSocket saluran). Kami tidak menyediakan fungsi ini.

Anda akan memerlukan cara untuk mendistribusikan token dari server Anda ke setiap klien (misalnya, melalui WebSocket saluran). Kami tidak menyediakan fungsi ini.

3. Bergabunglah dengan Panggung

Peserta dapat bergabung dengan panggung melalui Amazon IVS Broadcast SDK di Android atau iOS. Anda dapat mengonfigurasi kualitas video setiap peserta. Di sini kami menunjukkan Alice bergabung dengan panggung terlebih dahulu.

Berikut ini ikhtisar arsitektur:

Peserta dapat bergabung dengan panggung melalui Amazon Broadcast SDK di Android atau iOS. Di sini kami menunjukkan Alice bergabung dengan panggung terlebih dahulu.

Dan di sini adalah contoh kode Android untuk bergabung dengan panggung. Cuplikan kode di bawah ini akan berjalan di perangkat Alice. Dalam join() panggilan itu, Alice bergabung dengan panggung. Gambar di atas menunjukkan hasil eksekusi kode ini: Alice telah bergabung dengan panggung dan menerbitkannya (selain menyiarkan ke salurannya, yang mulai dia lakukan pada langkah 1).

// Create streams with the front camera and first microphone. var deviceDiscovery = DeviceDiscovery(context) var devices : List<Device> = deviceDiscovery.listLocalDevices() var publishStreams = ArrayList<LocalStageStream>() // Configure video quality if desired var videoConfiguration = StageVideoConfiguration() // Create front camera stream var frontCamera = devices.find { it.descriptor.type == Device.Descriptor.DeviceType.Camera && it.descriptor.position == Device.Descriptor.Position.FRONT } var cameraStream = ImageLocalStageStream(frontCamera, videoConfiguration) publishStreams.add(cameraStream) // Create first microphone stream var microphone = devices.find { it.descriptor.type == Device.Descriptor.DeviceType.Microphone } var microphoneStream = AudioLocalStageStream(microphone) publishStreams.add(microphoneStream) // A basic Stage.Strategy implementation that indicates the user always wants to publish and subscribe to other participants. // Provides the front camera and first microphone as publish streams. override fun shouldPublishFromParticipant(stage: Stage, participantInfo: ParticipantInfo) : Boolean { return true } override fun shouldSubscribeToParticipant(stage: Stage, participantInfo: ParticipantInfo) : Stage.SubscribeType { return Stage.SubscribeType.AUDIO_VIDEO } override fun stageStreamsToPublishForParticipant(stage: Stage, participantInfo: ParticipantInfo): List<LocalStageStream> { return publishStreams } // Create Stage using the strategy and join var stage = Stage(context, token, strategy) try { stage.join() } catch (exception: BroadcastException) { // handle join exception }

4. Siarkan Panggung

Komposisi Sisi Klien

Menyiarkan panggung: komposisi sisi klien.

Berikut adalah contoh kode Android untuk menyiarkan panggung:

var broadcastSession = BroadcastSession(context, broadcastListener, configuration, null) // StageRenderer interface method to be notified when remote streams are available override fun onStreamsAdded(stage: Stage, participantInfo: ParticipantInfo, streams: List<StageStream>) { var id = participantInfo.participantId // Create mixer slot for remote participant var slot = BroadcastConfiguration.Mixer.Slot.with { s -> s.name = id // Set other properties as desired ... s } broadcastSession.mixer.addSlot(slot) // Attach remote stream devices, bind to mixer slot streams.forEach { stream -> broadcastSession.attachDevice(stream.getDevice()) broadcastSession.mixer.bind(stream.getDevice(), id) } } // Start broadcasting try { broadcastSession.start(IVS_RTMPS_URL, IVS_STREAM_KEY) } catch (exception: BroadcastException) { // handle exception }

Siaran IVS Amazon Android dan iOS SDKs memiliki panggilan balik yang dipicu oleh status peserta (misalnya, onStreamsAdded danonStreamsRemoved), untuk menyederhanakan pembuatan UI dinamis. Ini ditampilkan di bagian pertama dari contoh kode: ketika video dan audio Bob tersedia, Alice diberitahu melalui panggilan balik. onStreamsAdded

Alice kemudian dapat menambahkan video dan audio Bob ke mixer, untuk dimasukkan dalam siaran RTMP untuk khalayak yang lebih luas dari salurannya. Ini ditunjukkan di sisa sampel kode.

Sekarang Alice menyiarkan ke banyak pemirsa, melalui Amazon IVS Android Broadcast SDK. Inilah yang terlihat seperti arsitektur:

Menyiarkan panggung: komposisi sisi klien. Alice menyiarkan ke banyak pemirsa.

Komposisi Sisi Server

Sebagai perbandingan, berikut adalah cara kerja komposisi sisi server. (Untuk detailnya, lihat Komposisi Sisi Server di Panduan Pengguna Waktu Nyata IVS.)

Menyiarkan panggung: komposisi sisi server.