使用正则表达式和ffmpeg获取视频的维度


Get dimension of a video using regex and ffmpeg

如果在尝试获取视频信息时,ffmpeg命令给了我这个字符串:

版权所有(c)2000-2015使用gcc 4.4.7构建的FFmpeg开发人员(GCC)20120313(Red Hat 4.4.7-11)配置:--prefix=/usr/local/cpfmpeg--启用共享--启用非自由--启用gpl--启用pthreads--启用libopencore amrnb--启用解码器=liba52--启用libopencore amrwb--启用libfaac--启用libp3lame--启用libthera--启用libvorbis--启用libx264--启用libxvid--额外的cflags=-I/usr/local/cffmpeg/include/--额外的ldflags=-L/usr/local/cppffmpeg/lib--启用版本3--额外版本=syslint-libavutil 54。19.100/54。19.100 libavcodec 56。第26.100/56页。26.100 libav格式56。56年6月23日。23.106 libavdevice 56。4.100/56。4.100 libavfilter 5。11.102/5。11.102libswscale 3。1.101/3。1.101 libswresample 1。1.100/1。1.100libpostdoc 53。3.100/53。3.100输入#0、mov、mp4、m4a、3gp、3g2、mj2、,来自"/var/zpanel/hostdata/zadmin/public_html/destringle.mp4":元数据:major_brand:isom minor_version:512 compatible_brands:isomiso2vc1mp41 URL:关注我>www.hamhame1.in编译:0title:关注我>www.hamhame1.in艺术家:关注我>www.hamhame1.in相册:关注我>www.hamhame1.in日期:关注Me On>www.hamhame1.in流派:关注我>www.hamhane1.in评论:关注我>www.hamhame1.in composer:关注我>www.hamhame1.in original_artist:关注我>www.hamhame1.in版权所有:关注我>www.hamhame1.in编码器:关注我>www.hamhame1.in album_artist:关注我>www.hamhame1.in季节编号:0插曲排序:0曲目:0光盘:0媒体类型:0持续时间:00:03:51.35,开始时间:0.000000,比特率:2778kb/s流0:0(und):视频:h264(高)(avc1/0x31637661),yuv420p,11920x1080[SAR 1:1>DAR 16:9],2646 kb/s,23.98 fps,23.98 tbr,90k tbn,47.95tbc(默认)元数据:handler_name:VideoHandler流#0:1(und):音频:aac(LC)(mp4a/0x6134706D),44100 Hz,立体声,fltp,125 kb/s(默认)元数据:handler_name:SoundHandlerAt至少一个输出文件必须指定

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

知道yuv420p和[SAR 1:1>DAR 16:9]可能不同(1920x1080可能是402x250或24x59),我如何导出视频维度。我对使用第三方类并不感兴趣。

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

示例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

另请参阅

  • FFprobe文档
  • FFmpeg Wiki:FFprobe

试试这个正则表达式:

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

Demohttps://regex101.com/r/bM6cN0/1

不要用正则表达式解析所有内容,兄弟。

应该由'd{2,5}x'd{2,5}之类的东西来完成这项工作。

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