搭建USB摄像头转RTSP服务器的多种方法

USB摄像头与网络摄像头相比,可选择范围广、种类多、成本低,可是实际使用时须要经过rtsp流来访问,起到直播的效果,所以在摄像头采集终端上构建rtsp流媒体服务器,将USB摄像头数据转化为rtsp,能够多个客户端访问。html

ffserver

关键概念

  • ffserver,负责响应客户端的流媒体请求,把流媒体数据发送给客户端。
  • ffserver.conf,ffserver启动时的配置文件,在这个文件中主要是对网络协议,缓存文件feed1.ffm和要发送的流媒体文件的格式参数作具体的设定。
  • feed1.ffm,能够当作是一个流媒体数据的缓存文件,ffserver启动后会自动生成。ffmpeg把转码好的数据发送给ffserver,若是没有客户端链接请求,ffserver把数据缓存到该文件中。
  • ffmpeg,负责媒体文件的转码工做,把你服务器上的源媒体文件转换成要发送出去的流媒体文件。

大体流程为:经过ffmpeg将usb摄像头数据推送到ffserver服务器,终端设备经过rtsp地址访问,达到远程访问的效果。web

安装与配置

sudo apt install ffmpeg libx264-dev

在终端中打开配置文件:windows

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流ide

ffmpeg -f v4l2 -i /dev/video1  -s 640x480 -r 24 -vcodec libx264 -an http://127.0.0.1:8090/feed1.ffm

注意:其中/dev/video1表示USB摄像头对应的名称,要根据本身的设备状况对应更改。spa

客户端读取

在另一台终端设备上,如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

其中:code

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
相关文章
相关标签/搜索