Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ffmpeg固定视频方向_Php_Ffmpeg_Orientation - Fatal编程技术网

Php ffmpeg固定视频方向

Php ffmpeg固定视频方向,php,ffmpeg,orientation,Php,Ffmpeg,Orientation,视频可以包含有关相机方向的元信息。例如,如果您打开设备,iPhone和其他手机会设置此标志。问题是,当一些播放器读取此信息并相应地旋转视频时,其他播放器不会 要解决这个问题,必须旋转视频,并正确设置元信息 ffmpeg是否对此提供了解决方案,还是我必须采取强硬措施(、旋转、设置元数据)我确实采取了强硬措施: $ffmpeg == "path/to/ffmpeg"; $output_file_full = "file/after/normal/conversion&q

视频可以包含有关相机方向的元信息。例如,如果您打开设备,iPhone和其他手机会设置此标志。问题是,当一些播放器读取此信息并相应地旋转视频时,其他播放器不会

要解决这个问题,必须旋转视频,并正确设置元信息

ffmpeg是否对此提供了解决方案,还是我必须采取强硬措施(、旋转、设置元数据)

我确实采取了强硬措施:

$ffmpeg == "path/to/ffmpeg";
$output_file_full = "file/after/normal/conversion";

// get rotation of the video
ob_start();
passthru($ffmpeg . " -i " . $output_file_full . " 2>&1");
$duration_output = ob_get_contents();
ob_end_clean();

// rotate?
if (preg_match('/rotate *: (.*?)\n/', $duration_output, $matches))
{
    $rotation = $matches[1];
    if ($rotation == "90")
    {
        echo shell_exec($ffmpeg . ' -i ' . $output_file_full . ' -metadata:s:v:0 rotate=0 -vf "transpose=1" ' . $output_file_full . ".rot.mp4 2>&1") . "\n";
        echo shell_exec("mv $output_file_full.rot.mp4 $output_file_full") . "\n";
    }
    else if ($rotation == "180")
    {
        echo shell_exec($ffmpeg . ' -i ' . $output_file_full . ' -metadata:s:v:0 rotate=0 -vf "transpose=1,transpose=1" ' . $output_file_full . ".rot.mp4 2>&1") . "\n";
        echo shell_exec("mv $output_file_full.rot.mp4 $output_file_full") . "\n";
    }
    else if ($rotation == "270")
    {
        echo shell_exec($ffmpeg . ' -i ' . $output_file_full . ' -metadata:s:v:0 rotate=0 -vf "transpose=2" ' . $output_file_full . ".rot.mp4 2>&1") . "\n";
        echo shell_exec("mv $output_file_full.rot.mp4 $output_file_full") . "\n";
    }
}

我用了一些难看的临时文件。很抱歉。

eeeshhh这真是太麻烦了。考虑下面的内容,将元数据作为JSON:FFPox-JSON-SuffyStudio YouLyVo.O.Fr.2文件> /DEV/NulLi知道我来得很晚,但不是旋转两次,你也可以“转置=2,转置=2”@ ZioCain,你的意思是$转动=“180”吗?可能是这样的:
echo shell\u exec($ffmpeg.-i.$output\u file\u full.-metadata:s:v:0 rotate=0-vf“transpose=1,transpose=1”。$output\u file\u full..rot.mp4 2>&1”)。“\n”?@PiTheNumber是的,这就是我真正的意思!感谢您再次提供完整的工作代码@p对
ffmpeg
输出进行编号并不意味着机器解析。使用(这将简化您的代码)。