我需要检测视频是以纵向还是横向模式录制,然后以脚本方式将它们转换为正确的方向。
if [ "$v_orient" == "landscape" ]
then
ffmpeg -i file.mp4 -vf "transpose=1" file.ogv
else
ffmpeg -i file.mp4 file.ogv
fi
我查看了ffmpeg在线文档并用Google搜索,
我尝试过exiftool
exiftool -Rotation -Rotate file.mp4
但是,对于横向和背景,输出旋转:90我有的肖像视频。
如何在bash中检测视频方向?
答案 0 :(得分:6)
ffprobe
是ffmpeg
包的一部分,它将报告视频元数据。
ffprobe somevideo.mp4
grep
可用于仅选择旋转信息。在旋转的视频中,我看到了这个输出:
$ ffprobe somevideo.mp4 2>&1 | grep rotate
rotate : 90
在我尝试的未旋转视频上,上面的命令没有产生输出。
此命令取决于视频文件的元数据。如果您的源代码不能生成可靠的rotate
代码,则可能需要查找其他代码。
没有加速度计(重力传感器)的旧相机无法判断它们是纵向还是横向,因此无法生成任何有用的标签。
答案 1 :(得分:1)
我发现 grep
本身提供了一种获取单个元数据值的方法,因此我们可以轻松地直接获取旋转的值,而无需在输出中使用 rotate=$(ffprobe -v error -select_streams v:0 -show_entries stream_tags=rotate -of csv=s=x:p=0 "${sourceFile}")
if [ "$rotate" != "" ]; then
echo "We need to rotate: $rotate"
fi
:
$ ffprobe ~/Videos/test.mp4 -v error -select_streams v:0 -show_entries stream_tags=rotate -of csv=s=x:p=0
90
在纵向模式下,这个选择调用只会给你度数:
Vendor.find({location: req.params.location}, {
vendorpassword: 0
}, function (err, vendor) {
if (err) {
res.status(500).json({
error: 'An error occurred'
});
} else if (!vendor) {
Vendor.find({},{
vendorpassword: 0
},
function (err, vendor) {
res.status(400).json({
vendor
})});
} else {
res.status(200).json({
vendor
})
}
})
},```