Ferramenta rápida para gerar galerias de vídeos em miniatura para linha de comando

11

Eu uso gframecatcher para gerar galerias de vídeos em miniatura, ou seja, algo assim:

No entanto, esta é uma ferramenta gráfica e eu quero criar recursivamente uma galeria para cada vídeo em uma estrutura de diretórios, então estou procurando uma ferramenta de linha de comando rápida para fazer isso.

    
por student 05.02.2013 / 11:10

8 respostas

23

Retire as capturas de imagem (elas têm 100 pixels de altura e mantém a proporção), a taxa ( -r ) é por segundo (isso gera um quadro a cada ~ 5 minutos), isso também adiciona registro de hora à saída imagem.

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

Em seguida, use ImageMagick para criar sua imagem de galeria:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png
    
por 05.02.2013 / 17:53
9

Eu gosto de usar um script simples de linha de comando unix chamado VCS - Video Contact Sheet. Sua página oficial: link

É muito mais fácil de usar ainda mais fácil do que uma GUI

'' É um script bash criado para criar folhas de contato de vídeo (previews), conhecidas como miniaturas ou pré-visualizações de vídeos. Qualquer vídeo suportado pelo mplayer e ffmpeg pode ser usado por este script. '' Você precisará ter ffmpeg ou mplayer instalado em seu sistema.

Uso:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

Como o comando funciona

Edite o input-filname com o nome do seu arquivo de vídeo!

  • -U0 (nenhum nome no rodapé - ou então exibe o nome do host - observe que este é zero e não a letra O )

  • -i 1m (define o intervalo de tempo de captura em minutos - nesse caso, a cada minuto - você também pode usar -n , que define o número de capturas, por exemplo -n 21 criará 21 imagens, mas não use os dois)

  • -c define o número de colunas (aqui são 3 colunas)

  • -H 200 -a 300/200 (define tamanho e aspecto para que o arquivo não seja muito grande - parece que você precisa fazer as duas coisas)

  • -o filename.jpg (use .jpg como padrão, pois .png é muito grande - e altere o nome do arquivo para um de sua escolha!)

por 17.12.2014 / 00:42
4

Este parece se encaixar no projeto , é gratuito e de código aberto e até funciona no Windows:)

Até tem coisas avançadas, como em vez de escolher cegamente qualquer quadro no intervalo específico, ele pode escolher aqueles que estão próximos o suficiente, mas não parecem muito desfocados, então ao invés de fazer isso:

Vocêpodepassarumparâmetroaele(-D6)parafazerisso:

Além disso, eu realmente não gosto de bordas, para que as imagens possam ser um pouco maiores.

    
por 13.10.2014 / 11:21
4

Existe uma solução do fórum ffmpeg.

Para criar várias capturas de tela e colocá-las em um único arquivo de imagem (criação de blocos), você pode usar o filtro de vídeo lado a lado do FFmpeg, assim:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

Isso vai buscar 10 segundos no filme, selecionar cada milésimo quadro, dimensioná-lo para 320x240 pixels e criar blocos 2x3 na saída. out.png.

Publicação original aqui - link

    
por 16.02.2015 / 09:15
3

É assim que eu processo uma folha de contato simples usando o AWS EC2, do meu mac.

Etapa 1: criar uma instância do EC2 no Amazon Web Services

Eu usei:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

Etapa 2: configurar a instância

Isso tudo é executado a partir do meu mac por conveniência, mas você também pode executar apenas os comandos "sudu su ..." da linha de comando do EC2.

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

Substituindo 11.22.33.44 pelo seu EC2 IP.

Etapa 3: processar um vídeo

Envie o vídeo:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov [email protected]:/home/ec2-user/

Processe em uma folha de contato:

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

Alterar / Usuários / mdouma para sua raiz local Altere o ", 1" para outro número, por exemplo, ", 7", se desejar apenas a cada 7 quadros. Altere 111 para o tamanho que quiser

Copie de volta para o meu mac:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  [email protected]:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png
    
por 11.09.2015 / 18:33
1

O pacote "imagemagick" tem utilitários para coisas como esta.

link

Existem bibliotecas de APIs que usam o imagemajick para um monte de idiomas também .

    
por 05.02.2013 / 11:16
1

Totem - o player de vídeo padrão para o 14.04 e algumas versões anteriores do Ubuntu - tem a opção de menu com opções simples (no menu Editar, "Criar Galeria de Screenshots ..."). Há também um equivalente na linha de comando (ish) chamado "totem-video-thumbnailer", que tem uma página man que lhe diz como usá-lo; Escrevi um script bash simples que usava a saída do comando find (tomando cuidado para não separar arquivos com espaços nos nomes) para gerar automaticamente uma galeria de capturas de tela em miniatura (ou uma folha de contato como também mencionada acima) para quaisquer arquivos acima de uma certa tamanho em um diretório que não tenha um.

Eu poderia enviá-lo para o meu github em jgbreezer se alguém gostasse de procurá-lo. Embora as soluções que usam o ffmpeg e outras coisas possam ser mais flexíveis e confiáveis; Eu pareço obter saídas de erro do comando totem sobre não encontrar certos quadros, mas parece funcionar na maioria das vezes.

    
por 11.05.2015 / 00:31
0

Eu queria a mesma coisa e o googling acabou usando ffmpeg e imagemagick. NÃO é 'rápido' IMHO. Em seguida, encontrei um script bash chamado SlickSlice (atualizado pela última vez em 2008, mas funcionou perfeitamente até ontem). Instalei e personalizei para o meu gosto usando o arquivo de configuração e o próprio script. O script usa o ImageMagick e o MPlayer pelo caminho.

Eu fiz um detalhes sobre como fazer e personalização depois de usá-lo com sucesso. Uma vez instalado com sucesso, você pode gerar a miniatura da linha do tempo de vídeo com um comando tão simples:
slickslice -x "InputFile.mp4" (padrão 4 colunas x 15 linhas) ou slickslice -x "InputFile.mp4" -S 6x10 (para 6 colunas x 10 linhas). / p>

Ele é exibido como SLICKSLICED_InputFile.mp4.jpeg e eu o personalizo para produzir InputFile.mp4-screen.jpeg editando o próprio script bash.
Espero que isso ajude.

    
por 01.04.2017 / 01:12