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.