如何使用ffprobe获取有关mp4 / h.264文件的某些信息


13

我不过是个谦虚的PHP开发人员,其任务是检索有关100个成千上万个视频文件的一些基本信息。我使用的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

Answers:


17

如果您只想从第一个视频流中获取信息,请使用-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

非常感谢您的协助。...我不得不接受其他回答,只是因为我先被告知了这一点,然后才
GDP

@GDP请考虑:在这种情况下,请先通知,因为这是最新答案。
p2或2015年

@可怜,我非常重视代表点,但是直到我接受另一个,这个答案才出现在我的屏幕上,然后它出现了,因此立即道歉。对不起大家...真的不是要冒犯。
GDP

9

来自https://trac.ffmpeg.org/wiki/FFprobeTips

如果要获取第一个视频流的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 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.