我正在尝试使用ffmpeg获取视频的尺寸。我使用命令ffprobe video.mov
来获取以下数据:
ffprobe version 1.0 Copyright (c) 2007-2012 the FFmpeg developers
built on Jan 14 2013 10:18:07 with Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
configuration: --prefix=/usr/local/Cellar/ffmpeg/1.0 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'linebubble.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2013-03-12 02:59:34
Duration: 00:00:14.05, start: 0.050000, bitrate: 135 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 502x288 [SAR 1:1 DAR 251:144], 137 kb/s, 7.84 fps, 60 tbr, 6k tbn, 12k tbc
Metadata:
creation_time : 2013-03-12 02:59:34
handler_name : Core Media Data Handler
现在我想将其转换为正则表达式,以便在第四行最后一行获得 502x288 。
我已经看过python和perl的一些解决方案,但我希望这是一个简单的bash。我该怎么做呢?
答案 0 :(得分:0)
试试这个:
$ ffprobe video.mov 2>&1 | grep -oP '^\s+Stream.*?,\s+\K\d{2,}x\d{2,}'
502x288
如果您没有grep -oP
次切换:
$ ffprobe video.mov 2>&1 |
perl -lne 'print $& if /^\s+Stream.*?,\s+\K\d{2,}x\d{2,}/'
502x288
此解决方案不是基于第N列,我认为搜索逗号后跟空格后跟2个由x
分隔的至少2位数的整数
答案 1 :(得分:0)
你可以做二十几种方式。这是一个使用grep
和awk
ffprobe video.mov 2>&1 | grep 'Stream #0' | awk '{print $10}'