ffmpeg低延迟傻瓜式广域网视频推流

几年前找到的视频推流方案,后来再也找不到了,今天花了1天时间才重新搞起来,记录一下,免得以后用到又得到处找。

特别简单,外行也可以试试的那种。

广域网嘛,得先有个服务器吧,略。

在服务器上安装几样东西(不好使就sudo):

npm install -g ws
npm install ws
npm install http-server -g

一个是websocket,一个是http服务器,一个用来接收视频流数据,一个用来响应观看视频流请求。

除此以外,还需要有jsmpeg,用来转视频数据 jsmpeg ,点这里下载。

下载后解压到服务器某个目录,然后进到这个目录里面,文件夹名字应该叫jsmpeg-master吧。

进去之后执行:

node websocket-relay.js supersecret 8081 8082

确认你的8081 8082端口都是可用的哦,如果不可用,那换一个喽,对应的后面用到这个端口的地方也要换。

在服务器上再开一个命令行,同样进入jsmpeg-master目录。

执行:

http-server

它会使用8080端口,同样记得确认是否可用,如果端口不可用,这个http服务应该可以指定端口吧,我也不是很熟,各位看官自行百度吧。

好的,那么都运行起来了,现在在你的家用电脑啊,嵌入式设备之类(反正是linux就好,不是的话问题也不大)的东西上插个usb摄像头,并且在里面装个ffmpeg,装这个东西简单得很,最多也就去git上下载一个编译一下,百度一下到处都有,此处略。

好的,那么现在你有一个插着usb摄像头并且安装好ffmpeg的linux主机了,在这台主机里面执行:

ffmpeg -i /dev/video0 -s 640x360 -f mpegts -codec:v mpeg1video -r 24 -bf 0 -codec:a mp2 -ar 44100 -ac 1 -b:a 16k http://111.222.111.222:8081/supersecret

ip记得换成你自己的公网服务器IP哦(局域网服务器当然肯定绝对也没问题啦,只不过你只能在局域网访问了)。

现在万事具备,去隔壁村随便找一台能上网的电脑,在浏览器上输入:

http://111.222.111.222:8080/view-stream.html

好了,你现在可以看到你摄像头的画面了

安全性一般般吧;

捉奸?可以啊;

监视员工?没问题;

实时性超强,比什么鬼rtmp强到不知道哪里了,比直接在照镜子慢不了多少,但是为什么大家都用rtmp?

缺点?不知道,这不是我的领域,能用就行了,欢迎专业大佬指出这个方案的问题。

PS:要是不在乎延迟的话,200买个海康威视(用4g卡或者插网线的自己选吧,最好问一下是不是支持萤石云),注册个萤石云,比广域网服务器便宜多了,至少现在萤石云是免费的,海康威视真棒

你可能感兴趣的:(随便搞搞,linux)