推荐用于视频编码的库和编程语言

时间:2016-12-06 06:50:39

标签: java php jmf smf

我想写像Coconut这样的肥皂网服务

Coconut::Job.create(
  "api_key" => "k-api-key",
  "vars" => {"cdn" => "s3://accesskey:secretkey@mybucket", "vid" => 1234},
  "source" => "mysite.com/media/video.mp4",
  "outputs" => {
    "mp4" => "$cdn/videos/$vid/video.mp4",
    "webm" => "$cdn/videos/$vid/video.webm",
    "hls" => "$cdn/hls/$vid/video.m3u8",
    "dash" => "$cdn/dash/$vid/video.mpd",
    "jpg:300x" => "$cdn/previews/$vid/thumbs_%1d.jpg, number=3",
    "gif:150x" => "$cdn/previews/$vid/animated.gif"
  }
)

现在我想写一些像这样的东西,但我有两个想法选择java或像PHP这样的东西,因为我的原始代码是在PHP中 似乎最常用的库是ffmpeg。 对于php我找到了这个库https://github.com/PHP-FFMpeg/PHP-FFMpeg 对于java我发现这个库:JAVE,JMF,SMF。

如果有人告诉我哪种语言和哪个库以及为什么这个库(速度或功能或......),我将不胜感激

1 个答案:

答案 0 :(得分:1)

根据您的查询,服务器语言几乎与您提到的语言无关。进行运算的位是ffMpeg,这是最重要的。由于您已经拥有PHP中的控件/界面,因此请继续使用它。

建议帮助:不要使用ffMPEG库。构建自己的命令并使用exec运行。原因:   - 它更简单(无论如何都是图书馆所做的)   - ffMPEG有很多选项/配置步骤,有时将它们构建到库中是不可能的   - 但是,您确实需要确保您的命令是安全的

如果你正在寻找其他语言,你可能会比NodeJS做得更糟; ffMPEG有一个合理的库(虽然看到关于传递参数的注释对于超复杂的东西来说是不可能的)并且优点是当ffMPEG运行时NodeJS可以将控制权传递回其他请求(PHP,JAVA等将保留请求在ffMPEG运行时打开并保持。)

NodeJS的一个缺点是,如果你按CTRL-C应用程序,那么你就可以优雅地控制SigTerm的ffMPEG。但是,这种方法越来越先进,简单的解决方案就是不要ctrl-C应用程序:)

另请注意,作为一般规则,ffMPEG应该一次只运行一个(每个CPU核心)。将ffMPEG任务保留在队列中,一次只处理一个。这意味着您可以使用PHP来处理HTTP请求并将其放入队列,而另一种语言则完全用于触发ffMPEG(但同样可以继续使用PHP,但NodeJS可以更好地运行它,但作为服务)。

查看REDIS队列和/或RabbitMQ,了解与NodeJS和PHP交叉兼容的排队选项。