我正在尝试通过 PHP 为 FFMpeg 提供图像序列,以便从中获取视频。我正在使用这个 shell 命令从文本文件中读取图像文件名:
cat $(cat " . $image-list-file . ") | ffmpeg -f image2pipe ...
我想输出到管道舞会 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]);
}