Bagaimana cara memeriksa berapa lama video (mp4) menggunakan shell?
16
Saya perlu mengunggah semua file mp4 dalam direktori dengan panjang> 4 menit menggunakan shell. Saya tidak dapat menemukan skrip untuk memeriksa berapa lama video. Adakah yang tahu cara melakukannya?
Ini memberikan hasil yang aneh ... seperti 2679600 ... lebih baik digunakan mediainfo --Inform="Video;%Duration/String%" [inputfile]... yang akan membuat Anda mendapatkan sesuatu seperti 43 menit 50
Robert Riedl
5
Anda dapat mencoba menggunakan perintah avconv ..
Pertama, Anda harus menginstal:
jika Anda mengetik perintah dengan flag -i, Anda akan mendapatkan informasi tentang video:
avconv -i test.mp4
Dalam output ada bidang yang disebut Durasi
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1,Copyright(c)2000-2012 the Libav developers
built on Nov6201216:51:33 with gcc 4.6.3Input#0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':Duration:00:58:28.05, start:0.000000, bitrate:888 kb/s
Stream#0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbcStream#0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
Sekarang Anda bisa menggunakan perintah untuk hanya mendapatkan nilai Durasi bidang
Ini juga dapat digunakan dengan avprobe- tidak perlu untuk -i, tetapi jika tidak berfungsi dengan cara yang sama persis. Atau ffprobeuntuk jawaban @ per.
evilsoup
4
exiftool(awalnya ditujukan untuk membaca metadata kamera dari file gambar, tetapi kemudian diperluas untuk membaca dan menulis metadata dari hampir semua jenis file media) sangat mudah digunakan untuk ini. Jalankan dengan:
exiftool FILE.mp4 | grep Duration
Anda mungkin harus menginstal exiftoolterlebih dahulu, tetapi ini mudah dilakukan dengan perintah berikut (pada Debian dan turunannya seperti Ubuntu dll.):
apt install libimage-exiftool-perl
Tentu saja, jawaban ini hanyalah alternatif lain. Banyak jawaban lain juga bagus. :)
Tidak perlu digunakan grepdan semacamnya. Cukup exiftool -T -Duration *.mkv(atau apa pun pola file)
PerlDuck
0
Seperti yang Anda lihat ada banyak cara untuk mencapai ini.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONdi mana mediafile adalah nama file, akan memberikan output yang mirip dengan di bawah ini. Yang pertama adalah durasi streaming pertama (biasanya video) dan yang kedua memberikan durasi streaming kedua (biasanya audio)
Jawaban:
Ini akan memberi Anda panjang video.
sumber
Mediainfo adalah alat cepat untuk tujuan ini:
Anda dapat menemukan lebih banyak opsi dalam jawaban yang lebih menyeluruh .
Dalam pengujian saya,
ffprobe
dibutuhkan 0,3 detik danmediainfo
0,09 detik.sumber
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... yang akan membuat Anda mendapatkan sesuatu seperti 43 menit 50Anda dapat mencoba menggunakan perintah avconv ..
Pertama, Anda harus menginstal:
jika Anda mengetik perintah dengan flag -i, Anda akan mendapatkan informasi tentang video:
avconv -i test.mp4
Dalam output ada bidang yang disebut Durasi
Sekarang Anda bisa menggunakan perintah untuk hanya mendapatkan nilai Durasi bidang
Tipe:
Dalam kasus saya hasilnya adalah:
58 Menit dan 28,05 detik.
Semoga ini bisa membantu!
sumber
avprobe
- tidak perlu untuk-i
, tetapi jika tidak berfungsi dengan cara yang sama persis. Atauffprobe
untuk jawaban @ per.exiftool
(awalnya ditujukan untuk membaca metadata kamera dari file gambar, tetapi kemudian diperluas untuk membaca dan menulis metadata dari hampir semua jenis file media) sangat mudah digunakan untuk ini. Jalankan dengan:Anda mungkin harus menginstal
exiftool
terlebih dahulu, tetapi ini mudah dilakukan dengan perintah berikut (pada Debian dan turunannya seperti Ubuntu dll.):Tentu saja, jawaban ini hanyalah alternatif lain. Banyak jawaban lain juga bagus. :)
sumber
Lebih sederhana:
sumber
Menambahkan ke solusi pers , ini dapat digunakan di seluruh direktori:
bahkan dapat diperpanjang dengan
| sort
membuat file diurutkan berdasarkan panjangnya.Anda dapat menambahkan ini ke
.bashrc
atau.bash_aliases
agar dapat dilakukanlsvlength | sort
pada direktorisumber
ffprobe
adalah solusiffmpeg
yang lebih elegan daripada yang melempar kesalahan jika tidak diberi jalur output.sumber
Jika Anda ingin melihat durasi beberapa video dalam direktori, Anda dapat menggunakan perintah berikut
sumber
grep
dan semacamnya. Cukupexiftool -T -Duration *.mkv
(atau apa pun pola file)Seperti yang Anda lihat ada banyak cara untuk mencapai ini.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
di mana mediafile adalah nama file, akan memberikan output yang mirip dengan di bawah ini. Yang pertama adalah durasi streaming pertama (biasanya video) dan yang kedua memberikan durasi streaming kedua (biasanya audio)sumber