Node.jsasynchronousvideo转换慢

我写了一个小网站/服务,它可以从一个网站(目前Youtube)下载一个video,并将其转换为一个mp3文件,并将其作为响应发回。

例如,当您请求http:// localhost:8000 / v = http://www.youtube.com/watch?v = HhoewflkQu0时 ,它会下载此video并响应以MP3编码的audio层。

这一切工作得很好,我的问题是,这是非常缓慢的,我不明白为什么。


简化脚本的行为如下:

下载video并将其写入ffmpeg的stdin,然后stdout转到响应。 video(MP4,FLV) – > FFMPEG – > MP3

我用curl找出脚本有多快:

$ curl http://localhost:8000/v=http://www.youtube.com/watch?v=HhoewflkQu0 

我只得到约5-10K。

那为什么这么慢呢?

  1. 我从中下载video的服务器很慢。
  2. 转换很慢(因为CPU速度很慢)。
  3. node.js – > FFMPEG之间的数据传输很慢。

我试图下载一个正常的下载pipe理器的video,我得到了约320k,这是我的正常下载速度,所以第一点不是瓶颈。

到了第二点和第三点,我试图写一个本地文件到标准input,我得到了大约60万,所以不是这样。

那么为什么我的脚本太慢了,我能做些什么来使其更快?

https://gist.github.com/1304637

提前致谢。

我有这个问题。 我更新到ffmpeg的最新版本,并修复它(截至2016年12月v.3.2.1)