我编写了一个小网站/服务,它可以从网站(当前是 Youtube)下载视频并将其即时转换为 mp3 文件,并将该文件作为响应发送回来。
例如,您当您请求http://localhost:8000/v=http://www.youtube.com/watch?v=HhoewflkQu0时,然后它将下载该视频并响应 MP3 编码的音频层。
这一切都运行得很好,我的问题是这非常慢,我不明白为什么。
<小时/>简化后的脚本行为如下:
下载视频并将其写入ffmpeg的stdin,stdout转到响应。 视频(MP4、FLV)-> FFMPEG -> MP3
我使用curl 来计算脚本的速度:
$ curl http://localhost:8000/v=http://www.youtube.com/watch?v=HhoewflkQu0
我只得到大约 5-10k。
那么为什么这么慢呢?
- 我下载视频的服务器速度很慢。
- 转换速度很慢(因为 CPU 速度较慢)。
- node.js -> FFMPEG 之间的数据传输很慢。
我尝试在普通的下载管理器中下载视频,得到了大约320k,这是我的正常下载速度,所以第一点不是瓶颈。
对于第 2 点和第 3 点,我尝试将本地文件写入标准输入,并且我得到了大约 600k,所以这也不是。
那么为什么我的脚本这么慢,我该怎么做才能使它更快?
https://gist.github.com/1304637
提前致谢。
最佳答案
我遇到了这个问题。我更新到最新版本的 ffmpeg 并修复了它(截至 2016 年 12 月 v.3.2.1)
关于video - Node.js异步视频转换速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854289/