Misalkan kita memiliki file video some_video.
Bagaimana saya bisa mendapatkan panjangnya dari skrip shell (dengan mplayer / transcode / gstreamer / vlc / ffmpeg / apa pun)?
VIDEO_LENGTH_IN_SECONDS=`ffmpeg .... -i some_video ... | grep -o .....`
ffprobe -i some_video -show_entries format=duration -v quiet -of csv="p=0"
akan mengembalikan durasi video dalam hitungan detik.
Sesuatu yang mirip dengan:
Hal ini akan memberikan:
HH:MM:SS.ms
. Anda juga dapat menggunakanffprobe
, yang disediakan dengan sebagian besar instalasi FFmpeg:… atau:
Untuk mengkonversi menjadi detik (dan mempertahankan milidetik), pipa menjadi:
Untuk mengubahnya menjadi milidetik, pipa menjadi:
Jika Anda hanya menginginkan detik tanpa milidetik, sambungkan ke:
Contoh:
sumber
ffprobe
, alat yang dirancang untuk tujuan semacam ini yang dikemas denganffmpeg
:ffprobe -show_format input | sed -n '/duration/s/.*=//p'
(atauffprobe -show_format input | grep duration | sed 's/.*=//'
). Mungkin @slhck dapat mengedit ini langsung ke jawabannya.Jika Anda tidak memiliki akses
ffprobe
, Anda bisa menggunakanmediainfo
.sumber
jq
dantr
:mediainfo --Output="General;%Duration/String%" input
X s YYY ms
versusX.YYY
. Cukup mudah disesuaikan dengan| sed -e 's/ s /./' -e 's/ ms//'
jika Anda ingin pergi ke rute itu dan tidak memiliki akses kejq
.mediainfo --Output="General;%Duration/String3%" input
menjadi output00:01:48.501
bukan1 min 48 s
.