ffprobeを使用してmp4 / h.264ファイルに関する特定の情報を取得する方法


12

私は、数十万のビデオファイルに関する基本的な情報を取得するという任務を負った、ささいなPHP開発者です。私は抽出ffmpegのを使用して、いくつかの運を持っていたvideo bitratevideo widthvideo heightduration、およびaspect ratioそれらからが、約5%の誤差率で、これはまだ私が対処する方法がわからないこと、ファイルの膨大な数を私に残します。ビデオは再生されますが、ffmpegが返す大量のデータは、返されたXMLを解析して、発生していると思われるすべての条件で必要なものを見つける方法について困惑しています。(ファイルは過去15年程度のコレクションで、一部は新しくエンコードされ、他は数年前に変換されたものです)

いずれにせよ、ffprobe期間を取得するために次の使用法を見つけました。ffmpegとffprobeの使用の複雑さを理解している誰かが、私よりももっと簡単な方法で必要な他の値を見つけるのを助けてくれることを望んでいましたクレイジーなコードffmpegのすべての結果を乗り越えるために自分で作成していることに気付きました。

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

事前に感謝します。

明確化:

私はそれを以下のcmdで追加する必要があり、必要なものを「見る」ことができますが、必要なものを抽出する方法がわかりません。たとえば、VIDEOビットレートの取得、AUDIOビットレートの抑制/無視、2使用するさまざまな期間(オーディオ/ビデオの期間?)

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

回答:


15

最初のビデオストリームからの情報のみが必要な場合-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

出力例:

width=640
height=480
duration=10.000000
bit_rate=942704
  • リストを表示するには、すべてのエントリがの代わりに-show_streamsand / orを使用します。-show_format-show_entries
  • さまざまな出力フォーマットスタイルについては、FFprobeドキュメンテーション:ライターを参照してください。
  • その他の例については、FFmpeg Wiki:FFprobeを参照してください。

...おかげでそんなに助けるために....私は私が最初にそれを警告されたという理由だけで、他の答えを受け入れなければならなかった、そしてそれはトリックをやった
GDP

@GDPを考慮してください:この場合、それが最新の回答であるため、最初に通知されます。
p2または

@poor私は担当者を非常に真剣に受け止めていますが、この答えは、もう一方を受け入れるまで受け入れられるように画面上にありませんでした。みなさんごめんなさい...本当に気分を害するつもりはなかった。
GDP

8

https://trac.ffmpeg.org/wiki/FFprobeTipsから

1番目のビデオストリームのbit_rateを取得する場合は、次を使用できます。

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

-select_steams v:0最初のビデオストリームを選択する場所と:nokey=1、キーなしの値を指定します。grepにパイプすることで情報を抽出することもできますが、それがシステムで利用可能かどうかはわかりません。

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

お役に立てれば!


「grepにパイピング」...ティーンエイジャーとしてやったことのように聞こえますが、笑...アシストをありがとう!
GDP

おかげ@GDPしかしLordNeckbeardのは、それが最初に出版されたとして、あなたはおそらく受け入れるべき答えである
moorej
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.