FFMPEG播放叠加视频

时间:2016-07-04 21:31:01

标签: video ffmpeg echo overlay shell-exec

大家好,

我正在努力将图像放在视频(叠加层)上并直接在网络浏览器中播放输出(我在服务器上安装了FFMPEG)。这就是我所拥有的:

$output = shell_exec($command);                 
$image =  '/image.png';         
$video =  '/videoin.mp4';       
$saved_video_path= "";      
$i = "'";     
$command = '/usr/local/bin/ffmpeg -i ' . $video . ' -i ' . $image . ' -filter_complex "[0:v][1:v] overlay=10:10:enable=' . $i . 'between(t,5,10)' . $i    . '" '.$saved_video_path;             
echo "$output";      

我真的很感谢你的帮助!

克里斯

1 个答案:

答案 0 :(得分:0)

我没有在我的服务器上安装FFmpeg,因此我无法确认此解决方案是否正常。
(适用于基于PHP的imgvideo标签,但没有测试涉及FFmpeg)。

echo '<video width="640" height="480" controls><source src="'.$output.'" type="video/mp4"></video>';

因此,使用您的代码,它应该如下所示:

$output = shell_exec($command);
$image =  '/image.png';
$video =  '/videoin.mp4';
$saved_video_path= "";
$i = "'";
$command = '/usr/local/bin/ffmpeg -i ' . $video . ' -i ' . $image . ' -filter_complex "[0:v][1:v] overlay=10:10:enable=' . $i . 'between(t,5,10)' . $i . '" '.$saved_video_path;

//echo "$output";
echo '<video width="640" height="480" controls><source src="'.$output.'" type="video/mp4"></video>';

一些注释

  • 尝试使用:$output = shell_exec('.$command.');

  • 您应逃避 filter_complex 双引号:

...示例

$command = '/usr/local/bin/ffmpeg -i ' . $video . ' -i ' . $image . ' -filter_complex \"[0:v][1:v] overlay=10:10:enable=' . $i . 'between(t,5,10)' . $i . '\"' . $saved_video_path;
  • 尝试仅使用 ffmpeg路径上的双引号{/ 1}}等。