Jak sprawdzić, jak długo wideo (MP4) używa powłoki?


Odpowiedzi:


23

To da ci długość filmu.

ffmpeg -i myvideo 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//

Działa także dla zdalnych adresów URL wideo, np. Ffmpeg -i " instagram.fewr1-1.fna.fbcdn.net/t50.2886-16/… " 2> & 1 | grep Czas trwania | cut -d '' -f 4 | sed s /, //
skidadon 16.10.17

Czy format komunikatów dziennika FFmpeg jest gwarantowany? Jeśli nie, nie bardzo mi się to podoba - może przestać działać z każdym wydaniem.
Ondra Žižka

7

Mediainfo to szybkie narzędzie do tego celu:

$ mediainfo --Inform="Video;%Duration%"  [inputfile]

Więcej opcji znajdziesz w dokładniejszej odpowiedzi .

W moich testach ffprobezajmuje 0,3 sekundy i mediainfo0,09 sekundy.


Daje to dziwne wyniki ... jak 2679600 ... lepiej użyć mediainfo --Inform="Video;%Duration/String%" [inputfile]... co dałoby ci coś, np. 43 min 50s
Robert Riedl

5

Możesz spróbować użyć polecenia avconv ..

Najpierw powinieneś zainstalować:

Zainstaluj za pośrednictwem centrum oprogramowania

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

avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #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 tbc
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s

Teraz możesz użyć polecenia, aby uzyskać tylko wartość pola Czas trwania

Rodzaj:

avconv -i file.mp4 2>&1 | grep 'Duration' | awk '{print $2}' | sed s/,//

W moim przypadku wynikiem jest:

00:58:28.05

58 minut i 28,05 sekundy.

Mam nadzieję, że to pomoże!


1
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. :)


2

Jeszcze prościej:

avprobe file.mp4 -show_format_entry duration

Obecnie pojawia się komunikat „Opcja” Pokaż_format_wysyłka ”jest przestarzała, zamiast tego należy użyć opcji„ -show_entries format = duration ””
Faheem Mitha,

1

Dodanie do rozwiązania pers może być wykorzystane w całym katalogu:

for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done

można go nawet rozszerzyć o | sortsortowanie plików według ich długości.

możesz dodać to do .bashrclub .bash_aliases, aby móc to zrobić lsvlength | sortw katalogu

alias lsvlength='for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done'

1

ffprobejest bardziej eleganckim rozwiązaniem, niż ffmpegktóre generuje błąd, jeśli nie podano ścieżki wyjściowej.

ffprobe video.mp4 2>&1 | grep -E '^ +Duration' | cut -d':' -f2- | cut -d, -f1

0

Jeśli chcesz zobaczyć czas trwania niektórych filmów w katalogu, możesz użyć następującego polecenia

exiftool * | grep ^ Czas trwania | cut -d '-f 26


1
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)

  DURATION        : 00:21:40.132000000
  DURATION        : 00:21:40.062000000
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.