【问题标题】:Have a Unix command/script work on windows?Unix 命令/脚本可以在 Windows 上运行吗?
【发布时间】:2011-06-09 11:32:53
【问题描述】:

我有这个使用 unix 管道的命令

 system("curl " . escapeshellarg($flv['dl']) . " | ffmpeg -f flv -i - -f mp3 -ab 320k pipe:1");

我可以做些什么来让同样的事情在 Windows 中发生?

谢谢

【问题讨论】:

  • system() 调用意味着您正在从其他语言执行此 shell 语句.... 建议使用 perl。即使是 Windows 命令提示符也支持管道,因此如果您将上面的内容更改为简单地打印命令行,您可以尝试从 Windows 命令提示符手动执行相同的操作。您真正的问题很可能是安装 curlffmpeg 并将它们的路径添加到您的 PATH 环境变量中,而无需使用 UNIX 样式的 shell。
  • 你好@Jim Garrison,你为什么要删除 cygwin 标签?
  • @Tony - escapeshellarg() 是一个 PHP 函数
  • @lunixbochs:感谢您的洞察力。 PHP 文档的超快速浏览表明 PHP 的 system 也只是将指令传递给操作系统的默认命令解释器,而不在内部处理管道,所以它似乎仍然是安装 curl 和 ffmpeg 并在 PATH 中的问题,无需对 PHP 代码进行任何必要的更改......

标签: windows shell unix


【解决方案1】:

如果您不关心性能,将 unix 脚本移植到 Windows 的最简单方法是安装 cygwin

它是 Windows 上的 Unix API 模拟层,Wine 模拟 linux 上的 win32。


您也可以下载各个命令行工具的windows版本

  • Curl download提供了几个windows版本的二进制文件(不要使用cygwin版本。
  • 请注意,ffmpeg 仅适用于 windows 的夜间构建。未编译稳定版本。

这种方法需要为每个工具找到特定的下载 url,有时甚至会导致您从源代码编译二进制文件!当您只需要 2 或 3 个工具时,它仍然是合理的。但除此之外,它是如此不确定和耗时,因此您应该只在性能或低依赖性部署是一个问题时才考虑。

【讨论】:

  • 但请注意,Wine 运行 未修改 windows 二进制文件,而 Cygwin 要求您重新编译代码。
【解决方案2】:

我认为通过管道将curl下载的文件发送到ffmpeg是最好的方法。

curl "http://domain.com/file.flv" | ffmpeg -f flv -i -f mp3 -ab 320k 管道:1

curl 和 ffmpeg 可用于 windows。

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2023-01-17
    • 2011-03-11
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多