Estou tentando pegar a exibição do meu primeiro monitor e também exibi-la no meu segundo monitor, mas com um atraso de 3 a 5 segundos . Não me importo se apenas espelhar um aplicativo.
O objetivo seria quando estou jogando um jogo, gostaria de olhar para o meu segundo monitor e examinar o que aconteceu. Eu realmente não tenho nenhuma idéia de como alguém faria isso.
A implementação de um atraso requer um buffer FIFO https://helloacm.com/how-do-you-design-a-circular-fifo-buffer-queue-in-c/
Os dados entram no buffer em uma extremidade e se movem até chegar à outra.
Você pode implementar um buffer em software, hardware, espacialmente ou por meio de uma rede com buffer.
Programas
Você teria que executar um processo junto com o jogo para que eles compartilhassem o tempo do processador. Se o programa de atraso não puder se conectar ao código do jogo, ele terá que usar interrupções para ler a memória gráfica. Em seguida, tiraria instantâneos da memória e os armazenaria na RAM. Se você tiver bastante RAM de sobra após o carregamento do jogo, isso pode ser possível. O mesmo programa então envia a imagem atrasada através de uma porta de saída diferente para o outro monitor.
hardware
Você poderia implementar um atraso eletrônico no hardware inserido no cabo, mas esse hardware precisaria de seu próprio processador e memória. Seria um microprocessador que teria que ser programado.
Espacial
Se você pudesse direcionar um laser para um refletor na lua que então voltasse para você, você poderia obter um atraso total de 1,3 + 1,3 = 2,6 segundos.
Se você enviar o sinal para um satélite artificial e vice-versa, poderá usar os buffers integrados da rede instalados. Desde que a largura de banda do satélite nunca seja sobrecarregada, você obterá um atraso constante. Pense nos repórteres ligando do exterior por telefone via satélite, dificultando assim uma conversa normal.
Rede
A Internet está repleta de buffering em todas as velocidades. Por exemplo, se você deixar o telefone desligado por uma semana, quando voltar ainda poderá ver as mensagens de texto que perdeu. O problema dos atrasos na internet é que é muito difícil obter um controle preciso sobre eles.
Recomendação
Se este é um jogo para um jogador que não possui recurso de replay, acredito que exista um software que você possa comprar que permitirá capturas de tela e até replays. Você pode querer pesquisar on-line para estes.
Se você não quiser analisar o que aconteceu imediatamente, mas depois em seu lazer, novamente, eu procuraria software de terceiros. Ele fará o buffer (e armazenamento em disco) para você.
A menos que você possa comprar software ou hardware na prateleira, você terá que fazer isso sozinho. Seria uma grande conquista (e fantástica para o seu currículo), mas espere passar os próximos meses implementando um buffer em vez de jogar o jogo!
Você pode fazer isso OBS (Open Broadcast Studio). Depois que sua cena/entrada estiver definida para o seu jogo, você poderá adicionar alguns filtros de atraso a ela (clique com o botão direito na fonte -> adicionar filtro -> atraso na fonte). Em seguida, você precisa definir a saída no OBS para usar um URL personalizado nas configurações de saída avançadas com ffmpeg. Você obterá um URL semelhante a (udp://ipaddress:2222). Você pode baixar o VLC Media Player e abrir um fluxo de rede usando esse URL em seu segundo monitor.
Fonte 1: adicionando filtro de atraso
Fonte 2: thread obs no streaming para a instância vlc local
Fonte 3: streaming ponto a ponto ffmpeg