Diffusion de flux — Android
Une fois que vous avez connecté à une sessionvous pouvez publier un flux que les autres clients connectés à la session peuvent visualiser.
Cette rubrique comprend les sections suivantes :
- Initialisation d'un objet Publisher
- Prévisualisation de la vidéo de l'éditeur avant la diffusion en continu
- Publication d'un flux
- Définition du débit maximal d'un flux
- Empêcher un éditeur de diffuser en streaming
- Obtenir des statistiques sur le flux d'un éditeur
- Tester le flux d'un éditeur
Initialisation d'un objet Publisher
Un objet « Publisher » sert à capturer un flux audio-vidéo à partir du microphone et de la caméra de l'appareil, en vue de son utilisation dans une session OpenTok.
Pour un éditeur de base, utilisez la fonction Publisher.Builder pour instancier un objet Publisher. Indiquez le contexte de l'application Android pour l'éditeur :
mPublisher = new Publisher.Builder(context)
.build();
Veillez à conserver une référence à l'objet Publisher afin d'éviter qu'il ne soit supprimé par le ramasse-miettes, ce qui pourrait entraîner des plantages et un comportement imprévisible.
Ajoutez un objet d'écoute pour les événements de base liés à la publication en appelant la fonction setPublisherListener(PublisherKit.PublisherListener listener) de l'objet Publisher :
mPublisher.setPublisherListener(this);
Implémentez les méthodes de l'interface PublisherKit.PublisherListener dans l'objet que vous spécifiez comme objet d'écoute d'événement. Ces méthodes sont appelées lorsque des événements liés à la publication se produisent.
Les getView() de l'objet Publisher renvoie la vue de la vidéo que vous publiez. Ajoutez-la en tant que sous-vue d'un objet android.view.ViewGroup pour l'afficher dans l'application :
mPublisherViewContainer.addView(mPublisher.getView());
Transmettre l'objet Publisher à la fonction Session.publish() méthode permettant de publier un flux vers une session. Voir Publication d'un flux.
Vous pouvez appeler d'autres méthodes de l'objet Publisher.Builder pour définir des paramètres personnalisés pour l'éditeur :
mPublisher = new Publisher.Builder(context)
.name("Bob")
.audioTrack(true)
.frameRate(CameraCaptureFrameRate.FPS_7)
.resolution(CameraCaptureResolution.LOW)
.videoTrack(false)
.capturer(mCapturer)
.renderer(mRenderer)
.build();
Veuillez noter que dans les sessions qui utilisent OpenTok Media Router (sessions avec le mode média Dans les sessions dont le mode média est défini sur routé, l'abaissement de la fréquence d'images réduit proportionnellement la bande passante utilisée par le flux. Toutefois, dans les sessions dont le mode média est défini sur relayé, la réduction de la fréquence d'images ne réduit pas la bande passante du flux.
Vous pouvez utiliser un capteur vidéo personnalisé pour publier un flux avec une source vidéo personnalisée - voir Utilisation d'un capteur vidéo personnalisé. Vous pouvez également utiliser le capteur vidéo personnalisé pour publier un flux de partage d'écran - voir Partage d'écran.
Vous pouvez également utiliser une source audio personnalisée pour le flux publié - voir Utilisation d'un pilote audio personnalisé.
Prévisualisation de la vidéo de l'éditeur avant la diffusion en continu
Notez que, par défaut, la vue de l'éditeur affiche la vidéo de ce dernier dès qu'il commence à diffuser en direct vers la session. Pour prévisualiser la vidéo avant que l'éditeur ne commence à diffuser, appelez la fonction startPreview() de l'objet Publisher :
mPublisher.startPreview();
Si vous appelez le startPreview() vous devez appeler la méthode destroy() de l'éditeur pour supprimer la vue de l'éditeur (et la vidéo), lorsque l'éditeur arrête la diffusion (lorsque la méthode onStreamDestroyed(PublisherKit publisher, Stream stream) du PublisherListener est appelée).
Remarque : Les startPreview() Cette méthode ne relie pas l'entrée audio à l'éditeur. Pour prévisualiser le flux audio avant que l'éditeur ne commence à le diffuser vers la session, utilisez une pilote audio personnalisé.
Publication d'un flux
Une fois que vous avez créé un objet Publisher (voir Initialisation d'un objet Publisher), vous pouvez le transmettre à la publish(PublisherKit publisher) d'un objet Session pour publier le flux dans la session :
mSession.publish(mPublisher);
Ce code suppose que mSession est un objet Session et que le client s'est connecté à la session. Pour plus d'informations, voir Rejoindre une session.
Les PublisherKit.PublisherListener.onStreamCreated(PublisherKit publisher, Stream stream) est appelée lorsque l'éditeur commence à diffuser des informations dans la session :
@Override
public void onStreamCreated(publisher, stream) {
// The publisher started streaming.
}
Définition du débit maximal d'un flux
Vous pouvez définir le débit binaire maximal d'un flux publié. La définition d'un débit binaire maximal peut contribuer à réduire la consommation de bande passante lorsqu'un utilisateur se connecte via une connexion à volume limité. Voir cette documentation.
Empêcher un éditeur de diffuser en streaming
Vous pouvez empêcher l'éditeur de diffuser en continu vers la session en appelant la méthode unpublish(PublisherKit publisher) de l'objet Session :
mSession.unpublish(mPublisher);
Les PublisherKit.PublisherListener.onStreamDestroyed(PublisherKit publisher, Stream stream) est appelée lorsque l'éditeur cesse d'alimenter la session :
@Override
public void onStreamDestroyed(publisher, stream) {
// The publisher stopped streaming.
}
Obtenir des statistiques sur le flux d'un éditeur
Pour enregistrer des méthodes de rappel permettant de générer des rapports périodiques sur les statistiques audio et vidéo d'un éditeur, appelez la méthode PublisherKit.setAudioStatsListener(listener) et PublisherKit.setVideoStatsListener(listener) méthodes. Transmettez des objets qui implémentent l'interface PublisherKit.AudioStatsListener et PublisherKit.VideoStatsListener interfaces.
Les implémentations de la PublisherKit.AudioStatsListener.onAudioStats(publisher, stats) et PublisherKit.VideoStatsListener.onVideoStats(publisher, stats) Ces méthodes sont appelées périodiquement pour communiquer les statistiques audio et vidéo relatives à l'éditeur. Chaque méthode reçoit deux objets en paramètre : l'éditeur et un tableau d'objets « stats ».
Pour obtenir des statistiques de bas niveau sur les flux, utilisez la fonction PublisherKit.getRtcStatsReport() méthode. Cette méthode fournit des rapports de statistiques RTC pour le flux multimédia.
Se référer à le guide du développeur de l'observabilité du client pour obtenir des informations détaillées.
Tester le flux d'un éditeur
Vous pouvez publier un flux de test et vérifier ses statistiques audio et vidéo afin de déterminer le type de flux (haute résolution ou audio uniquement) pris en charge par votre connexion.
Pour obtenir les statistiques relatives à un flux publié par le client local, vous devez utiliser une session qui exploite OpenTok Media Router (les sessions avec le mode média (réglé sur « routed »). Vous pouvez ensuite utiliser la SubscriberKit.setAudioStatsListener(AudioStatsListener listener) et SubscriberKit.setVideoStatsListener(VideoStatsListener listener) méthodes de l'objet `Subscriber` pour obtenir les statistiques audio et vidéo du flux que vous publiez. Voir ce sujet pour plus d'informations.
Les test-du-réseau-opentok comprend un exemple de code montrant comment utiliser les statistiques d'un flux de test avant de le publier dans une session.