Merge branch 'bitrate-controls' into 'master'
Added stream bitrate controls See merge request openflexure/openflexure-microscope-server!105
This commit is contained in:
commit
6e1383d1c4
4 changed files with 49 additions and 16 deletions
|
|
@ -1,3 +1,10 @@
|
||||||
|
# [v2.9.1](https://gitlab.com/openflexure/openflexure-microscope-server/compare/v2.9.0...v2.9.1) (2020-12-07)
|
||||||
|
|
||||||
|
|
||||||
|
* Server: Added mjpeg bitrate to settings ([3e2f876](https://gitlab.com/openflexure/openflexure-microscope-server/commit/3e2f876))
|
||||||
|
* JS Client: Replaced MJPEG quality setting with MJPEG bitrate ([42e0dfd](https://gitlab.com/openflexure/openflexure-microscope-server/commit/42e0dfd))
|
||||||
|
|
||||||
|
|
||||||
# [v2.9.0](https://gitlab.com/openflexure/openflexure-microscope-server/compare/v2.8.0...v2.9.0) (2020-12-07)
|
# [v2.9.0](https://gitlab.com/openflexure/openflexure-microscope-server/compare/v2.8.0...v2.9.0) (2020-12-07)
|
||||||
|
|
||||||
## Developer changes
|
## Developer changes
|
||||||
|
|
|
||||||
|
|
@ -53,18 +53,19 @@
|
||||||
<h4>Image quality</h4>
|
<h4>Image quality</h4>
|
||||||
|
|
||||||
<div class="uk-child-width-1-2" uk-grid>
|
<div class="uk-child-width-1-2" uk-grid>
|
||||||
<div v-if="mjpeg_quality !== undefined">
|
<div v-if="mjpeg_bitrate !== undefined">
|
||||||
<label class="uk-form-label" for="form-stacked-text"
|
<label class="uk-form-label" for="form-stacked-text"
|
||||||
>Web stream quality (%)</label
|
>Web stream bitrate</label
|
||||||
>
|
>
|
||||||
<div class="uk-form-controls">
|
<select v-model="mjpeg_bitrate" class="uk-select uk-form-small">
|
||||||
<input
|
<option
|
||||||
v-model="mjpeg_quality"
|
v-for="option in bitrateOptions"
|
||||||
class="uk-input uk-form-small"
|
:key="option.value"
|
||||||
type="number"
|
:value="option.value"
|
||||||
step="1"
|
>
|
||||||
/>
|
{{ option.text }}
|
||||||
</div>
|
</option>
|
||||||
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="jpeg_quality !== undefined">
|
<div v-if="jpeg_quality !== undefined">
|
||||||
|
|
@ -81,6 +82,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<span
|
||||||
|
v-if="
|
||||||
|
mjpeg_bitrate !== undefined &&
|
||||||
|
mjpeg_bitrate < 17000000 &&
|
||||||
|
mjpeg_bitrate != -1
|
||||||
|
"
|
||||||
|
class="uk-text-danger uk-margin-top-small"
|
||||||
|
>This stream bitrate may impact fast autofocus performance</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
|
@ -123,8 +134,15 @@ export default {
|
||||||
analog_gain: undefined,
|
analog_gain: undefined,
|
||||||
digital_gain: undefined
|
digital_gain: undefined
|
||||||
},
|
},
|
||||||
mjpeg_quality: undefined,
|
mjpeg_bitrate: undefined,
|
||||||
jpeg_quality: undefined
|
jpeg_quality: undefined,
|
||||||
|
bitrateOptions: [
|
||||||
|
{ text: "Maximum", value: -1 },
|
||||||
|
{ text: "High", value: 25000000 },
|
||||||
|
{ text: "Normal", value: 17000000 },
|
||||||
|
{ text: "Low", value: 5000000 },
|
||||||
|
{ text: "Very low", value: 2500000 }
|
||||||
|
]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -145,7 +163,7 @@ export default {
|
||||||
.then(response => {
|
.then(response => {
|
||||||
const cameraSettings = response.data.camera;
|
const cameraSettings = response.data.camera;
|
||||||
// Get base camera settings
|
// Get base camera settings
|
||||||
this.mjpeg_quality = cameraSettings.mjpeg_quality;
|
this.mjpeg_bitrate = cameraSettings.mjpeg_bitrate;
|
||||||
this.jpeg_quality = cameraSettings.jpeg_quality;
|
this.jpeg_quality = cameraSettings.jpeg_quality;
|
||||||
// Get Pi Camera settings if they exist
|
// Get Pi Camera settings if they exist
|
||||||
if (cameraSettings.picamera) {
|
if (cameraSettings.picamera) {
|
||||||
|
|
@ -164,7 +182,7 @@ export default {
|
||||||
// make the numbers be strings... TypeScript would solve this...
|
// make the numbers be strings... TypeScript would solve this...
|
||||||
var payload = {
|
var payload = {
|
||||||
camera: {
|
camera: {
|
||||||
mjpeg_quality: parseInt(this.mjpeg_quality),
|
mjpeg_bitrate: parseInt(this.mjpeg_bitrate),
|
||||||
jpeg_quality: parseInt(this.jpeg_quality),
|
jpeg_quality: parseInt(this.jpeg_quality),
|
||||||
picamera: {
|
picamera: {
|
||||||
shutter_speed: parseFloat(this.picamera.shutter_speed),
|
shutter_speed: parseFloat(this.picamera.shutter_speed),
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,13 @@ class PiCameraStreamer(BaseCamera):
|
||||||
|
|
||||||
self.jpeg_quality: int = 100 #: int: JPEG quality
|
self.jpeg_quality: int = 100 #: int: JPEG quality
|
||||||
self.mjpeg_quality: int = 75 #: int: MJPEG quality
|
self.mjpeg_quality: int = 75 #: int: MJPEG quality
|
||||||
|
self.mjpeg_bitrate: int = -1 #: int: MJPEG quality
|
||||||
|
# Solid bitrate options:
|
||||||
|
# -1: Maximum
|
||||||
|
# 25000000: High
|
||||||
|
# 17000000: Normal
|
||||||
|
# 5000000: Low (may impact fast AF)
|
||||||
|
# 2500000: Very low (may impact fast AF)
|
||||||
|
|
||||||
# Start stream recording (and set resolution)
|
# Start stream recording (and set resolution)
|
||||||
self.start_stream()
|
self.start_stream()
|
||||||
|
|
@ -140,6 +147,7 @@ class PiCameraStreamer(BaseCamera):
|
||||||
"numpy_resolution": self.numpy_resolution,
|
"numpy_resolution": self.numpy_resolution,
|
||||||
"jpeg_quality": self.jpeg_quality,
|
"jpeg_quality": self.jpeg_quality,
|
||||||
"mjpeg_quality": self.mjpeg_quality,
|
"mjpeg_quality": self.mjpeg_quality,
|
||||||
|
"mjpeg_bitrate": self.mjpeg_bitrate,
|
||||||
"picamera": {},
|
"picamera": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -409,7 +417,7 @@ class PiCameraStreamer(BaseCamera):
|
||||||
self.stream,
|
self.stream,
|
||||||
format="mjpeg",
|
format="mjpeg",
|
||||||
quality=self.mjpeg_quality,
|
quality=self.mjpeg_quality,
|
||||||
bitrate=-1, # RWB: disable bitrate control
|
bitrate=self.mjpeg_bitrate, # RWB: disable bitrate control
|
||||||
# (bitrate control makes JPEG size less good as a focus
|
# (bitrate control makes JPEG size less good as a focus
|
||||||
# metric)
|
# metric)
|
||||||
splitter_port=1,
|
splitter_port=1,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ build-backend = "poetry.masonry.api"
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "openflexure-microscope-server"
|
name = "openflexure-microscope-server"
|
||||||
version = "2.9.0"
|
version = "2.9.1"
|
||||||
description = "Python module, and Flask-based web API, to run the OpenFlexure Microscope."
|
description = "Python module, and Flask-based web API, to run the OpenFlexure Microscope."
|
||||||
|
|
||||||
authors = [
|
authors = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue