Raspbian简易RTSP服务

2024-02-15 10:12
文章标签 服务 简易 rtsp raspbian

本文主要是介绍Raspbian简易RTSP服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Raspbian简易RTSP服务

  • 1. 源由
  • 2. 搭建简易RTSP服务器
    • 2.1 系统安装
    • 2.2 软件安装
    • 2.3 命令介绍
      • 2.3.1 libcamera-hello
      • 2.3.2 libcamera-vid
      • 2.3.3 cvlc
  • 3. 实测
  • 4. 参考资料

1. 源由

鉴于前期的一些准备工作:

  • 《ArduPilot开源飞控之Companion Computers简单分析》
  • 《ArduPilot开源代码之CompanionComputer上天计划》

以及手头可用的资源RaspberryPi(PiZero/Pi3B+),选择rpanion-server这个想对容易上手的伴机电脑。

在使用过程中确实也遇到一些问题:

  1. Can’t set “Maximum Bitrate” beyond 10MB on Raspberry Pi3B+ #191
  2. Re-install process will fail due to the existence of binary(node/npm) links #194
  3. Feature Request: pan-tilt gimbal controls #196
  4. Is there any way to save configuration locally on Rpanion? #197
  5. 720P@20FPS latency is obviously there, any idea? #204
  6. No video feed thru UDP with RTP #175
  7. Feature Request: send VIDEO_STREAM_INFO mavlink messages to GCS #169

整个过程中也得到了stephendade的大力支持和帮助。

当然,整理这份资料,主要目的是

  1. 记录一下其他方式搭建简易RTSP服务器
  2. 了解最简系统下的RTSP服务性能
  3. 同时,和Rpanion做一个对比

期望:用最简单的命令或者环境来做对比测试。

2. 搭建简易RTSP服务器

  • 最简单的环境:rpi-rtsp-gstreamer 对应的资料:《Streaming Raspberry Pi Video via RTSP with GStreamer and Video4Linux》

  • 最简单的命令:libcamera-vid + cvlc 对应的资料:《How to use libcamera-vid to stream rtsp on raspberry pi? #3097》

注:最终结合了上面两份资料,选择了最简单命令来搭建环境。

2.1 系统安装

略,详见《Raspbian镜像无头烧录》

2.2 软件安装

$ sudo apt-get install gstreamer1.0-tools -y
$ sudo apt-get install libgstrtspserver-1.0-dev gstreamer1.0-rtsp -y
$ sudo apt-get install vlc -y

2.3 命令介绍

$ libcamera-hello --list-camera
Available cameras
-----------------
0 : ov5647 [2592x1944] (/base/soc/i2c0mux/i2c@1/ov5647@36)Modes: 'SGBRG10_CSI2P' : 640x480 [58.92 fps - (16, 0)/2560x1920 crop]1296x972 [43.25 fps - (0, 0)/2592x1944 crop]1920x1080 [30.62 fps - (348, 434)/1928x1080 crop]2592x1944 [15.63 fps - (0, 0)/2592x1944 crop]$ libcamera-vid --codec h264 --profile main --level 4 -b 150000000 --framerate 30 --width 1920 --height 1080 -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

2.3.1 libcamera-hello

OV5647摄像头CSI模块,支持以下模式:

  • 640x480 [58.92 fps - (16, 0)/2560x1920 crop]
  • 1296x972 [43.25 fps - (0, 0)/2592x1944 crop]
  • 1920x1080 [30.62 fps - (348, 434)/1928x1080 crop]
  • 2592x1944 [15.63 fps - (0, 0)/2592x1944 crop]
