Kotlin

Starten der Erfassung

startCapture() ist die nächste Methode, die wir implementieren müssen. Sie wird vom SDK aufgerufen, wenn der Publisher mit dem Capturing beginnt (z.B. nach Session.publish(publisher)). Damit sollte Ihre Aufnahmeschleife oder Ihr Hörer starten. Wie Sie sehen werden, werden die Frames hier von ImageReader.setOnImageAvailableListeneralso startCapture() wird vor allem signalisieren, dass die Erfassung aktiv ist.

Lebenszyklus:

  1. init() - Erstellen ImageReader und starten Sie einen Hintergrundfaden. Die ImageReader bietet eine Surface dass VirtualDisplay verwandelt sich in.
  2. createVirtualDisplay() - Erstellen einer VirtualDisplay unterstützt von der ImageReaderOberfläche. Der Bildschirminhalt wird auf dieser Anzeige wiedergegeben.
  3. startCapture() - Wird aufgerufen, wenn der Publisher startet. Markiert die Erfassung als aktiv.
  4. stopCapture() - Geben Sie die virtuelle Anzeige frei, beenden Sie die Medienprojektion und räumen Sie auf.

Einspeisung von Frames in das SDK

Wenn das System einen neuen Frame in die VirtualDisplay, ImageReader liefert es über onImageAvailable:

Die provideIntArrayFrame Methode, definiert durch den BaseVideoCapturer Klasse, sendet ein ganzzahliges Datenfeld an den Herausgeber, das für das nächste veröffentlichte Videobild verwendet wird.

Wenn der Herausgeber immer noch Videos aufnimmt, wird der Thread nach einer weiteren 1/15-Sekunde erneut gestartet, so dass der Aufzeichner den Herausgeber weiterhin mit neuen Videobildern zur Veröffentlichung versorgt.