FFmpeg liefert die Dauer der Videodatei ohne Metadaten


1

Ich habe eine Videodatei, die keine Metadaten enthält.

Wenn ich das zum Beispiel mache:

ffmpeg -i test.m2v

Ich bekomme diese Werte:

Duration: N/A, bitrate: N/A

Gibt es noch eine Möglichkeit, die Dauer der Video- / M2V-Datei zu ermitteln?

Bearbeiten:

Die vollständige Konsolenausgabe:

ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 5.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfr
eetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enab
le-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink
--enable-zlib
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpegvideo, from '.\Test.m2v':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: mpeg2video (Main), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 7000 kb/s, 25 fps, 25 tbr, 1200k tbn, 50 tbc

Können Sie bitte die gesamte Konsolenausgabe anzeigen?
Slhck

@slhck ok Ich habe die gesamte Konsolenausgabe in die
Fragebearbeitung

Dieser hat die Dauer. Wenn es sich jedoch um einen unformatierten Bitstream handelt, funktioniert ffprobe mit count_frames im Allgemeinen.
Gyan

Wenn ich eine falsche Ausgabe gepostet habe, habe ich sie mit einer anderen Datei getestet und das hat funktioniert. Ich werde die Ausgabe von der Originaldatei posten. Also wie würde der Befehl mit ffprobe aussehen?
utdev

Antworten:


2

Für einen rohen Bitstrom kann ffprobe verwendet werden.

ffprobe -show_entries stream=r_frame_rate,nb_read_frames -select_streams v -count_frames -of compact=p=0:nk=1 -v 0 in.m2v

Dies erzeugt

30/1|120

Dabei ist der erste Eintrag die Bildrate als rationale Zahl und der zweite die Anzahl der gezählten Bilder. Dauer ist120 / (30/1) = 4.00s


gehört das "in" zum Befehl oder ist das nur ein zufälliger Dateiname?
utdev

Ok, ich habe es an einem 25-Sekunden-Video versucht und nach der Berechnung 27,48 erhalten. Es ist nicht genau, ist es wirklich genau, wenn Sie es verwenden?
utdev

Funktioniert hier. Können Sie die fehlerhafte Datei hochladen?
Gyan

Wo soll ich es hochladen?
utdev

Datenhost, Dropbox. Fahrt ...
Gyan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.