使用regex和ffmpeg获取视频的维度

时间:2015-03-04 10:25:09

标签: php regex video ffmpeg

当您尝试获取有关视频的信息时,如果我有一个ffmpeg命令给出的字符串:

  

版权所有(c)2000-2015 FFmpeg开发人员使用gcc 4.4.7构建   (GCC)20120313(Red Hat 4.4.7-11)配置:   --prefix = / usr / local / cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-decoder = liba52 --enable-libopencore- amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags = -I / usr / local / cpffmpeg / include / - extra-ldflags = -L / usr / local / cpffmpeg / lib --enable-version3 --extra-version = syslint libavutil 54. 19.100 / 54. 19.100 libavcodec 56. 26.100 / 56. 26.100 libavformat 56. 23.106 / 56. 23.106 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 11.102 / 5. 11.102   libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1.100   libpostproc 53. 3.100 / 53. 3.100输入#0,mov,mp4,m4a,3gp,3g2,mj2,   来自'/var/zpanel/hostdata/zadmin/public_html/chandelier.mp4':   元数据:major_brand:isom minor_version:512 compatible_brands:   isomiso2avc1mp41网址:关注我> www.hamhame1.in汇编:0   标题:跟我来> www.hamhame1.in艺术家:Follow Me On>   www.hamhame1.in专辑:Follow Me On> www.hamhame1.in日期:关注   我在> www.hamhame1.in类型:关注我> www.hamhame1.in评论   :跟我来> www.hamhame1.in作曲家:跟我来>   www.hamhame1.in original_artist:Follow Me On> www.hamhame1.in   版权:Follow Me On> www.hamhame1.in encoder:Follow Me On>   www.hamhame1.in album_artist:Follow Me On> www.hamhame1.in   season_number:0 episode_sort:0 track:0 disc:0 media_type:0   持续时间:00:03:51.35,开始:0.000000,比特率:2778 kb / s流   0:0(und):视频:h264(高)(avc1 / 0x31637661),yuv420p, 1920x1080 [SAR 1:1> DAR 16:9],2646 kb / s,23.98 fps,23.98 tbr,90k tbn,47.95   tbc(默认)元数据:handler_name:VideoHandler流#0:1(und):   音频:aac(LC)(mp4a / 0x6134706D),44100 Hz,立体声,fltp,125 kb / s   (默认)元数据:handler_name:SoundHandler至少一个输出   必须指定文件

在这种情况下,视频尺寸为:1920x1080

如何知道yuv420p和[SAR 1:1> DAR 16:9]可能会有所不同(也就是说.1920x1080可能是402x250或24x59)。我对使用第三方课程并不感兴趣。

3 个答案:

答案 0 :(得分:8)

使用ffprobe。它来自FFmpeg项目。 不需要正则表达式(如果您的输入有两个视频流,则需要处理两组信息)。您可以将解析限制为特定流并修改输出以显示您想要的任何参数。

示例1:widthxheight

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4

结果:

1280x720

示例2:使用键

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

结果:

width=1280
height=720

另见

答案 1 :(得分:2)

试试这个正则表达式:

(\b[^0]\d+x[^0]\d+\b)

演示https://regex101.com/r/bM6cN0/1

请勿使用正则表达式解析所有内容,兄弟。

答案 2 :(得分:0)

\d{2,5}x\d{2,5}之类的东西应该做的工作。

测试:https://regex101.com/r/cV8mE0/1