在使用 ffmpge 旋转之前,我必须检查视频是横向还是纵向。请帮我。
问问题
4074 次
3 回答
3
- 获取信息。
- 提取维度。
- 如果 x < y,则为纵向。其他景观。
例如:
$output = shell_exec("ffmpeg -i $myvideo");
$out_arr = explode("\n", $output);
foreach($out_arr as $line) {
if( preg_match('/^Stream.*Video:/', trim($line)) ) {
// match line: Stream #0.0(und): Video: h264 (High), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 597 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
$line_arr = explode(',', $line);
// get field: 640x360 [PAR 1:1 DAR 16:9]
$target_arr = explode(' ', $line_arr[2]);
// get parts: 640x360
$dims = explode('x', $target_arr[0]);
$res_x = $dims[0];
$res_y = $dims[1];
}
}
if( !( isset($res_x) && isset($res_y) ) ) {
die('Could not get dimensions');
} else {
$orientation = ($res_x < $res_y) ? 'Portrait' : 'Landscape';
printf('Resolution: %s x %s\nOrientation: %s\n', $res_x, $res_y, $oreintation);
不过,我不知道您为什么要旋转视频的拍摄方式。旋转后,您最终会看到横向视频。
于 2013-03-08T16:12:51.060 回答
3
使用 ffmpeg 我们无法检查视频是在 iphone 中采用横向模式还是纵向模式。
我们需要安装 mediainfo 或 exiftool
如果我们安装 exiftool 使用以下命令
exec('exiftool path/to/filename/ | grep Rotation');
由此我们可以得到视频的旋转
如果旋转为 90°,则在 iphone 中以纵向模式拍摄的视频
如果旋转为 0°,则在 iphone 中以横向模式拍摄的视频
于 2013-03-26T11:00:48.983 回答
0
有时我们会得到 2 种类型的输出“640x268 [SAR 1:1 DAR 160:67]”和“640x268”
$output = shell_exec("FFmpeg -i ".$localVideoPath." -vstats 2>&1");
$out_arr = explode("\n", $output);
foreach($out_arr as $line) {
if( preg_match('/^Stream.*Video:/', trim($line)) ) {
$line_arr = explode(',', $line);
if (str_contains($line_arr[2], 'x')) {
//540x960
$target_arr = explode(' ', $line_arr[2]);
$dims = explode('x', $target_arr[1]);
}else{
//640x268 [SAR 1:1 DAR 160:67]
$target_arr = explode(' ', $line_arr[3]);
$dims = explode('x', $target_arr[1]);
}
$res_x = $dims[0];
$res_y = $dims[1];
}
}
if(!(isset($res_x) && isset($res_y))){
//die('Could not get dimensions');
} else {
$orientation = ($res_x < $res_y) ? 'Portrait' : 'Landscape';
}
于 2022-02-10T06:48:59.917 回答