Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Démarrage
Installer la bibliothèque
Pour ajouter la bibliothèque de diffusion Android Amazon IVS à votre environnement de développement Android, ajoutez la bibliothèque au fichier build.gradle
de votre module, comme indiqué ici (pour la dernière version du kit SDK de diffusion Amazon IVS) :
repositories { mavenCentral() } dependencies { implementation 'com.amazonaws:ivs-broadcast:1.14.1' }
Vous pouvez également installer le kit SDK manuellement, en téléchargeant la dernière version à partir du lien suivant :
Créer l’écouteur d’événements
La configuration d’un écouteur d’événements vous permet de recevoir des mises à jour d’état, des notifications de modification de périphérique, des erreurs et des informations sur l’audio de la session.
BroadcastSession.Listener broadcastListener = new BroadcastSession.Listener() { @Override public void onStateChanged(@NonNull BroadcastSession.State state) { Log.d(TAG, "State=" + state); } @Override public void onError(@NonNull BroadcastException exception) { Log.e(TAG, "Exception: " + exception); } };
Demander des autorisations
Votre appli doit demander l’autorisation d’accéder à la caméra et au micro de l’utilisateur. (Ce n’est pas spécifique à Amazon IVS ; cette autorisation est requise pour toute application devant accéder aux caméras et aux micros.)
Ici, nous vérifions si l’utilisateur a déjà accordé des autorisations et, dans le cas contraire, nous les demandons :
final String[] requiredPermissions = { Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO }; for (String permission : requiredPermissions) { if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) { // If any permissions are missing we want to just request them all. ActivityCompat.requestPermissions(this, requiredPermissions, 0x100); break; } }
Ici, nous obtenons la réponse de l’utilisateur :
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 0x100) { for (int result : grantResults) { if (result == PackageManager.PERMISSION_DENIED) { return; } } setupBroadcastSession(); } }
Créer la session de diffusion
L’interface de diffusion est com.amazonaws.ivs.broadcast.BroadcastSession
. Initialisez-la avec un préréglage, comme indiqué ci-dessous. S’il y a des erreurs lors de l’initialisation (comme un échec lors de la configuration d’un codec), votre BroadcastListener
recevra un message d’erreur et broadcastSession.isReady
sera false
.
Important : tous les appels vers le kit SDK for Android de diffusion Amazon IVS doivent être faits sur le thread sur lequel le kit SDK est instancié. Si un appel est réalisé à partir d’un thread différent, le kit SDK lèvera une erreur critique et arrêtera la diffusion.
// Create a broadcast-session instance and sign up to receive broadcast // events and errors. Context ctx = getApplicationContext(); broadcastSession = new BroadcastSession(ctx, broadcastListener, Presets.Configuration.STANDARD_PORTRAIT, Presets.Devices.FRONT_CAMERA(ctx));
Voir aussi Créer la session de diffusion (version avancée).
Définissez le ImagePreviewView pour l'aperçu
Si vous souhaitez afficher une prévisualisation pour une caméra active, ajoutez une prévisualisation ImagePreviewView
pour le périphérique à votre hiérarchie de vues.
// awaitDeviceChanges will fire on the main thread after all pending devices // attachments have been completed broadcastSession.awaitDeviceChanges(() -> { for(Device device: session.listAttachedDevices()) { // Find the camera we attached earlier if(device.getDescriptor().type == Device.Descriptor.DeviceType.CAMERA) { LinearLayout previewHolder = findViewById(R.id.previewHolder); ImagePreviewView preview = ((ImageDevice)device).getPreviewView(); preview.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); previewHolder.addView(preview); } } });
Démarrer une diffusion
Dans le nom d’hôte que vous recevez dans le champ de ingestEndpoint
réponse du GetChannel
point de terminaison doit avoir été rtmps://
ajouté comme préfixe et /app
comme suffixe. L’URL complète doit être au format suivant : rtmps://{{ ingestEndpoint }}/app
broadcastSession.start(IVS_RTMPS_URL, IVS_STREAMKEY);
Le kit SDK de diffusion Android prend en charge uniquement l’ingestion RTMPS (et non l’ingestion RTMP non sécurisée).
Arrêter une diffusion
broadcastSession.stop();
Publier la session de diffusion
Vous devez appeler la méthode broadcastSession.release()
lorsque la session de diffusion n’est plus utilisé, pour libérer les ressources utilisées par la bibliothèque.
@Override protected void onDestroy() { super.onDestroy(); previewHolder.removeAllViews(); broadcastSession.release(); }