$ libcamera-hello --help
Valid options are:-h [ --help ] [=arg(=1)] (=0)         Print this help message--version [=arg(=1)] (=0)             Displays the build version number--list-cameras [=arg(=1)] (=0)        Lists the available cameras attached to the system.--camera arg (=0)                     Chooses the camera to use. To list the available indexes, use the--list-cameras option.-v [ --verbose ] [=arg(=2)] (=1)      Set verbosity level. Level 0 is no output, 1 is default, 2 is verbose.-c [ --config ] [=arg(=config.txt)]   Read the options from a file. If no filename is specified, default toconfig.txt. In case of duplicate options, the ones provided on the command linewill be used. Note that the config file must only contain the long formoptions.--info-text arg (=#%frame (%fps fps) exp %exp ag %ag dg %dg)Sets the information string on the titlebar. Available values:%frame (frame number)%fps (framerate)%exp (shutter speed)%ag (analogue gain)%dg (digital gain)%rg (red colour gain)%bg (blue colour gain)%focus (focus FoM value)%aelock (AE locked status)%lp (lens position, if known)%afstate (AF state, if supported)--width arg (=0)                      Set the output image width (0 = use default value)--height arg (=0)                     Set the output image height (0 = use default value)-t [ --timeout ] arg (=5000)          Time (in ms) for which program runs-o [ --output ] arg                   Set the output file name--post-process-file arg               Set the file name for configuring the post-processing--rawfull [=arg(=1)] (=0)             Force use of full resolution raw frames-n [ --nopreview ] [=arg(=1)] (=0)    Do not show a preview window-p [ --preview ] arg (=0,0,0,0)       Set the preview window dimensions, given as x,y,width,height e.g. 0,0,640,480-f [ --fullscreen ] [=arg(=1)] (=0)   Use a fullscreen preview window--qt-preview [=arg(=1)] (=0)          Use Qt-based preview window (WARNING: causes heavy CPU load, fullscreen notsupported)--hflip [=arg(=1)] (=0)               Request a horizontal flip transform--vflip [=arg(=1)] (=0)               Request a vertical flip transform--rotation arg (=0)                   Request an image rotation, 0 or 180--roi arg (=0,0,0,0)                  Set region of interest (digital zoom) e.g. 0.25,0.25,0.5,0.5--shutter arg (=0)                    Set a fixed shutter speed in microseconds--analoggain arg (=0)                 Set a fixed gain value (synonym for 'gain' option)--gain arg                            Set a fixed gain value--metering arg (=centre)              Set the metering mode (centre, spot, average, custom)--exposure arg (=normal)              Set the exposure mode (normal, sport)--ev arg (=0)                         Set the EV exposure compensation, where 0 = no change--awb arg (=auto)                     Set the AWB mode (auto, incandescent, tungsten, fluorescent, indoor, daylight,cloudy, custom)--awbgains arg (=0,0)                 Set explict red and blue gains (disable the automatic AWB algorithm)--flush [=arg(=1)] (=0)               Flush output data as soon as possible--wrap arg (=0)                       When writing multiple output files, reset the counter when it reaches thisnumber--brightness arg (=0)                 Adjust the brightness of the output images, in the range -1.0 to 1.0--contrast arg (=1)                   Adjust the contrast of the output image, where 1.0 = normal contrast--saturation arg (=1)                 Adjust the colour saturation of the output, where 1.0 = normal and 0.0 =greyscale--sharpness arg (=1)                  Adjust the sharpness of the output image, where 1.0 = normal sharpening--framerate arg (=-1)                 Set the fixed framerate for preview and video modes--denoise arg (=auto)                 Sets the Denoise operating mode: auto, off, cdn_off, cdn_fast, cdn_hq--viewfinder-width arg (=0)           Width of viewfinder frames from the camera (distinct from the preview windowsize--viewfinder-height arg (=0)          Height of viewfinder frames from the camera (distinct from the preview windowsize)--tuning-file arg (=-)                Name of camera tuning file to use, omit this option for libcamera defaultbehaviour--lores-width arg (=0)                Width of low resolution frames (use 0 to omit low resolution stream--lores-height arg (=0)               Height of low resolution frames (use 0 to omit low resolution stream--mode arg                            Camera mode as W:H:bit-depth:packing, where packing is P (packed) or U(unpacked)--viewfinder-mode arg                 Camera mode for preview as W:H:bit-depth:packing, where packing is P (packed)or U (unpacked)--buffer-count arg (=0)               Number of in-flight requests (and buffers) configured for video, raw, andstill.--viewfinder-buffer-count arg (=0)    Number of in-flight requests (and buffers) configured for preview window.--autofocus-mode arg (=default)       Control to set the mode of the AF (autofocus) algorithm.(manual, auto,continuous)--autofocus-range arg (=normal)       Set the range of focus distances that is scanned.(normal, macro, full)--autofocus-speed arg (=normal)       Control that determines whether the AF algorithm is to move the lens as quicklyas possible or more steadily.(normal, fast)--autofocus-window arg (=0,0,0,0)     Sets AfMetering to  AfMeteringWindows an set region used, e.g.0.25,0.25,0.5,0.5--lens-position arg                   Set the lens to a particular focus position, expressed as a reciprocal distance(0 moves the lens to infinity), or "default" for the hyperfocal distance--hdr [=arg(=1)] (=0)                 Enable (1) or disable (0) High Dynamic Range, where supported--metadata arg                        Save captured image metadata to a file or "-" for stdout--metadata-format arg (=json)         Format to save the metadata in, either txt or json (requires --metadata)

2.3.2 libcamera-vid

视频采集

  • 编码:--codec h264
  • 配置:--profile main
  • 级别:--level 4
  • 码流:-b 150000000
  • 帧率:--framerate 30
  • 宽高:--width 1920 --height 1080
  • 延时:-t 0
  • 强制:--inline
  • 输出:-o -
$ libcamera-vid --help
Valid options are:-h [ --help ] [=arg(=1)] (=0)         Print this help message--version [=arg(=1)] (=0)             Displays the build version number--list-cameras [=arg(=1)] (=0)        Lists the available cameras attached to the system.--camera arg (=0)                     Chooses the camera to use. To list the available indexes, use the--list-cameras option.-v [ --verbose ] [=arg(=2)] (=1)      Set verbosity level. Level 0 is no output, 1 is default, 2 is verbose.-c [ --config ] [=arg(=config.txt)]   Read the options from a file. If no filename is specified, default toconfig.txt. In case of duplicate options, the ones provided on the command linewill be used. Note that the config file must only contain the long formoptions.--info-text arg (=#%frame (%fps fps) exp %exp ag %ag dg %dg)Sets the information string on the titlebar. Available values:%frame (frame number)%fps (framerate)%exp (shutter speed)%ag (analogue gain)%dg (digital gain)%rg (red colour gain)%bg (blue colour gain)%focus (focus FoM value)%aelock (AE locked status)%lp (lens position, if known)%afstate (AF state, if supported)--width arg (=0)                      Set the output image width (0 = use default value)--height arg (=0)                     Set the output image height (0 = use default value)-t [ --timeout ] arg (=5000)          Time (in ms) for which program runs-o [ --output ] arg                   Set the output file name--post-process-file arg               Set the file name for configuring the post-processing--rawfull [=arg(=1)] (=0)             Force use of full resolution raw frames-n [ --nopreview ] [=arg(=1)] (=0)    Do not show a preview window-p [ --preview ] arg (=0,0,0,0)       Set the preview window dimensions, given as x,y,width,height e.g. 0,0,640,480-f [ --fullscreen ] [=arg(=1)] (=0)   Use a fullscreen preview window--qt-preview [=arg(=1)] (=0)          Use Qt-based preview window (WARNING: causes heavy CPU load, fullscreen notsupported)--hflip [=arg(=1)] (=0)               Request a horizontal flip transform--vflip [=arg(=1)] (=0)               Request a vertical flip transform--rotation arg (=0)                   Request an image rotation, 0 or 180--roi arg (=0,0,0,0)                  Set region of interest (digital zoom) e.g. 0.25,0.25,0.5,0.5--shutter arg (=0)                    Set a fixed shutter speed in microseconds--analoggain arg (=0)                 Set a fixed gain value (synonym for 'gain' option)--gain arg                            Set a fixed gain value--metering arg (=centre)              Set the metering mode (centre, spot, average, custom)--exposure arg (=normal)              Set the exposure mode (normal, sport)--ev arg (=0)                         Set the EV exposure compensation, where 0 = no change--awb arg (=auto)                     Set the AWB mode (auto, incandescent, tungsten, fluorescent, indoor, daylight,cloudy, custom)--awbgains arg (=0,0)                 Set explict red and blue gains (disable the automatic AWB algorithm)--flush [=arg(=1)] (=0)               Flush output data as soon as possible--wrap arg (=0)                       When writing multiple output files, reset the counter when it reaches thisnumber--brightness arg (=0)                 Adjust the brightness of the output images, in the range -1.0 to 1.0--contrast arg (=1)                   Adjust the contrast of the output image, where 1.0 = normal contrast--saturation arg (=1)                 Adjust the colour saturation of the output, where 1.0 = normal and 0.0 =greyscale--sharpness arg (=1)                  Adjust the sharpness of the output image, where 1.0 = normal sharpening--framerate arg (=-1)                 Set the fixed framerate for preview and video modes--denoise arg (=auto)                 Sets the Denoise operating mode: auto, off, cdn_off, cdn_fast, cdn_hq--viewfinder-width arg (=0)           Width of viewfinder frames from the camera (distinct from the preview windowsize--viewfinder-height arg (=0)          Height of viewfinder frames from the camera (distinct from the preview windowsize)--tuning-file arg (=-)                Name of camera tuning file to use, omit this option for libcamera defaultbehaviour--lores-width arg (=0)                Width of low resolution frames (use 0 to omit low resolution stream--lores-height arg (=0)               Height of low resolution frames (use 0 to omit low resolution stream--mode arg                            Camera mode as W:H:bit-depth:packing, where packing is P (packed) or U(unpacked)--viewfinder-mode arg                 Camera mode for preview as W:H:bit-depth:packing, where packing is P (packed)or U (unpacked)--buffer-count arg (=0)               Number of in-flight requests (and buffers) configured for video, raw, andstill.--viewfinder-buffer-count arg (=0)    Number of in-flight requests (and buffers) configured for preview window.--autofocus-mode arg (=default)       Control to set the mode of the AF (autofocus) algorithm.(manual, auto,continuous)--autofocus-range arg (=normal)       Set the range of focus distances that is scanned.(normal, macro, full)--autofocus-speed arg (=normal)       Control that determines whether the AF algorithm is to move the lens as quicklyas possible or more steadily.(normal, fast)--autofocus-window arg (=0,0,0,0)     Sets AfMetering to  AfMeteringWindows an set region used, e.g.0.25,0.25,0.5,0.5--lens-position arg                   Set the lens to a particular focus position, expressed as a reciprocal distance(0 moves the lens to infinity), or "default" for the hyperfocal distance--hdr [=arg(=1)] (=0)                 Enable (1) or disable (0) High Dynamic Range, where supported--metadata arg                        Save captured image metadata to a file or "-" for stdout--metadata-format arg (=json)         Format to save the metadata in, either txt or json (requires --metadata)-b [ --bitrate ] arg (=0)             Set the video bitrate for encoding, in bits/second (h264 only)--profile arg                         Set the encoding profile (h264 only)--level arg                           Set the encoding level (h264 only)-g [ --intra ] arg (=0)               Set the intra frame period (h264 only)--inline [=arg(=1)] (=0)              Force PPS/SPS header with every I frame (h264 only)--codec arg (=h264)                   Set the codec to use, either h264, mjpeg or yuv420--save-pts arg                        Save a timestamp file with this name-q [ --quality ] arg (=50)            Set the MJPEG quality parameter (mjpeg only)-l [ --listen ] [=arg(=1)] (=0)       Listen for an incoming client network connection before sending data to theclient-k [ --keypress ] [=arg(=1)] (=0)     Pause or resume video recording when ENTER pressed-s [ --signal ] [=arg(=1)] (=0)       Pause or resume video recording when signal received-i [ --initial ] arg (=record)        Use 'pause' to pause the recording at startup, otherwise 'record' (the default)--split [=arg(=1)] (=0)               Create a new output file every time recording is paused and then resumed--segment arg (=0)                    Break the recording into files of approximately this many milliseconds--circular [=arg(=4)] (=0)            Write output to a circular buffer of the given size (in MB) which is saved onexit--frames arg (=0)                     Run for the exact number of frames specified. This will override any timeoutset.

2.3.3 cvlc

cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264 这里需要仔细的阅读以下文档:

  • RTP (I): Intro to RTP and SDP
  • RTP (II): Streaming with FFmpeg

还不太熟悉这个命令,不过个人理解如下:

  • 输入输出:stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}'
  • H264编码::demux=h264
$ cvlc --help
VLC media player 3.0.20 Vetinari (revision 3.0.20-0-g6f0d0ab126b)
Usage: vlc [options] [stream] ...
You can specify multiple streams on the commandline.
They will be enqueued in the playlist.
The first item specified will be played first.Options-styles:--option  A global option that is set for the duration of the program.-option  A single letter version of a global --option.:option  An option that only applies to the stream directly before itand that overrides previous settings.Stream MRL syntax:[[access][/demux]://]URL[#[title][:chapter][-[title][:chapter]]][:option=value ...]Many of the global --options can also be used as MRL specific :options.Multiple :option=value pairs can be specified.URL syntax:file:///path/file              Plain media filehttp://host[:port]/file        HTTP URLftp://host[:port]/file         FTP URLmms://host[:port]/file         MMS URLscreen://                      Screen capturedvd://[device]                 DVD devicevcd://[device]                 VCD devicecdda://[device]                Audio CD deviceudp://[[<source address>]@[<bind address>][:<bind port>]]UDP stream sent by a streaming servervlc://pause:<seconds>          Pause the playlist for a certain timevlc://quit                     Special item to quit VLCcore program (core)Audio--audio, --no-audio        Enable audio(default enabled)--force-dolby-surround {0 (Auto), 1 (On), 2 (Off)}Force detection of Dolby Surround--audio-replay-gain-mode {none,track,album}Replay gain mode--audio-replay-gain-preamp <float>Replay preamp--audio-replay-gain-default <float>Default replay gain--audio-time-stretch, --no-audio-time-stretchEnable time stretching audio(default enabled)--audio-filter <string>    Audio filters--audio-visual {any,visual,glspectrum,none}Audio visualisationsVideo-f, --fullscreen, --no-fullscreenFullscreen video output(default disabled)--video-on-top, --no-video-on-topAlways on top(default disabled)--video-wallpaper, --no-video-wallpaperEnable wallpaper mode(default disabled)--video-title-show, --no-video-title-showShow media title on video(default enabled)--video-title-timeout <integer>Show video title for x milliseconds--video-title-position {0 (Centre), 1 (Left), 2 (Right), 4 (Top), 8 (Bottom), 5 (Top-Left), 6 (Top-Right), 9 (Bottom-Left), 10 (Bottom-Right)}Position of video title--mouse-hide-timeout <integer>Hide cursor and fullscreen controller after x millisecondsSnapshot:--snapshot-path <string>   Video snapshot directory (or filename)--snapshot-prefix <string> Video snapshot file prefix--snapshot-format {png,jpg,tiff}Video snapshot format--snapshot-preview, --no-snapshot-previewDisplay video snapshot preview(default enabled)--snapshot-sequential, --no-snapshot-sequentialUse sequential numbers instead of timestamps(default disabled)Window properties:--crop <string>            Video cropping--custom-crop-ratios <string>Custom crop ratios list--aspect-ratio <string>    Source aspect ratio--autoscale, --no-autoscaleVideo Auto Scaling(default enabled)--custom-aspect-ratios <string>Custom aspect ratios list--deinterlace {0 (Off), -1 (Automatic), 1 (On)}Deinterlace--deinterlace-mode {auto,discard,blend,mean,bob,linear,x,yadif,yadif2x,phosphor,ivtc}Deinterlace mode--video-filter <string>    Video filter module--video-splitter <string>  Video splitter moduleSubpicturesOn Screen Display:--spu, --no-spu            Enable sub-pictures(default enabled)--osd, --no-osd            On Screen Display(default enabled)Subtitles:--sub-file <string>        Use subtitle file--sub-autodetect-file, --no-sub-autodetect-fileAutodetect subtitle files(default enabled)--sub-text-scale <integer [10 .. 500]>Subtitles text scaling factorOverlays:--sub-source <string>      Subpictures source module--sub-filter <string>      Subpictures filter moduleTrack settings:--audio-language <string>  Audio language--sub-language <string>    Subtitle language--menu-language <string>   Menu language--preferred-resolution {-1 (Best available), 1080 (Full HD (1080p)), 720 (HD (720p)), 576 (Standard Definition (576 or 480 lines)), 360 (Low Definition (360 lines)), 240 (Very Low Definition (240 lines))}Preferred video resolutionPlayback control:--input-repeat <integer [0 .. 65535]>Input repetitions--input-fast-seek, --no-input-fast-seekFast seek(default disabled)--rate <float>             Playback speedDefault devices:--dvd <string>             DVD device--vcd <string>             VCD deviceAdvanced:--input-title-format <string>Change title according to current mediaInput--stream-filter <string>   Stream filter modulePlaylistPerformance options:-Z, --random, --no-random      Play files randomly forever(default disabled)-L, --loop, --no-loop          Repeat all(default disabled)-R, --repeat, --no-repeat      Repeat current item(default disabled)--play-and-exit, --no-play-and-exitPlay and exit(default disabled)--play-and-stop, --no-play-and-stopPlay and stop(default disabled)--start-paused, --no-start-pausedStart paused(default disabled)--playlist-autostart, --no-playlist-autostartAuto start(default enabled)--playlist-cork, --no-playlist-corkPause on audio communication(default enabled)--media-library, --no-media-libraryUse media library(default disabled)--playlist-tree, --no-playlist-treeDisplay playlist tree(default disabled)--open <string>            Default stream--auto-preparse, --no-auto-preparseAutomatically preparse items(default enabled)--preparse-timeout <integer>Preparsing timeout--metadata-network-access, --no-metadata-network-accessAllow metadata network access(default disabled)--recursive {none,collapse,expand}Subdirectory behaviour--ignore-filetypes <string>Ignored extensions--show-hiddenfiles, --no-show-hiddenfilesShow hidden files(default disabled)-v, --verbose <integer>        Verbosity (0,1,2)--pidfile <string>         Write process id to file--advanced, --no-advanced  Show advanced options(default disabled)--interact, --no-interact  Interface interaction(default enabled)-I, --intf <string>            Interface module--extraintf <string>       Extra interface modules--control <string>         Control interfacesHot keys--hotkeys-y-wheel-mode {-1 (Ignore), 0 (Volume control), 2 (Position control), 3 (Position control reversed)}Mouse wheel vertical axis control--hotkeys-x-wheel-mode {-1 (Ignore), 0 (Volume control), 2 (Position control), 3 (Position control reversed)}Mouse wheel horizontal axis control--global-key-toggle-fullscreen <string>Fullscreen--key-toggle-fullscreen <string>Fullscreen--global-key-leave-fullscreen <string>Exit fullscreen--key-leave-fullscreen <string>Exit fullscreen--global-key-play-pause <string>Play/Pause--key-play-pause <string>  Play/Pause--global-key-faster <string>Faster--key-faster <string>      Faster--global-key-slower <string>Slower--key-slower <string>      Slower--global-key-rate-normal <string>Normal rate--key-rate-normal <string> Normal rate--global-key-rate-faster-fine <string>Faster (fine)--key-rate-faster-fine <string>Faster (fine)--global-key-rate-slower-fine <string>Slower (fine)--key-rate-slower-fine <string>Slower (fine)--global-key-next <string> Next--key-next <string>        Next--global-key-prev <string> Previous--key-prev <string>        Previous--global-key-stop <string> Stop--key-stop <string>        Stop--global-key-jump-extrashort <string>Very short backwards jump--key-jump-extrashort <string>Very short backwards jump--global-key-jump+extrashort <string>Very short forward jump--key-jump+extrashort <string>Very short forward jump--global-key-jump-short <string>Short backwards jump--key-jump-short <string>  Short backwards jump--global-key-jump+short <string>Short forward jump--key-jump+short <string>  Short forward jump--global-key-jump-medium <string>Medium backwards jump--key-jump-medium <string> Medium backwards jump--global-key-jump+medium <string>Medium forward jump--key-jump+medium <string> Medium forward jump--global-key-jump-long <string>Long backwards jump--key-jump-long <string>   Long backwards jump--global-key-jump+long <string>Long forward jump--key-jump+long <string>   Long forward jump--global-key-frame-next <string>Next frame--key-frame-next <string>  Next frame--global-key-quit <string> Quit--key-quit <string>        Quit--global-key-vol-up <string>Volume up--key-vol-up <string>      Volume up--global-key-vol-down <string>Volume down--key-vol-down <string>    Volume down--global-key-vol-mute <string>Mute--key-vol-mute <string>    Mute--global-key-audio-track <string>Cycle audio track--key-audio-track <string> Cycle audio track--global-key-audiodevice-cycle <string>Cycle through audio devices--key-audiodevice-cycle <string>Cycle through audio devices--global-key-subtitle-revtrack <string>Cycle subtitle track in reverse order--key-subtitle-revtrack <string>Cycle subtitle track in reverse order--global-key-subtitle-track <string>Cycle subtitle track--key-subtitle-track <string>Cycle subtitle track--global-key-subtitle-toggle <string>Toggle subtitles--key-subtitle-toggle <string>Toggle subtitles--global-key-program-sid-next <string>Cycle next program Service ID--key-program-sid-next <string>Cycle next program Service ID--global-key-program-sid-prev <string>Cycle previous program Service ID--key-program-sid-prev <string>Cycle previous program Service ID--global-key-aspect-ratio <string>Cycle source aspect ratio--key-aspect-ratio <string>Cycle source aspect ratio--global-key-crop <string> Cycle video crop--key-crop <string>        Cycle video crop--global-key-toggle-autoscale <string>Toggle autoscaling--key-toggle-autoscale <string>Toggle autoscaling--global-key-incr-scalefactor <string>Increase scale factor--key-incr-scalefactor <string>Increase scale factor--global-key-decr-scalefactor <string>Decrease scale factor--key-decr-scalefactor <string>Decrease scale factor--global-key-deinterlace <string>Toggle deinterlacing--key-deinterlace <string> Toggle deinterlacing--global-key-deinterlace-mode <string>Cycle deinterlace modes--key-deinterlace-mode <string>Cycle deinterlace modes--global-key-intf-show <string>Show controller in fullscreen--key-intf-show <string>   Show controller in fullscreen--global-key-wallpaper <string>Toggle wallpaper mode in video output--key-wallpaper <string>   Toggle wallpaper mode in video output--global-key-random <string>Random--key-random <string>      Random--global-key-loop <string> Normal/Loop/Repeat--key-loop <string>        Normal/Loop/Repeat--global-key-zoom-quarter <string>1:4 Quarter--key-zoom-quarter <string>1:4 Quarter--global-key-zoom-half <string>1:2 Half--key-zoom-half <string>   1:2 Half--global-key-zoom-original <string>1:1 Original--key-zoom-original <string>1:1 Original--global-key-zoom-double <string>2:1 Double--key-zoom-double <string> 2:1 DoubleJump sizes:--extrashort-jump-size <integer>Very short jump length--short-jump-size <integer>Short jump length--medium-jump-size <integer>Medium jump length--long-jump-size <integer> Long jump length--bookmark1 <string>       Playlist bookmark 1--bookmark2 <string>       Playlist bookmark 2--bookmark3 <string>       Playlist bookmark 3--bookmark4 <string>       Playlist bookmark 4--bookmark5 <string>       Playlist bookmark 5--bookmark6 <string>       Playlist bookmark 6--bookmark7 <string>       Playlist bookmark 7--bookmark8 <string>       Playlist bookmark 8--bookmark9 <string>       Playlist bookmark 9--bookmark10 <string>      Playlist bookmark 10-h, --help, --no-help          print help for VLC (can be combined with --advanced and --help-verbose)(default disabled)-H, --full-help, --no-full-helpExhaustive help for VLC and its modules(default disabled)--longhelp, --no-longhelp  print help for VLC and all its modules (can be combined with --advanced and --help-verbose)(default disabled)--help-verbose, --no-help-verboseask for extra verbosity when displaying help(default disabled)-l, --list, --no-list          print a list of available modules(default disabled)--list-verbose, --no-list-verboseprint a list of available modules with extra detail(default disabled)-p, --module <string>          print help on a specific module (can be combined with --advanced and --help-verbose). Prefix the module name with = for strict matches.--ignore-config, --no-ignore-configno configuration option will be loaded nor saved to config file(default enabled)--reset-config, --no-reset-configreset the current config to the default values(default disabled)--reset-plugins-cache, --no-reset-plugins-cacheresets the current plugins cache(default disabled)--version, --no-version    print version information(default disabled)--config <string>          use alternate config fileNote: add --advanced to your command line to see advanced options.To get exhaustive help, use '-H'.

3. 实测

注:链接视频是一个合集,有Rpanion/libcamera_ivd等视频,可以点开来看下效果。

总的来说:Rpi3B+ OV5647 CSI摄像模组,在640x480 @ 30/50FPS下实时的效果还是可以的。目前该摄像头驱动好像并不支持720P,所以高清的时候,会很卡顿。

$ libcamera-vid --codec h264 --profile main --level 4 --framerate 30 --width 1920 --height 1080 -t 0 --inline -o - | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/stream1}' :demux=h264

  • OV5647_libcamera_cvlc_1920x1080x30FPS

OV5647-1920x1080x30FPS

4. 参考资料

【1】Raspbian安装云台
【2】Raspbian安装摄像头
【3】Raspbian镜像无头烧录

这篇关于Raspbian简易RTSP服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/711102

相关文章

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

java后端服务监控与告警:Prometheus与Grafana集成

Java后端服务监控与告警:Prometheus与Grafana集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代的微服务架构中,监控和告警是确保服务稳定性的关键组成部分。Prometheus和Grafana是两个强大的工具,它们可以集成在一起,为Java后端服务提供实时监控和可视化告警。 服务监控的重要性 服务监控可以帮助我们实时了解服务的健

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版