Como posso gravar minha área de trabalho em um “buffer de repetição”, para que eu possa reproduzir os últimos x segundos?

1

Hoje, soube de um produto apenas para Windows chamado hoje de Overwolf Replay HUD , que permite ao usuário pressionar uma tecla para reproduzir os últimos 20 segundos de acontecimentos em sua tela. Ele é destinado a pessoas jogando ou assistindo a videogames de ritmo acelerado que querem rever rapidamente um momento agitado.

Estou tentando duplicar esse comportamento no Linux. Até agora, eu acho que poderia facilmente iniciar ffmpeg (com -f x11grab ) capturar em um arquivo em /tmp (que é mapeado por memória), então use sxhkd para ligar um atalho de teclado para iniciar mpv para reproduzir os últimos 20 segundos desse arquivo.

No entanto, o restante da gravação ainda seria armazenado e, eventualmente, ficaria sem RAM. Como eu poderia manter os últimos 20 segundos?

    
por Anko 24.06.2017 / 16:55

1 resposta

3

O muxer de segmento funcionará.

Etapa 1 :

ffmpeg -i input force_key_frames expr:gte(t,n_forced*4) -c:v libx264 -c:a aac -f segment -segment_time 4 -segment_wrap 6 -segment_list list.m3u8 -segment_list_size 6 seg%d.ts

Isto salvará a gravação em segmentos de 4 segundos. Depois de 6 segmentos terem sido gravados, o próximo segmento substituirá o primeiro arquivo. A playlist é atualizada de acordo.

Etapa 2 :

ffmpeg -i list.m3u8 -c copy video.mp4

ou

ffplay list.m3u8

A duração da gravação preservada é 20 < duration < 24 .

    
por 24.06.2017 / 17:40

Tags