使用ffmpeg和php为每毫秒的视频添加图像覆盖


Add image overlay for each millisecond the video using ffmpeg and php

我需要添加一个图像和不同的位置为每毫秒的视频帧,使用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);