我需要添加一个图像和不同的位置为每毫秒的视频帧,使用php和ffmpeg。例如:在第一秒,我在X位置添加了一个图像,下一秒,在X位置添加了另一个图像。如果在终端上直接使用该命令,则转换成功。但是在PHP中我有困难。在php中,使用以下命令:
<?php
shell_exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''vid.mp4 -i C:''ffmpeg''bin''1.png -filter_complex "[0:v][1:v] overlay=100:25:enable=''between(t,1,1.5)''" C:''ffmpeg''bin''output1.mp4');
sleep(20);
echo "1";
shell_exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''output1.mp4 -i C:''ffmpeg''bin''2.png -filter_complex "[0:v][1:v] overlay=10:25:enable=''between(t,1.5,2)''" C:''ffmpeg''bin''output2.mp4');
sleep(50);
echo "2";
shell_exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''output2.mp4 -i C:''ffmpeg''bin''3.png -filter_complex "[0:v][1:v] overlay=250:25:enable=''between(t,2,2.5)''" C:''ffmpeg''bin''output1.mp4');
sleep(20);
echo "3";
shell_exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''output1.mp4 -i C:''ffmpeg''bin''4.png -filter_complex "[0:v][1:v] overlay=300:25:enable=''between(t,3,3.5)''" C:''ffmpeg''bin''output2.mp4');
sleep(20);
echo "4";
shell_exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''output2.mp4 -i C:''ffmpeg''bin''5.png -filter_complex "[0:v][1:v] overlay=350:25:enable=''between(t,4,4.5)''" C:''ffmpeg''bin''output1.mp4');
sleep(70000);
shell_exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''output1.mp4 -i C:''ffmpeg''bin''1.png -filter_complex "[0:v][1:v] overlay=400:25:enable=''between(t,5,5.5)''" C:''ffmpeg''bin''output2.mp4');
我使用睡眠功能(PHP),但它没有工作。请,因为我对ffmpeg和php没有太多的经验,你可以帮助我。
通过检查命令的输出来排除故障。这应该就是答案了。
exec('C:''ffmpeg''bin''ffmpeg.exe -i C:''ffmpeg''bin''vid.mp4 -i C:''ffmpeg''bin''1.png -filter_complex "[0:v][1:v] overlay=100:25:enable=''between(t,1,1.5)''" C:''ffmpeg''bin''output1.mp4', $output);
var_dump($output);