Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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_Pipe - Fatal编程技术网

从php到ffmpeg的图像管道

从php到ffmpeg的图像管道,php,ffmpeg,pipe,Php,Ffmpeg,Pipe,我试图通过PHP向FFMpeg提供一个图像序列,以便从中获取视频。我正在使用此shell命令从文本文件读取图像文件名: cat $(cat " . $image-list-file . ") | ffmpeg -f image2pipe ... 我想输出到管道prom php,也许在通过imagemagik或gd修改图像之后 如何在PHP中实现这一点 编辑: 解决方案 使用proc_open和buffer的组合完成了这项工作。 下面是一个使用GD生成的图片的测试脚本 <?php set_

我试图通过PHP向FFMpeg提供一个图像序列,以便从中获取视频。我正在使用此shell命令从文本文件读取图像文件名:

cat $(cat " . $image-list-file . ") | ffmpeg -f image2pipe ...
我想输出到管道prom php,也许在通过imagemagik或gd修改图像之后

如何在PHP中实现这一点

编辑:

解决方案 使用proc_open和buffer的组合完成了这项工作。 下面是一个使用GD生成的图片的测试脚本

<?php
set_time_limit(0);
$descriptors = array(
    0 => array("pipe", "r")
);

$command = "ffmpeg -f image2pipe -pix_fmt rgb24 -r 30 -c:v png -i - ".
                "-r 30 -vcodec libx264 -pix_fmt yuv420p ".
                "-y test.mp4";

$ffmpeg = proc_open($command, $descriptors, $pipes);

if (is_resource($ffmpeg)){
    for ($i = 0; $i < 180; $i++) {
        $im = @imagecreate(300, 300) or die("GD error");
        $background_color = imagecolorallocate($im, 0, 0, 0);
        $line_color = imagecolorallocate($im, 233, 14, 91);
        $x = rand(0, 300);
        imageline ($im, $x, 0, $x, 300, $line_color);
        ob_start();
        imagepng($im);
        fwrite($pipes[0], ob_get_clean());
        imagedestroy($im);
    }
    fclose($pipes[0]);
}

如果没有示例文件,很难给出一个工作示例。但是你应该用它
proc_open()
在shell中执行命令行,并允许对输入/输出管道进行直接读/写访问。因此,您可以在管道完成之前读取输出。您可以在我链接的手册上找到示例。

如果没有示例文件,很难给出一个有效的示例。但是你应该用它
proc_open()
在shell中执行命令行,并允许对输入/输出管道进行直接读/写访问。因此,您可以在管道完成之前读取输出。您可以在我链接的手册中找到示例。

为什么不同时使用imagick的cli版本?为什么不同时使用imagick的cli版本?