Vla*_*lov 56 video metadata ffmpeg
我正在尝试使用以下命令获取视频的分辨率:
ffmpeg -i filename.mp4
Run Code Online (Sandbox Code Playgroud)
我得到了很长的输出,但我只需要 bash 脚本的宽度和高度。我应该如何过滤掉这些参数?也许有更好的方法来做到这一点。
llo*_*gan 81
ffprobe
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4
1280x720
Run Code Online (Sandbox Code Playgroud)
有关-of
更多选择和选项,请参阅选项文档。另请参阅FFprobe 提示以了解其他示例,包括持续时间和帧速率。
没有[STREAM]
包装:
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=nw=1 input.mp4
width=1280
height=720
Run Code Online (Sandbox Code Playgroud)
没有钥匙:
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=nw=1:nk=1 input.mp4
1280
720
Run Code Online (Sandbox Code Playgroud)
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 input.mp4
1280,720
Run Code Online (Sandbox Code Playgroud)
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of json input.mp4
{
"programs": [
],
"streams": [
{
"width": 1280,
"height": 720
}
]
}
Run Code Online (Sandbox Code Playgroud)
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of xml input.mp4
<?xml version="1.0" encoding="UTF-8"?>
<ffprobe>
<programs>
</programs>
<streams>
<stream width="1280" height="720"/>
</streams>
</ffprobe>
Run Code Online (Sandbox Code Playgroud)
以下命令完全依赖ffmpeg
(andgrep
和cut
) 来获取所需的高度或宽度:
高度:
$ ffmpeg -i video.mp4 2>&1 | grep Video: | grep -Po '\d{3,5}x\d{3,5}' | cut -d'x' -f1
Run Code Online (Sandbox Code Playgroud)
1280
宽度:
$ ffmpeg -i video.mp4 2>&1 | grep Video: | grep -Po '\d{3,5}x\d{3,5}' | cut -d'x' -f2
Run Code Online (Sandbox Code Playgroud)
720
两者的区别只是-f
参数 to cut
。
如果您更喜欢完整分辨率字符串,则不需要cut
:
$ ffmpeg -i video.mp4 2>&1 | grep Video: | grep -Po '\d{3,5}x\d{3,5}'
Run Code Online (Sandbox Code Playgroud)
1280x720
这是我们对这些命令所做的:
ffmpeg -i
以获取文件信息。Video:
信息的行。digitsxdigits
3 到 5 个字符之间的字符串。x
.之前或之后的文本。使用grep仅选择您要查找的行。将输出从 STDERR 重定向到 STDOUT,因为 ffmpeg 将在那里输出所有信息。
ffmpeg -i filename.mp4 2>&1 | grep <keyword>
Run Code Online (Sandbox Code Playgroud)
编辑:使用 perl 的完整工作示例:
$ ffmpeg -i MVI_7372.AVI 2>&1 | grep Video | perl -wle 'while(<>){ $_ =~ /.*?(\d+x\d+).*/; print $1 }'
640x480
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67314 次 |
最近记录: |