推荐视频编码的库和编程语言
recommend library and programming language for video encoding
我想像 Coconut 一样编写 soap webservice
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"
}
)
现在我想写一些这样的东西,但我对 select java 或 PHP 之类的东西有两种想法,因为我的原始代码在 PHP
似乎使用最多的库是 ffmpeg。
php 我找到了这个图书馆 https://github.com/PHP-FFMpeg/PHP-FFMpeg
对于 java 我找到了这个库:JAVE、JMF、SMF。
如果有人告诉我哪种语言和哪个库以及为什么这个库(速度或功能或...),我将不胜感激
根据您的查询,服务器语言与您提到的语言几乎无关。执行 c运行ching 的位是 ffMpeg,这是最重要的。由于您已经在 PHP 中拥有 control/interface,请继续使用它。
帮助建议:不要使用 ffMPEG 库。构建您自己的命令并使用 exec 到 运行。原因:
- 它更简单(而且是图书馆所做的一切)
- ffMPEG 有无数的选项/配置步骤,有时将它们构建到库中是不可能的
- 但是你需要确保你的命令是 'safe'
如果你正在研究其他语言,你可能会比 NodeJS 差得多;有一个用于 ffMPEG 的合理库(尽管请参阅有关传递参数的注释对于超级复杂的东西来说是不可能的)并且优点是当 ffMPEG 是 运行ning 时,NodeJS 可以将控制权交还给其他请求(PHP, JAVA 等人将在 ffMPEG 运行ning 时保持请求打开和暂停。
NodeJS 的一个缺点是,如果您 CTRL-C 应用程序,那么您无法通过 SigTerm 优雅地控制 ffMPEG。但这变得越来越先进,简单的解决方案不是 ctrl-C 应用程序:)
另请注意,作为一般规则,ffMPEG 一次只能运行一个(每个CPU核心)。将 ffMPEG 任务放在一个队列中,一次只处理一个。这意味着您可以使用 PHP 来处理 HTTP 请求并放入队列,而另一种语言完全可以触发 ffMPEG(但同样,也可以继续使用 PHP,但 NodeJS 会更好 运行将此作为一项服务)。
查看 REDIS 队列 and/or RabbitMQ 以获取与 NodeJS 和 PHP 交叉兼容的队列选项。
我想像 Coconut 一样编写 soap webservice
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"
}
)
现在我想写一些这样的东西,但我对 select java 或 PHP 之类的东西有两种想法,因为我的原始代码在 PHP 似乎使用最多的库是 ffmpeg。 php 我找到了这个图书馆 https://github.com/PHP-FFMpeg/PHP-FFMpeg 对于 java 我找到了这个库:JAVE、JMF、SMF。
如果有人告诉我哪种语言和哪个库以及为什么这个库(速度或功能或...),我将不胜感激
根据您的查询,服务器语言与您提到的语言几乎无关。执行 c运行ching 的位是 ffMpeg,这是最重要的。由于您已经在 PHP 中拥有 control/interface,请继续使用它。
帮助建议:不要使用 ffMPEG 库。构建您自己的命令并使用 exec 到 运行。原因: - 它更简单(而且是图书馆所做的一切) - ffMPEG 有无数的选项/配置步骤,有时将它们构建到库中是不可能的 - 但是你需要确保你的命令是 'safe'
如果你正在研究其他语言,你可能会比 NodeJS 差得多;有一个用于 ffMPEG 的合理库(尽管请参阅有关传递参数的注释对于超级复杂的东西来说是不可能的)并且优点是当 ffMPEG 是 运行ning 时,NodeJS 可以将控制权交还给其他请求(PHP, JAVA 等人将在 ffMPEG 运行ning 时保持请求打开和暂停。
NodeJS 的一个缺点是,如果您 CTRL-C 应用程序,那么您无法通过 SigTerm 优雅地控制 ffMPEG。但这变得越来越先进,简单的解决方案不是 ctrl-C 应用程序:)
另请注意,作为一般规则,ffMPEG 一次只能运行一个(每个CPU核心)。将 ffMPEG 任务放在一个队列中,一次只处理一个。这意味着您可以使用 PHP 来处理 HTTP 请求并放入队列,而另一种语言完全可以触发 ffMPEG(但同样,也可以继续使用 PHP,但 NodeJS 会更好 运行将此作为一项服务)。
查看 REDIS 队列 and/or RabbitMQ 以获取与 NodeJS 和 PHP 交叉兼容的队列选项。