ffprobe
dapat digunakan untuk mendapatkan info tentang file media:
ffprobe -select_streams v -show_streams input.avi
Anda akan mendapatkan detail tentang streaming:
nb_frames=159697
Cari nb_frames
dengan grep
:
ffprobe -select_streams v -show_streams input.avi 2>/dev/null | grep nb_frames | sed -e 's/nb_frames=//'
Itu berfungsi untuk avi, mp4 dan lain-lainUntuk beberapa wadah, itu tidak menunjukkan nilai yang valid mis. mpeg.
Dalam hal ini, ini bekerja ffprobe -show_packets a.mpg 2>/dev/null | grep video | wc -l
Ini mengerikan, dan bodoh, dan lambat, tetapi tampaknya berhasil:
ffmpeg -i foo.avi -vcodec copy -f rawvideo -y /dev/null 2>&1 | tr ^M '\n' | awk '/^frame=/ {print $2}'|tail -n 1
Ini juga akan berfungsi langsung pada file terpotong dan aliran mentah (itulah sebabnya Anda tidak mendapatkan apa-apa untuk file .vob)
Saya memposting ini pada pertanyaan lain. Menggunakan tcprobe
alat (dari transcode
paket), jumlah frame disertakan dalam info. Gunakan -i
beralih untuk mendapatkan info dump dari file:
$ tcprobe -i foo.avi
[tcprobe] RIFF data, AVI video
[avilib] V: 29.970 fps, codec=XVID, frames=38630, width=512, height=384
[avilib] A: 48000 Hz, format=0x55, bits=16, channels=2, bitrate=128 kbps,
[avilib] 53707 chunks, 21768720 bytes, VBR
[tcprobe] summary for foo.avi, (*) = not default, 0 = not detected
import frame size: -g 512x384 [720x576] (*)
frame rate: -f 29.970 [25.000] frc=4 (*)
audio track: -a 0 [0] -e 48000,16,2 [48000,16,2] -n 0x55 [0x2000] (*)
bitrate=128 kbps
length: 38630 frames, frame_time=33 msec, duration=0:21:28.954
Perhatikan jumlah bingkai yang diberikan pada dua baris di sini (baris keluaran ke-2 dan baris keluaran terakhir).