• 搭建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
    
  • 相关阅读:
    C++学习总结 复习篇2
    C++ 学习总结 复习篇
    Git 安装与使用
    前两周工作总结
    [bzoj1033] [ZJOI2008]杀蚂蚁antbuster
    [bzoj1031] [JSOI2007]字符加密Cipher
    [bzoj1030] [JSOI2007]文本生成器
    [bzoj1029] [JSOI2007]建筑抢修
    [bzoj1028] [JSOI2007]麻将
    [bzoj1026] [SCOI2009]windy数
  • 原文地址:https://www.cnblogs.com/chay/p/10553787.html
Copyright © 2020-2023  润新知