I'm using the latest octopi build of the new camera stack from the Pi Imager on a Pi 3B+ with an ov5647-based Pi NoIR camera (with auto IR-cut). The camera worked immediately upon booting the new image using the default settings in libcamera.conf. The camera responds to changes in resolution and framerate requested in libcamera.conf. But, at this point, I've been unable to discover any means for reducing the Q factor of the video stream. This leaves me with a 1024x768, 24fps stream which consumes ~23mbps (way too much). As a point of reference, the current octopi build using the MJPG streamer when started with usb-option Q=10 in octopi.txt results in a 1024x768, 24fps stream which consumes ~8mbps. If Q is left at its' default (85?) on MJPG, the stream is 1024x768, 24 fps at ~23mbps. With the new camera stack build I've closely followed the camera-streamer configuration FAQ, just haven't yet succeeded in controlling the Q factor of new stack with this camera.
Below are the output of the webcam option endpoint & the current libcamera.conf:
No options passed.
Set: /option?name=value
CAMERA Properties:
- property: SensorSensitivity (00000009, type=5): 1.000000
- property: ScalerCropMaximum (00000008, type=7): (0, 0)/2592x1944
- property: ColorFilterArrangement (0000000a, type=3): 2
- property: PixelArrayActiveAreas (00000007, type=7): [ (16, 6)/2592x1944 ]
- property: PixelArraySize (00000005, type=8): 2592x1944
- property: Rotation (00000002, type=3): 0
- property: Location (00000001, type=3): 2
- property: UnitCellSize (00000004, type=8): 1400x1400
- property: Model (00000003, type=6): ov5647
CAMERA Options:
- available option: AeConstraintMode (00000004, type=3): [0..3]
- available option: Saturation (00000011, type=5): [0.000000..32.000000]
- available option: AeExposureMode (00000005, type=3): [0..3]
- available option: AwbMode (0000000d, type=3): [0..7]
- available option: Brightness (00000009, type=5): [-1.000000..1.000000]
- available option: AeEnable (00000001, type=1): [false..true]
- available option: AnalogueGain (00000008, type=5): [1.000000..63.937500]
- available option: ExposureTime (00000007, type=3): [92..760636]
- available option: ScalerCrop (00000016, type=7): [(0, 0)/128x128..(0, 0)/2592x1944]
- available option: AeMeteringMode (00000003, type=3): [0..3]
- available option: AwbEnable (0000000c, type=1): [false..true]
- available option: ColourCorrectionMatrix (00000015, type=5): [-16.000000..16.000000]
- available option: NoiseReductionMode (00000027, type=3): [0..4]
- available option: ColourGains (0000000f, type=5): [0.000000..32.000000]
- available option: ExposureValue (00000006, type=5): [-8.000000..8.000000]
- available option: Sharpness (00000013, type=5): [0.000000..16.000000]
- available option: FrameDurationLimits (00000019, type=4): [23123..760729]
- available option: Contrast (0000000a, type=5): [0.000000..32.000000]
SNAPSHOT Options:
- available option: compressionquality (009d0903, type=1): [1..100]
VIDEO Options:
- available option: videobframes (009909ca, type=1): [0..0]
- available option: videogopsize (009909cb, type=1): [0..2147483647]
- available option: videobitratemode (009909ce, type=3): [0..1]
0: Variable Bitrate
1: Constant Bitrate
- available option: videobitrate (009909cf, type=1): [25000..25000000]
- available option: sequenceheadermode (009909d8, type=3): [0..1]
0: Separate Buffer
1: Joined With 1st Frame
- available option: repeatsequenceheader (009909e2, type=2): [0..1]
- available option: forcekeyframe (009909e5, type=4): button
- available option: h264minimumqpvalue (00990a61, type=1): [0..51]
- available option: h264maximumqpvalue (00990a62, type=1): [0..51]
- available option: h264iframeperiod (00990a66, type=1): [0..2147483647]
- available option: h264level (00990a67, type=3): [0..15]
0: 1
1: 1b
2: 1.1
3: 1.2
4: 1.3
5: 2
6: 2.1
7: 2.2
8: 3
9: 3.1
10: 3.2
11: 4
12: 4.1
13: 4.2
14: 5
15: 5.1
- available option: h264profile (00990a6b, type=3): [0..4]
0: Baseline
1: Constrained Baseline
2: Main
4: High
======================
### Options for libcamera based cameras (PiCam, Arducam, ...)
# The port on which the webcam server for the camera should listen on. If you have only
# one camera, leave at 8080. If you have more, change to 8081, 8082, etc. The primary
# camera will be considered the one with 8080.
PORT=8080
# The resolution to request on the camera sensor. Defaults to 1280x720.
WIDTH=1024
HEIGHT=768
# The height to use for the video stream. Defaults to 720.
VIDEO_HEIGHT=768
# The height to use for the snapshots. Defaults to 1080.
SNAPSHOT_HEIGHT=1024
# The framerate to set on the camera. Defaults to 15fps.
FRAMERATE=24
# Additional options. By default enables continuous auto focus (if possible).
OPTIONS='--camera-video.options="videobitratemode=0" --camera-video.options="videobitrate=25000"'
What I hoped to do with the two options above was to simply enable VBR compression at the lowest possible bitrate as a starting point for tuning the stream, but regardless of entered value, the stream never goes below ~23mbps. Even tested '--camera-stream.options="compressionquality=10"' (without success) even though there are no "STREAM options" reported in the enumerated return from the option endpoint.
Any idea what the problem is? Am I entering the options correctly? I have this build on its' own sdcard so I can easily swap between builds & test any changes you might recommend.
Thanks for a wonderful product (both Octoprint & Octopi!),
Kevin