Cara menggunakan ffprobe untuk mendapatkan informasi tertentu tentang file mp4 / h.264

12

Saya hanyalah seorang pengembang PHP rendahan yang telah ditugaskan untuk mengambil beberapa informasi dasar tentang 100 dari ribuan file video. Aku sudah beberapa keberuntungan menggunakan ffmpeg penggalian video bitrate, video width, video height, duration, dan aspect ratiodari mereka, tetapi dengan rasio kesalahan sekitar 5%, ini masih meninggalkan saya dengan sejumlah besar file yang saya tidak tahu bagaimana menangani. Video DO diputar, tetapi sejumlah besar data yang mengembalikan ffmpeg telah membuat saya bingung bagaimana mem-parsing XML yang dikembalikan untuk menemukan apa yang saya butuhkan dengan semua kondisi yang sepertinya saya temui. (File-file tersebut adalah koleksi dari 15 tahun terakhir atau lebih, beberapa baru disandikan, lainnya dikonversi tahun lalu)

Bagaimanapun, saya menemukan penggunaan berikut ffprobeuntuk mendapatkan durasi, dan berharap bahwa seseorang di sini yang memahami kompleksitas menggunakan ffmpeg & ffprobe akan berbaik hati dalam membantu saya menemukan nilai-nilai lain yang saya butuhkan dengan cara yang lebih mudah daripada yang lain. kode gila Saya menemukan diri saya menciptakan untuk memanjat melalui hasil lengkap dari ffmpeg.

ffprobe -i "video.mp4" -show_entries format=duration -v quiet -of csv="p=0"

Terima kasih banyak sebelumnya.

KLARIFIKASI:

Saya harus menambahkan bahwa dengan cmd di bawah ini, saya dapat "melihat" apa yang saya butuhkan, tetapi saya tidak mengerti cara mengekstrak apa yang saya butuhkan, misalnya mengambil bitrate VIDEO, dan menekan / mengabaikan bitrate AUDIO, atau menentukan mana dari 2 berbagai durasi untuk digunakan (Durasi Audio / Video?)

C:\>ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4

duration=1712.000000
bit_rate=64000
width=320
height=240
duration=1711.946113
bit_rate=359827
duration=1712.000000
bit_rate=N/A
duration=1712.000000
bit_rate=N/A
PDB
sumber

Jawaban:

16

Jika Anda hanya ingin informasi dari aliran video pertama digunakan -select_streams v:0:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height,duration,bit_rate -of default=noprint_wrappers=1 input.mp4

Contoh output:

width=640
height=480
duration=10.000000
bit_rate=942704
llogan
sumber
Terima kasih banyak atas bantuannya .... Saya harus menerima jawaban yang lain hanya karena saya diberitahu terlebih dahulu, dan itu berhasil ..
GDP
@GDP Harap pertimbangkan: diberitahukan terlebih dahulu dalam kasus ini, karena ini adalah jawaban terbaru.
p2atau
@saya mengambil titik rep dengan cukup serius, tetapi jawaban ini tidak ada di layar saya untuk menerima sampai saya menerima yang lain, lalu muncul, sehingga permintaan maaf langsung. Maaf semuanya ... benar-benar tidak bermaksud menyinggung.
GDP
9

Dari https://trac.ffmpeg.org/wiki/FFprobeTips

Jika Anda ingin mendapatkan bit_rate dari aliran video pertama, Anda dapat menggunakan:

ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 input.mp4

Di mana -select_steams v:0memilih streaming video 1 dan :nokey=1memberikan nilai tanpa kunci. Anda juga dapat mengekstraksi informasi dengan memiparkannya ke grep tetapi saya tidak yakin apakah itu tersedia di sistem Anda.

ffprobe -v error -show_entries stream=width,height,bit_rate,duration -of default=noprint_wrappers=1 input.mp4 | grep -oP "(?<=bit_rate\=)[0-9]+"

Semoga ini membantu!

moorej
sumber
"piping it to grep" ... terdengar seperti sesuatu yang mungkin telah kulakukan sebagai seorang remaja, lol ... TERIMA KASIH atas bantuannya!
GDP
Terima kasih @ GDP tetapi LordNeckbeard adalah jawaban yang mungkin harus Anda terima seperti yang dipublikasikan pertama
moorej