Compartilhamento de tela — Windows
Você pode publicar uma transmissão que utilize uma captura de tela (em vez de uma câmera) como fonte. Um cliente conectado à sessão pode se inscrever para assistir à transmissão (e visualizá-la), da mesma forma que se inscreveria para assistir a uma transmissão que utilize uma câmera como fonte.
Este tópico inclui as seguintes seções:
- Como transmitir com uma fonte de compartilhamento de tela
- Determinação do tipo de vídeo (“tela” ou “câmera”) para uma transmissão
- Inscrever-se em transmissões com compartilhamento de tela
Como transmitir com uma fonte de compartilhamento de tela
Para usar a tela do dispositivo, em vez de uma câmera, como fonte de vídeo, você precisará implementar um capturador de vídeo personalizado.
Aqui está um exemplo simples que define um capturador de vídeo personalizado para implementar o compartilhamento de tela (usando a tela, em vez de uma câmera, como fonte de vídeo):
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;
}
}
Defina o VideoSourceType propriedade do objeto Publisher para OpenTok.VideoSourceType.Screen. Isso indica que a transmissão publicada tem uma fonte de vídeo de compartilhamento de tela (em vez de uma câmera).
Por padrão, vídeo escalável está desativado para transmissões de compartilhamento de tela. Você pode ativar o vídeo escalável para transmissões de compartilhamento de tela usando o Publisher.Builder.ScalableScreenshare propriedade. Observação: O vídeo escalável para transmissões de compartilhamento de tela é um beta recurso.
Determinação do tipo de vídeo (“tela” ou “câmera”) para uma transmissão
O objeto Stream contém um VideoSourceType propriedade. Ela pode ser definida como um dos seguintes valores, definidos na enumeração OpenTok.VideoSourceType:
Camera— uma transmissão de vídeo padrão que utiliza uma câmera como fonte de vídeoScreen— uma transmissão de vídeo com compartilhamento de telaCustom— um stream publicado por um cliente web usando um elemento VideoTrack em HTML como fonte de vídeo
Inscrever-se em transmissões com compartilhamento de tela
Você pode se inscrever em uma transmissão que utilize uma fonte de vídeo de compartilhamento de tela da mesma forma que se inscreve em uma transmissão que utilize uma câmera como fonte. Consulte Inscrever-se em canais.