Partage d'écran — Windows
Vous pouvez publier un flux dont la source est une capture d'écran (plutôt qu'une caméra). Un client connecté à la session peut s'abonner à ce flux (et le visionner), exactement comme s'il s'abonnait à un flux dont la source est une caméra.
Cette rubrique comprend les sections suivantes :
- Publication d'un flux avec une source de partage d'écran
- Détermination du type de vidéo ("écran" ou "caméra") pour un flux
- S'abonner à des flux de partage d'écran
Publication d'un flux avec une source de partage d'écran
Pour utiliser l'écran de l'appareil, au lieu d'une caméra, comme source vidéo, vous devez implémenter une fonction capteur vidéo personnalisé.
Voici un exemple simple qui définit un capteur vidéo personnalisé permettant de mettre en place le partage d'écran (en utilisant l'écran à la place d'une caméra comme source vidéo) :
public class ScreenSharingCapturer : IVideoCapturer
{
System.Threading.Timer timer;
IVideoFrameConsumer frameConsumer;
const int WIDTH = 640;
const int HEIGHT = 480;
const int FPS = 30;
public void Init(IVideoFrameConsumer frameConsumer)
{
this.frameConsumer = frameConsumer;
}
public void Start()
{
timer = new System.Threading.Timer((Object stateInfo) =>
{
using (Bitmap bitmap = new Bitmap(WIDTH, HEIGHT, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (Graphics graphics = Graphics.FromImage(bitmap as Image))
{
graphics.CopyFromScreen(0, 0, 0, 0, new Size(WIDTH, HEIGHT), CopyPixelOperation.SourceCopy);
}
using (var frame = OpenTok.VideoFrame.CreateYuv420pFrameFromBitmap(bitmap))
{
frameConsumer.Consume(frame);
}
}
}, null, 0, 1000 / FPS);
}
public void Stop()
{
if (timer != null)
{
using (var timerDisposed = new ManualResetEvent(false))
{
timer.Dispose(timerDisposed);
timerDisposed.WaitOne();
}
}
timer = null;
}
public void Destroy()
{
}
public VideoCaptureSettings GetCaptureSettings()
{
VideoCaptureSettings settings = new VideoCaptureSettings();
settings.Width = WIDTH;
settings.Height = HEIGHT;
settings.Fps = FPS;
settings.MirrorOnLocalRender = false;
settings.PixelFormat = PixelFormat.FormatYuv420p;
return settings;
}
}
Régler le VideoSourceType de l'objet Publisher à OpenTok.VideoSourceType.Screen. Cette option signale le flux publié comme ayant une source vidéo de partage d'écran (au lieu d'une caméra).
Par défaut, vidéo évolutive est désactivée pour les flux de partage d'écran. Vous pouvez activer la vidéo évolutive pour les flux de partage d'écran à l'aide de l'option Publisher.Builder.ScalableScreenshare propriété. Remarque : vidéo évolutive pour les flux de partage d'écran est une bêta caractéristiques.
Détermination du type de vidéo ("écran" ou "caméra") pour un flux
L'objet Stream contient un VideoSourceType propriété. Elle peut prendre l'une des valeurs suivantes, définies dans l'énumération OpenTok.VideoSourceType :
Camera- un flux vidéo standard qui utilise une caméra comme source vidéoScreen- un flux vidéo de partage d'écranCustom- un flux publié par un client web utilisant un élément HTML VideoTrack comme source vidéo
S'abonner à des flux de partage d'écran
Vous pouvez vous abonner à un flux utilisant une source vidéo de partage d'écran de la même manière que vous vous abonnez à un flux utilisant une caméra comme source. Voir S'abonner à des flux.