搭建USB摄像头转RTSP服务器的多种方法
USB摄像头与网络摄像头相比,可选择范围广、种类多、成本低,但是实际使用时需要通过rtsp流来访问,起到直播的效果,因此在摄像头采集终端上构建rtsp流媒体服务器,将USB摄像头数据转化为rtsp,可以多个客户端访问。
ffserver
关键概念
- ffserver,负责响应客户端的流媒体请求,把流媒体数据发送给客户端。
- ffserver.conf,ffserver启动时的配置文件,在这个文件中主要是对网络协议,缓存文件feed1.ffm和要发送的流媒体文件的格式参数做具体的设定。
- feed1.ffm,可以看成是一个流媒体数据的缓存文件,ffserver启动后会自动生成。ffmpeg把转码好的数据发送给ffserver,如果没有客户端连接请求,ffserver把数据缓存到该文件中。
- ffmpeg,负责媒体文件的转码工作,把你服务器上的源媒体文件转换成要发送出去的流媒体文件。

大致流程为:通过ffmpeg将usb摄像头数据推送到ffserver服务器,终端设备通过rtsp地址访问,达到远程访问的效果。
安装与配置
sudo apt install ffmpeg libx264-dev
在终端中打开配置文件:
sudo gedit /etc/ffserver.conf
然后修改为以下内容:
HTTPPort 8090 #绑定端口号
HTTPBindAddress 0.0.0.0 #绑定IP
MaxHTTPConnections 2000 #最大HTTP连接数
MaxClients 1000 #最大客户端连接数
MaxBandwidth 1000 #最大带宽
CustomLog - #日志文件,- 为直接打印
<Feed feed1.ffm> #feed:每一个输入都建立一个feed
File /tmp/feed1.ffm #feed缓存文件位置和名称
FileMaxSize 10M #缓存文件最大值
ACL allow 127.0.0.1 #允许写入feed的IP
ACL allow 192.168.0.0 192.168.255.255 #允许写入feed的IP范围
</Feed>
RTSPPort 8554 #rtsp端口号
RTSPBindAddress 0.0.0.0 #rtsp IP地址
<Stream live1.h264> #
Format rtp #视频流的格式
Feed feed1.ffm #视频流的种子来源
VideoCodec libx264 #
VideoFrameRate 24 #视频帧率
VideoBitRate 128 #视频比特率
VideoBufferSize 100 #视频缓冲区大小
VideoSize 640x480 #视频帧大小
VideoQMin 1 #
VideoQMax 31 #
NoAudio #无音频
AVPresetVideo default
AVPresetVideo baseline
AVOptionVideo flags +global_header
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
关于ffserver.conf的具体介绍,可参考官方给的配置文件说明,如果有多个USB摄像头,参考feed1的写法,再写一个缓存文件即可。
启动服务与转发流
启动ffserver服务终端直接运行:
ffserver
转发rtsp流
ffmpeg -f v4l2 -i /dev/video1 -s 640x480 -r 24 -vcodec libx264 -an http://127.0.0.1:8090/feed1.ffm
注意:其中/dev/video1表示USB摄像头对应的名称,要根据自己的设备情况对应更改。
客户端读取
在另外一台终端设备上,如windows的电脑上,用VLC软件,打开网络串流,输入如下rtsp地址,即可打开摄像头:
rtsp://192.168.xx.xx:8554/live1.h264
vlc
安装
sudo apt-get install vlc
转流
cvlc -vvv v4l2:///dev/video1 --sout '#transcode{vcodec=h264,vb=800,acodec=mp4a}:rtp{sdp=rtsp://:8554/live.ts}' -I dummy
其中:
v4l2:// - Video4Linux is the interface to webcams on Linux
/dev/video1 - device number assigned to webcam by Linux
vcodec=h264 video codec
vb=800 - 800 kb/s video bit rate
acodec=mp4a
sdp=rtsp://:8554/ - URL/port advertised by RTSP
客户端读取
同样的,可在windows电脑上的VLC软件中,输入如下rtsp地址打开摄像头,注意将IP地址改为服务器的地址
rtsp://192.168.xx.xx:8554/live.ts
搭建USB摄像头转RTSP服务器的多种方法的更多相关文章
- 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)
运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...
- RTSP流和USB摄像头转MJPEG使用VLC
测试环境: 系统: Ubuntu14.04 LTS Desktop 设备:海康IP摄像头和USB摄像头 1.需要先安装vlc包,命令行运行 sudo apt-get update sudo apt-g ...
- VLC搭建RTSP服务器
实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...
- 四、VLC搭建rtsp服务器
一.VLC搭建rtsp服务器 1.rtsp服务搭建 https://blz-videos.nosdn.127.net/1/OverWatch/AnimatedShots/Overwatch_Anima ...
- Win10环境:使用VLC搭建RTSP服务器
VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD.音频 CD.VCD 及各类流媒体协议.既可以作为客户端来播放远程视频,也可以作为RTSP服务器对外发布视频 ...
- 用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)(二) 【转】
http://blog.csdn.net/fm0517/article/details/38110633 http://blog.csdn.net/fm0517/article/details/381 ...
- DIY远程移动图像监测(tiny6410+USB摄像头+motion+yeelink+curl)
看到有博客上采用motion搭建移动图像监测系统,感觉很强大,但大多缺少远程监测能力,大多局限于局域网.OK,笔者手头刚好有一个30W像素的USB摄像头,那么借用yeelink服务,也来DIY一把,哈 ...
- 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)
用VLC读取摄像头产生RTSP流,DSS侦听并转发(二) 之前介绍过<用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)>本文介绍另一种方法. 摄像机地址是192.1.101.51 ...
- 使用Owin中间件搭建OAuth2.0认证授权服务器
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
随机推荐
- Django框架请求生命周期
先看一张图吧! 1.请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校 ...
- sscanf高级用法级正则表达式
sscanf高级用法级正则表达式 摘自:https://www.cnblogs.com/bluestorm/p/6864540.html sscanf与scanf类似,都是用于输入的,只是后者以屏幕 ...
- Oracle 11g 重建EM需要删除的对象
因为需求需要重建EM,重建时因为某些错误被迫停止,比如对象已存在.用户已经存在等,最终找出了创建必备的条件: 1.环境变量(Oracle和Grid在同一个用户下安装) ORACLE_HOME 要设为D ...
- QT学习之事件处理
Qt事件机制 Qt程序是事件驱动的, 程序的每个动作都是由幕后某个事件所触发.. Qt事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. Qt事件的类型很多, 常见的qt的事件如下: 键盘事 ...
- Swift实现Touch ID验证
iOS8开放了很多API,包括HomeKit.HealthKit什么的.我们这里要说的是其中之一的Touch ID验证. 以前用app保护用户的隐私内容,只能设定和输入密码.眼看着只能是iPhone本 ...
- 使用 console.time() 计算js代码执行时间
console.time('hellor'); for(var i=0;i<100000;i++){} console.timeEnd('hellor');
- gkd
## Part 0. 开篇 组长博客:[戳我进入]() 作业博客:[班级博客本次作业的链接](https://edu.cnblogs.com/campus/fzu/Grade2016SE/homewo ...
- post上传文件限制--另一种解决途径
问题:项目之前的上传功能是没有问题的,但是今天同样的代码上传一个压缩包的时候出现了问题,报的是struts.xml的错,说是找不到返回的映射, 问题截图: 很奇怪的问题,之前都没问题的,仔细对比后发现 ...
- Mac OS X Yosemite & Arduino安装CH340 USB转串口驱动
新买的Arduino开发板 USB转串口使用了CH340芯片,在Mac OS X Yosemite上正常安装驱动后,在Arduino IDE的端口没发现相应的设备,使用以下方法后就能使用USB转串口调 ...
- 微软2014实习生招聘笔试第2题 the k-th string
Time Limit: 10000msCase Time Limit: 1000msMemory Limit: 256MB Description Consider a string set that ...