node media server和ffmpeg组合起来可以实现视频
先参考网址:https://github.com/illuspas/Node-Media-Server
安装
node media server
最简单的方式就是用npm全局安装
1  | npm install -g node-media-server  | 
ffmpeg
进入网址:http://ffmpeg.org/
下载后添加环境变量:
1  | D:\APP\ffmpeg-N-101799-g0c7d02844c-win64-gpl-shared-vulkan\bin  | 
推流
在推流前,先把node media server 运行起来,这一点看拉流那一节
本地视频推流
假如在我们的D盘有一个视频叫做my_room.mp4
1  | ffmpeg -re -i D:\\my_room.mp4 -c:v libx264 -preset veryfast -tune zerolatency -c:a aac -ar 44100 -f flv rtmp://localhost/live/my_room  | 
本地摄像头推流
摄像头和麦克风信息
首先使用ffmpeg查看本地摄像头的相关信息:
1  | ffmpeg -list_devices true -f dshow -i dummy  | 

音视频推送
我目前找到两份代码,但是只有第二份代码可以正常
第一个:
1  | ffmpeg -f dshow -i video="HP Wide Vision HD Camera":audio="麦克风阵列 (Realtek High Definition Audio)" -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost/live/my_room  | 
第二个:
1  | ffmpeg -f dshow -i video="HP Wide Vision HD Camera":audio="麦克风阵列 (Realtek High Definition Audio)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost/live/my_room  | 
1  | D:\APP\ffmpeg-N-101799-g0c7d02844c-win64-gpl-shared-vulkan\bin\ffmpeg.exe -f dshow -i video="HP Wide Vision HD Camera":audio="麦克风阵列 (Realtek High Definition Audio)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost/live/my_room  | 
我们可以看到,推送音视频信息时需要给ffmpeg命令行传入摄像头和麦克风信息。
拉流
video标签
所谓拉流,就是使用video标签来链接到node media server的http-flv端口。因此我们要在index.js(运行后台服务器的js文件)里面,打开express服务器和node media server服务器
1  | var express = require('express')  | 
1  | <script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script>  | 
先执行 node index.js,运行起服务器,接着再执行推流。
打开浏览器,输入:http://localhost:3000/
如何更新video标签
1  | if(flvPlayer != undefined){  | 
1  | D:\APP\ffmpeg-N-101799-g0c7d02844c-win64-gpl-shared-vulkan\bin\ffmpeg -f dshow -i audio="麦克风阵列 (Realtek High Definition Audio)" D:\APP\ffmpeg-N-101799-g0c7d02844c-win64-gpl-shared-vulkan\out.m4a  |