Démarrage de la capture
startCapture() est la méthode suivante que nous devons mettre en œuvre. Elle est appelée par le SDK lorsque l'éditeur commence à capturer (par exemple, après que Session.publish(publisher)). Il devrait démarrer votre boucle de capture ou votre écouteur. Comme vous le verrez, les images sont livrées par ImageReader.setOnImageAvailableListenerAinsi startCapture() signale principalement que la capture est active.
override fun startCapture(): Int {
capturing = true
return 0
}
Cycle de vie :
init()- CréerImageReaderet lancer un fil de discussion. LesImageReaderfournit uneSurfacequeVirtualDisplayse traduit par .createVirtualDisplay()- Créer unVirtualDisplaysoutenu par laImageReaderLa surface de l'écran. Le contenu de l'écran est rendu dans cet affichage.startCapture()- Appelé au démarrage de l'éditeur. Marque la capture comme active.stopCapture()- Libérer l'affichage virtuel, arrêter la projection des médias et nettoyer.
Alimenter le SDK en images
Lorsque le système restitue une nouvelle image dans le fichier VirtualDisplay, ImageReader le délivre par l'intermédiaire de onImageAvailable:
imageReader?.setOnImageAvailableListener(
{ reader ->
val image = reader.acquireLatestImage()
if (image != null) {
val planes = image.planes
provideBufferFrame(planes[0].buffer, ABGR, width, height, 0, false)
image.close()
}
},
backgroundHandler
)
Les provideIntArrayFrame définie par la méthode BaseVideoCapturer envoie un tableau entier de données à l'éditeur, qui sera utilisé pour la prochaine image vidéo publiée.
Si l'éditeur est toujours en train de capturer de la vidéo, le fil de discussion recommence après 1/15 de seconde, de sorte que le capteur continue à fournir à l'éditeur de nouvelles images vidéo à publier.
Partage d'écran
Apprenez à mettre en œuvre la capacité de partage d'écran en utilisant la plateforme Video API de Vonage.