mirror of https://github.com/OpenIPC/wiki.git
192 lines
6.1 KiB
Markdown
192 lines
6.1 KiB
Markdown
# OpenIPC Wiki
|
|
[Table of Content](../README.md)
|
|
|
|
Majestic Streamer
|
|
-----------------
|
|
|
|
### Preamble
|
|
|
|
Majestic is a video streaming application, the heart of our firmware (in
|
|
relation to camera/video surveillance functionality). Majestic is configurable
|
|
via /etc/majestic.yaml file, and has many features/services enabled by default.
|
|
Unneeded options can be switched off for better security and performance. See /etc/majestic.full for configuration options.
|
|
|
|
### Control signals
|
|
|
|
```
|
|
-HUP restart Majestic (Except Ingenic T21).
|
|
-SIGUSR1 fast reload (Sigmastar only).
|
|
-SIGUSR2 SDK Shutdown (For all platforms).
|
|
```
|
|
|
|
### Camera related URLs in firmware
|
|
|
|
Majestic supports multiple audio, video and still image formats, and more.
|
|
You can find the full list of available endpoints on [this page](https://openipc.org/majestic-endpoints).
|
|
|
|
The long JPEG control parameter did not fit into the example on the site and we publish it here:
|
|
|
|
`/image.jpg?width=640&height=360&qfactor=73&color2gray=1`
|
|
|
|
### Changing parameters via cli
|
|
|
|
At the moment it is possible to change parameters in the configuration file via the CLI utility.
|
|
|
|
This allows parameters to be changed with a single line in pseudo-dynamic mode on some platforms
|
|
simply by forcing a re-read of the configuration file.
|
|
```
|
|
cli -s .video0.codec h264 ; cli -s .video0.fps 10 ; killall -HUP majestic
|
|
```
|
|
|
|
### Experimental Control Features (not yet described in endpoints)
|
|
|
|
```
|
|
/metrics/isp
|
|
/metrics/venc
|
|
/metrics/motion
|
|
```
|
|
```
|
|
/night/ircut
|
|
/night/light
|
|
```
|
|
|
|
|
|
### Auto day/night detection
|
|
|
|
If these variables are used, it is possible to replace the used sandbox scripts.
|
|
Works only for simple day/night schemes with minimal configuration and in the absence of mentions of irSensorPin in the majestic.yaml configuration file.
|
|
If the light sensor gpio is set, it will use the default mode.
|
|
|
|
The settings work like this:
|
|
```day < [minThreshold] | hysteresis | [maxThreshold] < night```
|
|
|
|
If the sensor gain is 1024 on a bright day the minThreshold could be set to 2000,
|
|
if the sensor gain is 32000 on a dark night the maxThreshold could be set to 10000.
|
|
|
|
```
|
|
cli -s .nightMode.minThreshold 10
|
|
cli -s .nightMode.maxThreshold 50
|
|
```
|
|
|
|
The experiments continue...
|
|
|
|
|
|
### Motion detection
|
|
|
|
Motion detect is supported for Hisilion/Goke, Ingenic and Sigmastar.
|
|
When a motion event is detected, `majestic` invokes a predefined script `/usr/sbin/motion.sh` with a parameter specifying the object count:
|
|
|
|
```
|
|
/usr/sbin/motion.sh [count]
|
|
```
|
|
|
|
Enable motion detection in `majestic` configuration:
|
|
|
|
```
|
|
cli -s .motionDetect.enabled true
|
|
cli -s .motionDetect.debug true
|
|
```
|
|
|
|
Reboot the camera and restart `majestic` in the foreground:
|
|
|
|
```
|
|
killall majestic; sleep 3; majestic
|
|
```
|
|
|
|
You should see the script running after motion detection events:
|
|
|
|
```
|
|
20:37:02 <SED_IVE_DETCTOR> [ motion] motion_update@155 Motion detected: [1163x0] -> [690x475]
|
|
20:37:02 <SED_IVE_DETCTOR> [ tools] motion_event@615 Execute motion script: /usr/sbin/motion.sh
|
|
```
|
|
|
|
### Broadcasts using RTMP
|
|
|
|
To instantly launch a YouTube broadcast, run these commands in the console:
|
|
```
|
|
cli -s .video0.codec h264
|
|
cli -s .audio.enabled true
|
|
cli -s .outgoing.enabled true
|
|
cli -s .outgoing.server rtmp://a.rtmp.youtube.com/live2/you-key-here
|
|
reboot
|
|
```
|
|
|
|
Examples of other addresses for different services:
|
|
- YouTube
|
|
- rtmp://a.rtmp.youtube.com/live2/---KEY---
|
|
- Telegram
|
|
- rtmps://dc4-1.rtmp.t.me/s/---KEY---
|
|
- RuTube
|
|
- rtmp://upload.rutube.ru/live_push/---KEY---
|
|
- OK and VK
|
|
- rtmp://ovsu.mycdn.me/input/---KEY---
|
|
|
|
We ask that you add information about other popular services here, thank you.
|
|
|
|
### ROI
|
|
|
|
Detection zones of two types:
|
|
|
|
`motionDetect.roi: 1854x1304x216x606,1586x1540x482x622`
|
|
|
|
`motionDetect.skipIn: 960x540x1920x1080`
|
|
|
|
**roi** - region of interest, when we specify one or more regions whose movements we are interested in.
|
|
|
|
**skipIn** - on the contrary, if we are interested in movements on the whole screen, except for some areas (for example, there is a tree in the frame, which is swaying in the wind).
|
|
|
|
Coordinate format is the same as in osd.privacyMasks: x,y of the top left point, length and width in pixels.
|
|
|
|
### How to convert YUV image to a more common image format
|
|
|
|
Use `convert` command from ImageMagick software. Run it like this:
|
|
```
|
|
convert -verbose -sampling-factor 4:2:0 -size 1920x1080 -depth 8 image.yuv image.png
|
|
```
|
|
where `1920x1080` is the picture resolution of video0, and `.png` is the target
|
|
image format.
|
|
|
|
### How to play audio stream
|
|
|
|
Use [ffplay][ffplay] utility from [ffmpeg][ffmpeg] package.
|
|
```
|
|
ffplay -ar 48000 -ac 1 -f s16le http://192.168.1.10/audio.pcm
|
|
ffplay -ar 48000 -ac 1 -f alaw http://192.168.1.10/audio.alaw
|
|
ffplay -ar 48000 -ac 1 -f mulaw http://192.168.1.10/audio.ulaw
|
|
ffplay -ar 8000 -ac 1 -f alaw http://192.168.1.10/audio.g711a
|
|
```
|
|
|
|
### How to create an audio file to play on camera's speaker over network
|
|
|
|
Using [sox][sox] program convert any source audio file to [PCM][pcm] 8kbps audio:
|
|
```
|
|
sox speech.mp3 -t raw -r 8000 -e signed -b 16 -c 1 test.pcm
|
|
```
|
|
|
|
### How to play audio file on camera's speaker over network
|
|
|
|
```
|
|
cat test.pcm | curl -v -u user:password -H "Content-Type: application/json" -X POST --data-binary @- http://192.168.1.10/play_audio
|
|
```
|
|
|
|
|
|
[aac]: https://en.wikipedia.org/wiki/Advanced_Audio_Coding
|
|
[alaw]: https://en.wikipedia.org/wiki/A-law_algorithm
|
|
[dng]: https://en.wikipedia.org/wiki/Digital_Negative
|
|
[g711]: https://en.wikipedia.org/wiki/G.711
|
|
[heif]: https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format
|
|
[hls]: https://en.wikipedia.org/wiki/HTTP_Live_Streaming
|
|
[jpeg]: https://en.wikipedia.org/wiki/JPEG
|
|
[mjpeg]: https://en.wikipedia.org/wiki/Motion_JPEG
|
|
[mp3]: https://en.wikipedia.org/wiki/MP3
|
|
[mp4]: https://en.wikipedia.org/wiki/MPEG-4_Part_14
|
|
[opus]: https://en.wikipedia.org/wiki/Opus_(audio_format)
|
|
[pcm]: https://en.wikipedia.org/wiki/Pulse-code_modulation
|
|
[raw]: https://en.wikipedia.org/wiki/Raw_image_format
|
|
[rtsp]: https://en.wikipedia.org/wiki/RTSP
|
|
[ulaw]: https://en.wikipedia.org/wiki/%CE%9C-law_algorithm
|
|
[yuv]: https://en.wikipedia.org/wiki/YUV
|
|
[ffplay]: https://ffmpeg.org/ffplay.html
|
|
[ffmpeg]: https://ffmpeg.org/
|
|
[sox]: https://en.wikipedia.org/wiki/SoX
|