-1

在使用 ffmpge 旋转之前,我必须检查视频是横向还是纵向。请帮我。

4

3 回答 3

3

从 ffmpeg -i 获取视频尺寸

  1. 获取信息。
  2. 提取维度。
  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 回答