1

我试图找出通过 php 命令登录到远程服务器并运行命令将 FLV 文件转换为 MP3(然后可能将其移动到本地服务器)的最佳方式?

我总是可以稍后移动文件,但我需要按此顺序执行,因为远程服务器托管 ffmpeg。

使用它将在本地执行:

exec(ffmpeg -i vid.flv -acodec copy output.mp3);

我怎样才能远程做到这一点?

谢谢!

4

4 回答 4

1

您不能通过 FTP 执行远程命令。

如果您对机器具有 SSH 访问权限,则可以使用 PHP 的SSH2 扩展并通过 SSH 执行它。

于 2010-11-23T17:46:31.340 回答
1

查看 SSH2 库 ( http://php.net/manual/en/book.ssh2.php ) 了解如何远程运行命令,以及 Curl 库 ( http://php.net/manual/en/book。 curl.php)了解如何下载远程文件。

于 2010-11-23T17:50:53.683 回答
0

编写一个 php 脚本并将其上传到您的 flv 转换服务器。脚本应该:

  1. 将 flv 文件(通过 POST 或其他下载方式)下载到 vid.flv
  2. 运行服务器命令“exec(ffmpeg -i vid.flv -acodec copy output.mp3);”
  3. 当 output.mo3 准备好时通知您结果

您需要更改脚本的最大执行时间(set_time_limit);

这样你的脚本就不需要通过 ssh 发送命令了。

于 2010-11-23T17:53:21.273 回答
0

您需要按顺序执行以下操作

  • 通过 php 本机 ftp 命令传输 FLV
  • 在 ffmpeg 服务器中创建一个层来运行您的命令
  • 读取响应代码并执行特定操作

如果您通过 ftp 将文件发送到服务器,然后在刚刚将文件传输到的服务器上创建一个脚本,您可以使用文件的哈希码 ping 脚本,并告诉它进行转换。

  • 通过 FTP 发送文件(上传示例
  • ping 服务器开始转换

转换脚本会取一个文件名,然后在本地目录中查找该文件,当它找到它时,它将转换。

如果您希望本地服务器知道转换何时完成,那么您还必须向转换脚本发送一个 id,并将该 id 存储在双方,以便服务器可以 ping 回您的本地脚本(警告!)使用 id,您可以从服务器取回它。

警告的原因是因为如果您在路由器/防火墙后面,您将不得不在路由器上设置端口转发等并允许外部访问端口 80,那么很难让服务器 ping 到您的本地主机。

希望这能给你一些关于如何处理这种情况的线索。

于 2010-11-23T18:02:39.487 回答