Como posso extrair uma imagem de um determinado momento de um vídeo no Xubuntu 16.04?

8

Estou procurando alguma opção de linha de comando.

Por exemplo, se eu tiver o vídeo sample-video.mp4 e eu quiser gerar um arquivo de imagem sample-image.jpg do vídeo na hora 00:00:26, qual comando devo dar?

Além disso, seria muito útil se você pudesse me explicar em detalhes qual é a função de cada argumento do comando.

    
por Sonevol 18.01.2018 / 12:40

2 respostas

8

Você pode usar mplayer (do pacote mplayer , não instalado por padrão):

mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4

Isso criará o arquivo 00000001.jpg , então você precisa renomeá-lo. Tanto quanto eu sei, não há como especificar um nome de arquivo.

-vo jpeg significa que você deseja saída JPEG, -ss 00:00:26 procura a posição determinada, -frames 1 significa processar um quadro e, em seguida, sair.

    
por Florian Diesch 18.01.2018 / 12:53
13

Você pode usar o ffmpeg

ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4  -t 1 -f image2 anyfilename.jpeg
  • -loglevel define o logoutput como quiet porque o ffmpeg é muito tagarela
  • -ss é procurar (em segundos, ou seja, onde você deseja tirar a foto instantânea)
  • -i arquivo de entrada de vídeo
  • -t período de tempo do instantâneo (em segundos)
  • -f filetype

Você também pode brincar com as opções, como a qualidade de controle da saída jpeg -q:v <linear integer 1-10> ou a resolução -s 480x300 .

Mais algumas ideias aqui

Método VLC

cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy  --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
  • cvlc - porque sua linha de comando e não queremos abrir janelas. Além disso, isso significa que podemos executá-lo sem o X11.

  • - hora de início = 26 - é a posição exata do instantâneo em segundos

  • - tempo de execução = 1 - quanto tempo o vídeo será reproduzido em segundos. Nós jogamos por um segundo para fazer uma captura de tela deste segundo
  • - rate = 1 quando tirar a captura de tela. Isso significa basicamente "a cada segundo" e é útil, se você tiver arquivos maiores, fazer uma captura de tela a cada 60 segundos ou a cada 5 minutos
  • - video-filter = scene diz ao VLC que queremos tirar screenshots
  • - vout = dummy não há saída para vídeo no X11, não precisamos dele
  • - aout = dummy sem saída para áudio, não precisamos dele
  • - scene-ratio = 24 dizemos ao VLC que existem aproximadamente 24 quadros por segundo
  • - scene-prefix = sample-image o nome do arquivo da sua captura de tela
  • - substitua a cena substitua todos os arquivos que são chamados como sua captura de tela sample-image.png pela captura de tela atual. Se você omitir isso, o VLC começará a numerar as capturas de tela
  • vlc: // sair sair da vlc assim que terminar

Complete a documentação aqui

    
por Robert Riedl 18.01.2018 / 13:22