图像管从PHP来的ffmpeg(Image pipe from php to ffmpeg)

2019-09-26 14:50发布

我特林为了得到一个视频输出的它喂FFmpeg的蒙山通过PHP的图像序列。 我使用这个shell命令从文本读取文件的图像文件名:

cat $(cat " . $image-list-file . ") | ffmpeg -f image2pipe ...

我想输出到管道舞会PHP,通过imagemagik或GD修改后的图像可能。

我如何在PHP中做到这一点?

编辑:

使用proc_open和缓冲的组合做的工作。 下面是使用一些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]);
}

Answer 1:

这很难给出一个工作示例,而不必示例文件。 但是,你应该使用proc_open()了点。 proc_open()执行一个外壳命令行,并且允许输入/输出管直接读/写访问。 因此,管道已完成,然后才能读取输出。 你会发现,我已经联系手册上的例子。



文章来源: Image pipe from php to ffmpeg
标签: php ffmpeg pipe