首页 > 解决方案 > windows vs linux中的imageJpeg和FFMPEG

问题描述

我有一个使用 FFMPEG 将图像转换为 5 秒视频的工作代码。

问题是,该代码仅适用于下载的图像,当图像仅在 LINUX 中以编程方式生成时,FFMPEG 不会将图像转换为视频。

PHP 代码

<?php
    $downloadedF="folder/d.jpg";
    $downloadedV="folder/d.mp4";
    $renderedF="folder/r.jpg";
    $renderedV="folder/r.mp4";

    $op_d=shell_exec("ffmpeg -r 1/5 -i ".$downloadedF." -c:v libx264 -vf fps=25 -pix_fmt yuv420p ".$downloadedV);
    $op_r=shell_exec("ffmpeg -r 1/5 -i ".$renderedF." -c:v libx264 -vf fps=25 -pix_fmt yuv420p ".$renderedV);

    echo "Errors:<br>".$op_d."<br><br>".$op_r;
?>

d.mp4(或下载图像的输出)正在为 Windows 和 Linux 生成
r.mp4(或渲染图像的输出)仅在 Windows 中生成,并且 48 字节的空文件正在 Linux 中创建

系统:

Windows 10 上的 XAMPP(开发)
Godaddy Starter 计划托管 - Linux(可能是 redhat)(生产)

文件结构

root folder
    |-index.php
    |-ffmpeg (will be ffmpeg.exe in Windows)
    |-folder
        |-d.jpg (random downloaded image from google)
        |-d.mp4 (Will be created - video converted from downloaded image)
        |-r.jpg (rendered image using php imagejpg)
        |-r.mp4 (Will be created - video converted from rendered image)

渲染图像代码:

$imgFF = imagecreatetruecolor($videoWidth, $videoHeight);
//---adding many text using imagettftext();
imagejpeg($imgFF, $path."-000.jpg");  //for this example, I copied output to folder as r.jpg

编辑1:

的返回值shell_exec即使添加后也没有错误/输出

error_reporting(E_ALL);
ini_set('display_errors', 1);

编辑2:

转换成功的日志可以在这里
找到 渲染图像转换不成功的日志可以在这里找到

笔记:

• 这里的场景被最小化,代码与长代码分开。
• 在 Linux 命令中,我./为 FFMPEG添加

标签: phplinuxffmpegwindows-10redhat

解决方案


推荐阅读