Jak sprawdzić, jak długo wideo (MP4) używa powłoki?
16
Muszę ftp przesłać wszystkie pliki mp4 w katalogu o długości> 4 minut za pomocą powłoki. Nie mogę znaleźć żadnego skryptu, który mógłby sprawdzić długość filmu. Czy ktoś ma jakiś pomysł, jak to zrobić?
Można tego również użyć z avprobe- nie ma takiej potrzeby -i, ale poza tym działa dokładnie w ten sam sposób. Lub ffprobedla odpowiedzi @ per.
evilsoup
4
exiftool(pierwotnie przeznaczony do odczytu metadanych aparatu z plików obrazów, ale później rozszerzony do odczytu i zapisu metadanych z prawie każdego rodzaju pliku multimedialnego) jest do tego bardzo wygodny w użyciu. Uruchom z:
exiftool FILE.mp4 | grep Duration
exiftoolNajpierw prawdopodobnie będziesz musiał zainstalować , ale można to łatwo zrobić za pomocą następującego polecenia (w Debianie i pochodnych takich jak Ubuntu itp.):
apt install libimage-exiftool-perl
Oczywiście ta odpowiedź jest kolejną alternatywą. Wiele innych odpowiedzi jest również dobrych. :)
Nie ma potrzeby korzystania grepi takie. Po prostu exiftool -T -Duration *.mkv(lub jakikolwiek wzorzec pliku)
PerlDuck
0
Jak widać, istnieje wiele sposobów osiągnięcia tego celu.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONgdzie mediafile to nazwa pliku, zapewni dane wyjściowe podobne do poniższych. Pierwszy to czas trwania pierwszego strumienia (zazwyczaj wideo), a drugi to czas trwania drugiego strumienia (zazwyczaj audio)
Odpowiedzi:
To da ci długość filmu.
źródło
Mediainfo to szybkie narzędzie do tego celu:
Więcej opcji znajdziesz w dokładniejszej odpowiedzi .
W moich testach
ffprobe
zajmuje 0,3 sekundy imediainfo
0,09 sekundy.źródło
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... co dałoby ci coś, np. 43 min 50sMożesz spróbować użyć polecenia avconv ..
Najpierw powinieneś zainstalować:
jeśli wpiszesz polecenie z flagą -i, otrzymasz informacje o filmie:
avconv -i test.mp4
W danych wyjściowych znajduje się pole o nazwie Czas trwania
Teraz możesz użyć polecenia, aby uzyskać tylko wartość pola Czas trwania
Rodzaj:
W moim przypadku wynikiem jest:
58 minut i 28,05 sekundy.
Mam nadzieję, że to pomoże!
źródło
avprobe
- nie ma takiej potrzeby-i
, ale poza tym działa dokładnie w ten sam sposób. Lubffprobe
dla odpowiedzi @ per.exiftool
(pierwotnie przeznaczony do odczytu metadanych aparatu z plików obrazów, ale później rozszerzony do odczytu i zapisu metadanych z prawie każdego rodzaju pliku multimedialnego) jest do tego bardzo wygodny w użyciu. Uruchom z:exiftool
Najpierw prawdopodobnie będziesz musiał zainstalować , ale można to łatwo zrobić za pomocą następującego polecenia (w Debianie i pochodnych takich jak Ubuntu itp.):Oczywiście ta odpowiedź jest kolejną alternatywą. Wiele innych odpowiedzi jest również dobrych. :)
źródło
Jeszcze prościej:
źródło
Dodanie do rozwiązania pers może być wykorzystane w całym katalogu:
można go nawet rozszerzyć o
| sort
sortowanie plików według ich długości.możesz dodać to do
.bashrc
lub.bash_aliases
, aby móc to zrobićlsvlength | sort
w kataloguźródło
ffprobe
jest bardziej eleganckim rozwiązaniem, niżffmpeg
które generuje błąd, jeśli nie podano ścieżki wyjściowej.źródło
Jeśli chcesz zobaczyć czas trwania niektórych filmów w katalogu, możesz użyć następującego polecenia
źródło
grep
i takie. Po prostuexiftool -T -Duration *.mkv
(lub jakikolwiek wzorzec pliku)Jak widać, istnieje wiele sposobów osiągnięcia tego celu.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
gdzie mediafile to nazwa pliku, zapewni dane wyjściowe podobne do poniższych. Pierwszy to czas trwania pierwszego strumienia (zazwyczaj wideo), a drugi to czas trwania drugiego strumienia (zazwyczaj audio)źródło