Como verificar por quanto tempo um vídeo (mp4) está usando o shell?
16
Eu preciso carregar ftp todos os arquivos mp4 em um diretório com duração> 4 minutos usando o shell. Não consigo encontrar nenhum script para verificar a duração de um vídeo. Alguém tem alguma idéia de como fazer isso?
Isso dá resultados estranhos ... como 2679600 ... melhor usar mediainfo --Inform="Video;%Duration/String%" [inputfile]... o que lhe daria algo como 43 min 50s
Robert Riedl
5
Você pode tentar usar o comando avconv ..
Primeiro você deve instalar:
se você digitar o comando com a bandeira -i, obterá informações sobre o vídeo:
avconv -i test.mp4
Na saída, há um campo chamado Duração
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1,Copyright(c)2000-2012 the Libav developers
built on Nov6201216:51:33 with gcc 4.6.3Input#0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':Duration:00:58:28.05, start:0.000000, bitrate:888 kb/s
Stream#0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbcStream#0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
Agora você pode usar o comando para obter apenas o valor do campo Duration
Isso também pode ser usado com avprobe- sem necessidade de -i, mas, caso contrário, funciona exatamente da mesma maneira. Ou ffprobepara a resposta de @ per.
evilsoup
4
exiftool(originalmente destinado à leitura de metadados da câmera a partir de arquivos de imagem, mas posteriormente expandido para ler e gravar metadados a partir de quase qualquer tipo de arquivo de mídia) é muito conveniente de usar. Execute-o com:
exiftool FILE.mp4 | grep Duration
Você provavelmente precisará instalar exiftoolprimeiro, mas isso é feito facilmente com o seguinte comando (no Debian e derivados como Ubuntu etc.):
apt install libimage-exiftool-perl
Obviamente, essa resposta é apenas outra alternativa. Muitas das outras respostas também são boas. :)
Não há necessidade de usar grepe tal. Simplesmente exiftool -T -Duration *.mkv(ou qualquer padrão de arquivo)
PerlDuck
0
Como você pode ver, existem várias maneiras de conseguir isso.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONonde mediafile é o nome do arquivo, fornecerá uma saída semelhante à abaixo. O primeiro é a duração do primeiro fluxo (normalmente vídeo) e o segundo fornece a duração do segundo fluxo (normalmente áudio)
Respostas:
Isso fornecerá a duração de um vídeo.
fonte
Mediainfo é uma ferramenta rápida para este fim:
Você pode encontrar mais opções em uma resposta mais completa .
Nos meus testes,
ffprobe
demora 0,3 segundos emediainfo
0,09 segundos.fonte
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... o que lhe daria algo como 43 min 50sVocê pode tentar usar o comando avconv ..
Primeiro você deve instalar:
se você digitar o comando com a bandeira -i, obterá informações sobre o vídeo:
avconv -i test.mp4
Na saída, há um campo chamado Duração
Agora você pode usar o comando para obter apenas o valor do campo Duration
Tipo:
No meu caso, o resultado é:
58 minutos e 28,05 segundos.
Espero que isso seja útil!
fonte
avprobe
- sem necessidade de-i
, mas, caso contrário, funciona exatamente da mesma maneira. Ouffprobe
para a resposta de @ per.exiftool
(originalmente destinado à leitura de metadados da câmera a partir de arquivos de imagem, mas posteriormente expandido para ler e gravar metadados a partir de quase qualquer tipo de arquivo de mídia) é muito conveniente de usar. Execute-o com:Você provavelmente precisará instalar
exiftool
primeiro, mas isso é feito facilmente com o seguinte comando (no Debian e derivados como Ubuntu etc.):Obviamente, essa resposta é apenas outra alternativa. Muitas das outras respostas também são boas. :)
fonte
Ainda mais simples:
fonte
Adicionando à solução pers , isso pode ser usado em um diretório inteiro:
pode até ser estendido
| sort
para que os arquivos sejam classificados por seu comprimento.você pode adicionar isso
.bashrc
ou.bash_aliases
fazer issolsvlength | sort
em um diretóriofonte
ffprobe
é uma solução mais elegante doffmpeg
que gera um erro se não for fornecido o caminho de saída.fonte
Se você quiser ver a duração de alguns vídeos em um diretório, use o seguinte comando
fonte
grep
e tal. Simplesmenteexiftool -T -Duration *.mkv
(ou qualquer padrão de arquivo)Como você pode ver, existem várias maneiras de conseguir isso.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
onde mediafile é o nome do arquivo, fornecerá uma saída semelhante à abaixo. O primeiro é a duração do primeiro fluxo (normalmente vídeo) e o segundo fornece a duração do segundo fluxo (normalmente áudio)fonte