【发布时间】:2014-02-10 14:18:57
【问题描述】:
我正在开发一个允许用户上传视频的移动应用程序,上传后视频被转换为 mp4 格式,我为此使用了一个 shell 脚本,该脚本在我们的最后一个服务器上运行良好,但我们切换了服务器,现在它已经停止工作,正在打印 apache 的日志文件。
[Tue Jan 21 00:57:37.003944 2014] [:error] TERM environment variable not set.
[Tue Jan 21 00:57:37.148531 2014] [:error] ./script.sh: line 3: ffmpeg: command not found
[Tue Jan 21 00:57:37.148794 2014] [:error] script.sh: line 4: ffmpeg: command not found
script.sh的内容是
#!/bin/bash -p
clear
ffmpeg -i $filename -strict experimental -ar 22050 converted.mp4<br>
ffmpeg -itsoffset -1 -i converted.mp4 -vframes 25 -filter:v scale="min(500\, iw):-1" thumbnail.png
我正在使用 php 调用脚本形式
shell_exec("script.sh 52567afa374c61381399290.mp4");
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
几件事。你为什么要做
clear(猜测TERM错误来自这里)如果你实际登录服务器并运行type ffmpeg会得到什么(猜测它可能不存在或在它使用的任何路径中都找不到)?另外,“$filename”是否设置为任何值? -
ffmpeg 已安装并正确配置,当我从 SSH 运行相同的命令时,命令成功执行,清除只是在执行前清除控制台,我将尝试删除它并再次运行。跨度>
-
如果只有 TERM 错误与清除有关,可能不会改变任何东西。也可以尝试使用
ffmpeg的完整路径,使用shell_exec("bash script.sh 52567afa374c61381399290.mp4");,我认为您需要将$filename切换为"$1"(尽管我对这里的注入有些厌倦) -
感谢 BrowSlow,使用 ffmpeg 的完整路径做到了 :)
-
没问题,很高兴它成功了。
标签: php bash shell video ffmpeg