FFmpeg ottiene la durata del file video senza metadati


1

Ho un file video che non ha metadati.

Se lo faccio per esempio:

ffmpeg -i test.m2v

Ottengo questi valori:

Duration: N/A, bitrate: N/A

C'è ancora un modo per ottenere la durata del file video / .m2v?

Modificare:

L'output della console completa:

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

Puoi mostrare l'intero output della console, per favore?
Slhck,

@slhck ok Ho inserito l'intero output della console nella modifica della domanda
utdev

Quello ha la durata. Ma, in generale, se è un bitstream grezzo, ffprobe con count_frames funzionerà.
Gyan,

Quando ho pubblicato un output errato, l'ho provato con un altro file e ha funzionato, posterò l'output dal file originale. Quindi come apparirebbe il comando con ffprobe?
utdev,

Risposte:


2

Per un bitstream non elaborato, è possibile utilizzare ffprobe.

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

Questo produce

30/1|120

dove la prima voce è la frequenza dei fotogrammi come numero razionale e la seconda è il numero di fotogrammi contati. La durata è120 / (30/1) = 4.00s


"in" appartiene al comando o è solo un nome file casuale`?
utdev,

Ok, l'ho provato su un video di 25 secondi e ho ottenuto 27,48 dopo il calcolo. Non è preciso, è davvero accurato se lo usi?
utdev,

Funziona qui. Puoi caricare il file errante?
Gyan,

dove vuoi che lo carichi?
utdev,

datafilehost, dropbox. guidare ...
Gyan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.