Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP将图像插入MP4视频_Php_Video_Mp4 - Fatal编程技术网

通过PHP将图像插入MP4视频

通过PHP将图像插入MP4视频,php,video,mp4,Php,Video,Mp4,我想通过PHP在服务器端将静态图像插入mp4序列,其中放置的图像的位置将移动,例如,我将图像放置到房间中具有色度键颜色(或指定坐标)的相框中,并且该相框的位置将在视频中移动(如果可能…)。与Facebook的“朋友日”视频非常相似。请参见此 是否有任何类或函数允许我这样做 检查前一个问题,但似乎没有结论 提前感谢您的帮助 您需要的不仅仅是PHP。你需要了解像素编程及其子类别:计算机视觉 在我向您展示真实性检查之前,让我们假设任务非常简单,只需“…通过PHP将静态图像插入mp4序列”。你需要什么

我想通过PHP在服务器端将静态图像插入mp4序列,其中放置的图像的位置将移动,例如,我将图像放置到房间中具有色度键颜色(或指定坐标)的相框中,并且该相框的位置将在视频中移动(如果可能…)。与Facebook的“朋友日”视频非常相似。请参见此

是否有任何类或函数允许我这样做

检查前一个问题,但似乎没有结论


提前感谢您的帮助

您需要的不仅仅是PHP。你需要了解像素编程及其子类别:计算机视觉

在我向您展示真实性检查之前,让我们假设任务非常简单,只需
“…通过PHP将静态图像插入mp4序列”
。你需要什么

试试PHP:
如果你准备好输入的图片,有一个像绿色盒子一样的图片,那么你可以考虑用“强”><强>用用户照片替换绿色像素。 您必须对每个帧执行此操作。要将视频分解为单帧PNG,请尝试FFmpeg之类的工具

试试FFmpeg:
首先在服务器上安装FFmpeg(甚至还有FFmpeg到PHP的连接,即:发送命令并接收结果)。这将用于从源图像中提取、覆盖图像,然后对新的输出视频进行编码。您可以查看,了解在特定位置叠加图像的情况

在下面的代码段中,指定了两个输入图像(
vid_frame1.png
是需要插入图像的视频抓取,
over_image1.png
是要覆盖的图像)<代码>覆盖=75:200表示覆盖图像在75像素(x)和200像素(y)之间的位置

如您所见,您必须指定位置,以便在移动视频中(放置位置将随时间变化),您需要跟踪每个帧中的预期图像位置。在每秒24帧的视频中,这意味着每秒可能有24个独特的位置,这可能会变得单调乏味。您将运行上述命令24次,每次更改
覆盖
位置

注意:如果安装FFmpeg并与PHP一起使用,则还可以执行stdinput/stdoutput过程。这意味着您可以直接输出到视频文件,而不是输出“编辑帧”PNG。视频是在程序运行时生成的,当它完成时,会有一个完整的视频文件。这太长了,无法解释,但您可以提供有关它的信息

现实检查…

你说的是“动态视频”。你需要一个适当的系统来处理像素跟踪、透视失真和运动模糊等任务。该系统将是一个基于服务器的应用程序(使用Java?或C#?)。下面是一个的示例。还可以尝试编写类似这样的代码(发现),因此,如果我们采用绿色块的想法,现在您只需在源视频帧中找到绿色块的四个角,并将这些扭曲点定位到每个角,就可以通过PHP对运动模糊执行Persctive扭曲等操作(我从未尝试过,但是)有谷歌搜索…

没有关于如何单独使用PHP的答案,但希望我的答案能提供一些有用的建议。非常感谢您的详细回复以及指向示例工具的链接。我会按照你的步骤考虑使用FFmpeg,而且如果我的客户愿意接受带有插入图像的静止帧,这样我们就不必应用透视/扭曲..PS:如果你不需要移动图像(如电视新闻阅读器+缩略图),那么你可以使用它将图像放置在一个位置x个时间。如果有运动像一辆带有标志的汽车,那么你需要静止(抓取)并检查每一帧静止图像的放置位置。这就是PHP变成akward的地方(但不能依赖准备好的视频输入)。为此,您需要像C++/C#或Java或AS3这样的东西。
ffmpeg -i vid_frame1.png -i over_image1.png -filter_complex "[0:v][1:v] overlay=75:200" new_frame1.png