Mp4 / h.264 dosyaları hakkında belirli bilgileri edinmek için ffprobe nasıl kullanılır


13

Ben 100 video dosyaları hakkında bazı temel bilgileri almakla görevli düşük bir PHP geliştirici değilim. Ben ayıklanması ffmpeg kullanarak biraz şans yaşadım video bitrate, video width, video height, duration, ve aspect ratioonlardan ancak 5 hakkında% bir hata oranıyla, bu yine de ben nasıl başa bilmiyorum dosyaların muazzam bir sayı ile beni bırakır. Videolar oynar, ancak ffmpeg'in geri döndürdüğü büyük miktarda veri, karşılaştığım tüm koşullarla ihtiyacım olanı bulmak için döndürülen XML'i nasıl ayrıştırdığına şaşırdı. (Dosyalar son 15 yıldan beri bir koleksiyon, bazıları yeni kodlanmış, bazıları yıllar önce dönüştürülmüş)

Her halükarda, ffprobesüre almak için aşağıdaki kullanımı buldum ve burada ffmpeg & ffprobe kullanmanın karmaşıklıklarını anlayan birinin, ihtiyacım olan diğer değerleri daha basit bir şekilde bulma konusunda bana yardımcı olacak kadar nazik olacağını umuyordum. çılgın kod Kendimi ffmpeg tam sonuçları ile tırmanmaya yaratıyor buluyorum.

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

Şimdiden çok teşekkürler.

AÇIKLAMA:

Bunu aşağıdaki cmd ile eklemeliyim, neye ihtiyacım olduğunu görebiliyorum, ama ihtiyacım olanı nasıl çıkaracağımı anlamıyorum, örneğin VIDEO bit hızını almak ve SES bit hızını bastırmak / yok saymak ya da 2 farklı süreler (Ses / Video süreleri?)

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

Yanıtlar:


18

Yalnızca ilk video akışından gelen bilgileri kullanmak istiyorsanız -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

Örnek çıktı:

width=640
height=480
duration=10.000000
bit_rate=942704
  • Bir listeyi görmek için tüm girişler yerine -show_streamsve / veya -show_formatkullanın -show_entries.
  • Çeşitli çıktı biçimlendirme stilleri için bkz. FFprobe Belgeleri: Yazarlar .
  • Daha fazla örnek için bkz. FFmpeg Wiki: FFprobe .

Yardım için çok teşekkürler .... Ben sadece ilk uyarıldı çünkü diğer yanıtı kabul etmek zorunda kaldı, ve bu hile yaptı ..
GSYİH

@GDP Lütfen düşünün: bu durumda önce bildirilir, çünkü en son cevap budur.
p2 veya

@ poor Rep noktasını oldukça ciddiye alıyorum, ama bu cevap diğerini kabul edene kadar kabul etmek için ekranımda değildi, o zaman ortaya çıktı, bu yüzden hemen özür. Üzgünüm herkes ... gerçekten gücendirmek istemiyordu.
GSYİH

9

Gönderen https://trac.ffmpeg.org/wiki/FFprobeTips

1. video akışının bit_rate değerini almak istiyorsanız şunları kullanabilirsiniz:

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

-select_steams v:01. video akışını nerede seçer ve :nokey=1anahtarsız değeri verir. Bilgileri grep'e yönlendirerek de çıkarabilirsiniz, ancak bunun sisteminizde mevcut olup olmadığından emin değilim.

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

Bu yardımcı olur umarım!


"grep için boru" ... bir genç gibi yapmış olabilir bir şey gibi geliyor, lol ... Yardım için teşekkürler!
GSYİH

Teşekkürler @GDP ama LordNeckbeard's muhtemelen ilk yayınlandığı gibi kabul etmeniz gereken cevaptır
moorej
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.