php - 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添加
解决方案
推荐阅读
- python - 如何通过别名在 Linux 中将默认的 python3 设置为 python3.9?
- centos - 在 CentOS 8 上无法找到并安装 ImageMagick
- javascript - 如何使用 React 创建自动增长收缩输入?
- task - 为什么我的 leetcode 任务不是从数字 1 开始的?
- javascript - Promise.resolve() 什么时候触发 then() 方法?
- javascript - 为什么 React 源代码是用 JavaScript 而不是 TypeScript 编写的,但仍然有类型?
- swift - 如果默认设置为 true,为什么我需要设置 Analytics.setAnalyticsCollectionEnabled(true)?Firebase + iOS
- sql - 查询以显示类似的项目组,其中包含单个主要项目和多个用逗号分隔的组项目
- python - 从 SFTP 服务器读取图像 EXIF 数据而不下载文件
- javascript - 使用 javascript selenium 清除和发送密钥