De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 03 de julho de 2020
Recentemente eu tive que gravar diversos vídeos para um curso. Para obter o tempo total de todos os vídeos, eu precisei descobrir qual a duração de cada um dos vídeos. Eu poderia fazer isto abrindo cada um dos vídeos para ver sua duração.
Mas com a linha de comandos tudo fica muito mais fácil. O comando ffmpeg
pode ser usado para esta finalidade.
Veja só:
$ ffmpeg -i video.mp4
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
encoder : Lavf58.29.100
... Dezenas de linhas removidas ...
Duration: 00:00:06.17, start: 0.000000, bitrate: 3281 kb/s
... mais linhas removidas ...
É muita informação, o que eu preciso é apenas a informação que está em vermelho. Então vamos melhorar um pouco mais o meu comando:
$ ffmpeg -i video.mp4 2>&1 | grep "Duration"
Duration: 00:00:06.17, start: 0.000000, bitrate: 3281 kb/s
Ficou melhor, mas ainda tem informação que não me interessa. Então vamos melhorar ainda mais um pouquinho:
$ ffmpeg -i video.mp4 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,//
00:00:06.17
Maravilha, agora só tenho a duração do vídeo, 6 segundos. O comando
cut -d ' ' -f 4
utiliza como delimitador o espaço em branco (-d ' '
) e manda imprimir
o quarto campo (-f 4
). Importante, a linha que contém a palavra
Duration:
é precedida por dois espaços em branco. É fundamental entender
isto para que você possa selecionar o campo correto com o comando cut
.
E finalmente, o comando sed
remove a vírgula após a duração do vídeo
(00:00:06.17,
).
E se você quiser gerar um relatório com a duração de vários vídeos, pode fazer algo como:
$ cat duration.sh
#!/bin/bash
:> lista.txt
for video in *.mp4
do
echo -n "$video: " >> lista.txt
ffmpeg -i $video 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,// >> lista.txt
done
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários