Puxa um quadro específico na hora atual usando o VLC [closed]

1

Eu estou tentando criar qualquer tipo de comando em python ou shell para puxar um quadro específico de um vídeo que está sendo reproduzido ou transmitido em vlc.

Imagine um cenário em que eu tenho um arquivo de vídeo, abro-o no VLC e clico em reproduzir. Eu puxo o primeiro quadro que encontro em python ou usando um comando shell, faço algum processamento, e quando o processamento é feito, eu capturo outro quadro na hora exata em que o vídeo chegou.

Honestamente, se eu conseguir que o VLC me forneça o "tempo" atual de um vídeo que estou tocando (quantas horas: minutos: segundos ou o que quer que tenhamos passado no filme), isso funcionaria e eu pode usar o ffmpeg.

Estou executando o linux 14.04.

    
por user3026388 23.10.2017 / 22:20

1 resposta

2

if I can even get VLC to provide for me the current "time" of a video I am playing…

Isso pode ser feito. O VLC fornece muitas interfaces. Vamos usar o telnet.

Etapa 1: habilitando o telnet no VLC

Método único por demanda:

vlc --extraintf telnet --telnet-port 4212 --telnet-password "foobar" video_file_to_play.avi

Ou configuração permanente. Execute o VLC, Ferramentas - > Preferências (ou Ctrl + P ), então:

e

Nota:estemétodopermanenterequerquevocêreinicieoVLC.

Etapa2:testando

AgoravocêpodecontrolaroVLCcomotelnet.Digiteasenhacorretaquandosolicitado.Exemplo:

$telnetlocalhost4212Trying127.0.0.1...Connectedtolocalhost.Escapecharacteris'^]'.VLCmediaplayer2.2.2WeatherwaxPassword:Welcome,Master>get_time30>

Comovocêpodever,ocomandopararecuperarotempodereproduçãoatualéget_time.DigitehelpparasabermaiscomandosVLC,quitparasair.Talvezvocêencontresnapshotútil.

Etapa3:usandoemumscript

Bastantesimplestubo.Aquieuusoncemvezdetelnet(efoobaréminhasenha,useasua):

printf'%s\n'"foobar" "get_time" | nc localhost 4212

Meu VLC retorna:

VLC media player 2.2.2 Weatherwax
Password: ����
Welcome, Master
87
> Bye-bye!

então eu uso head e tail para extrair apenas a linha relevante:

printf '%s\n' "foobar" "get_time" | nc localhost 4212 | head -n 4 | tail -n 1

Infelizmente, a resolução de tempo é de 1 segundo. Eu não encontrei um comando para recuperar o número do quadro atual ou mais.

    
por 24.10.2017 / 00:48