Menggunakan ffprobe
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4
1280x720
Contoh pilihan pemformatan output lainnya
Lihat -of
dokumentasi opsi untuk lebih banyak pilihan dan opsi. Lihat juga Tips FFprobe untuk contoh lain termasuk durasi dan frame rate.
Default
Dengan tidak [STREAM]
pembungkus:
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=nw=1 input.mp4
width=1280
height=720
Tanpa kunci:
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=nw=1:nk=1 input.mp4
1280
720
CSV
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4
1280,720
JSON
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of json input.mp4
{
"programs": [
],
"streams": [
{
"width": 1280,
"height": 720
}
]
}
XML
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of xml input.mp4
<?xml version="1.0" encoding="UTF-8"?>
<ffprobe>
<programs>
</programs>
<streams>
<stream width="1280" height="720"/>
</streams>
</ffprobe>
eval
berisiko dan tidak benar-benar diperlukan untuk ini. stackoverflow.com/questions/17529220/…eval
dalam jawabannya telah dihilangkan untuk solusi super sederhana yang entah bagaimana saya lewatkan meskipun menatap dokumentasi selama bertahun-tahun.{ "programs": [ { "streams": [ { "width": 640, "height": 360 } ] } ], "streams": [ { "width": 640, "height": 360 } ] }
| sort -nur | head -n 1
. Ini mengembalikan resolusi dengan lebar terbesar. Yang sedang berkata, dalam semua kasus yang pernah saya lihat, hanya ada satu resolusi, tetapi itu dapat diduplikasi.Output dari
ffprobe
terlihat seperti ini:Secara teknis, Anda bisa menggunakannya
eval
untuk menetapkan inibash
variabel, tapi ini tidak perlu dan bisa tidak aman; lihat di sini untuk lebih lanjut:https://stackoverflow.com/questions/17529220/why-should-eval-be-avoided-in-bash-and-what-should-i-use-instead
Sebagai gantinya, karena Anda menggunakan
bash
, manfaatkan array bawaan dan manipulasi string:sumber
Perintah berikut ini sepenuhnya bergantung pada
ffmpeg
(dangrep
dancut
) untuk mendapatkan tinggi atau lebar sesuai kebutuhan:Tinggi:
1280
Lebar:
720
Perbedaan antara keduanya hanyalah
-f
parameter kecut
.Jika Anda lebih suka string resolusi penuh, Anda tidak perlu
cut
:1280x720
Inilah yang kami lakukan dengan perintah-perintah ini:
ffmpeg -i
untuk mendapatkan info file.Video:
informasi.digitsxdigits
yaitu antara 3 dan 5 karakter.x
.sumber
ffprobe
untuk alasan apa pun.Saya akhirnya menemukan jawabannya:
Saya menggunakan ini paket yang disebut Info media
Dan kemudian saya memerintahkan:
Untuk melihat daftar params:
Alat terbaik untuk mengekstrak metadata video!
sumber
Menggunakan grep untuk memilih hanya garis-garis yang Anda cari. Redirect output dari STDERR ke STDOUT, karena ffmpeg akan menampilkan semua info di sana.
Sunting: Contoh kerja lengkap menggunakan perl:
sumber
Saya tahu pertanyaannya adalah tentang bash tetapi, kalau-kalau seseorang berakhir di sini mencari solusi untuk batch Windows, seperti saya sendiri sebelum saya menemukannya.
Tidak ada pesan konsol, dan Anda diakhiri dengan variabel lingkungan yang bagus
myvideo_width
danmyvideo_height
. Anda dapat memeriksanya dengan:Jika resolusi video Anda adalah 1280x720, tentu saja.
sumber