安装
1 | npm install --save fluent-ffmpeg |
或者添加
1 | "dependencies": { |
之后
1 | npm install |
报错
This relative module was not found:
./lib-cov/fluent-ffmpeg in ./node_modules/fluent-ffmpeg/index.js
解决方法
1 | npm install git+https://gitee.com/suniv/node-fluent-ffmpeg.git |
或者
1 | "dependencies": { |
当然也可以使用Github上的地址
我这里用Github地址下载不下来,才用的镜像地址。
在Windows上无法安装依赖的问题 Code 128
解决方法:
升级Git版本,node-fluent-ffmpeg
项目下有部分文件的名称有[]
导致Git无法Clone,网上的方法我都试了都不行,但是同事的电脑却可以,所以就怀疑是Git版本的问题,果然升级后就解决了。
视频文件推流
引用及变量
1 | const ffmpeg = require('fluent-ffmpeg'); |
具体的推流代码
1 | var command = ffmpeg(inputPath) |
桌面及麦克风推流(MAC)
1 | const ffmpeg = require('fluent-ffmpeg'); |
桌面+麦克风推流(Win)
1 | const ffmpeg = require('fluent-ffmpeg'); |
注意audio=麦克风 (2- High Definition Audio 设备)后面的中文名称不要用双引号括起来,括起来后推流是报错的!
引用的文件路径中的反斜杠也要注意。
这样其实生成的命令如下
1 | ffmpeg -f gdigrab -i desktop -f dshow -i audio=麦克风 (2- High Definition Audio 设备) -vcodec libx264 -preset ultrafast -acodec libmp3lame -pix_fmt yuv422p -f flv rtmp://live.psvmc.cn:1935/live/xiaoming |
但是这样的命令直接在cmd中无法运行 要把麦克风名字用双引号括起来才能运行
1 | ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (2- High Definition Audio 设备)" -vcodec libx264 -preset ultrafast -acodec libmp3lame -pix_fmt yuv422p -f flv rtmp://live.psvmc.cn:1935/live/xiaoming |
这两个地方不一样真是折腾死我了,花了大半天才找到原因。
获取Windows音视频输入设备
设备管理器
此电脑
=>管理
=>设备管理器
FFMpeg方式获取
该方式获取的设备如果包含中文则乱码 并且没法在代码中获取到,只能在控制台打印。
1 | ffmpeg -list_devices true -f dshow -i dummy |
JS获取音视频设备
本来打算用C++获取设备生成DLL,用Node-ffi
调用DLL获取,后来发现js
就能获取,真是绕了个大圈。
1 | /** |
获取默认的音频输入设备的名称
注意默认设备的名称的前面被添加上了Default -
,
如"Default - 麦克风 (Realtek High Definition Audio)"
,要进行移除。
1 | for (let i = 0; i < devicelist.audioinput.length; i++) { |
1 | ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (Realtek High Definition Audio)" -vcodec libx264 -preset ultrafast -acodec libmp3lame -pix_fmt yuv422p -f flv rtmp://live.psvmc.cn/class/110 |