Not all cameras expose all controls via UVC. The C270 exposes fewer than the C525 or C615, which in turn expose fewer than the C920 or C930. It's possible that the JPEG quality is fixed on the C270 (or the version of firmware yours has) or that the artifacts are noise or other capture artifacts (light level, contrast, lens, IR or UV, quirks of your particular die, etc.) and not compression artifacts.
If you hadn't tried such a large range, I'd suggest it was also possible that you are asking it for the same level of compression it's already doing, due to binning (for instance, a camera may only have 3 quality levels and both the default value and the one you request may equate to the same level of compression).
It depends on your camera. If your camera exposes exposure settings via UVC, then you should be able to change them, though mjpeg-streamer only exposes those for input_raspi.so, so you'd need to set it via another UVC consumer.
How do I get my Logitech C170 ! 1280x720 (camera_usb_options="-r 1280x720 -f 15") to actually display and save in it's correct aspect ratio? It is only displaying and saving 1024/768. Do you need a log file?
Thank you.
Octopi.txt:
### Configure which camera to use
#
# Available options are:
# - auto: tries first usb webcam, if that's not available tries raspi cam
# - usb: only tries usb webcam
# - raspi: only tries raspi cam
#
# Defaults to auto
#
camera="usb"
### Additional options to supply to MJPG Streamer for the USB camera
#
# See https://github.com/foosel/OctoPrint/wiki/MJPG-Streamer-configuration
# for available options
#
# Defaults to a resolution of 640x480 px and a framerate of 10 fps
#
camera_usb_options="-r 1280x720 -f 15"
### Additional webcam devices known to cause problems with -f
#
# Apparently there a some devices out there that with the current
# mjpg_streamer release do not support the -f parameter (for specifying
# the capturing framerate) and will just refuse to output an image if it
# is supplied.
#
# The webcam daemon will detect those devices by their USB Vendor and Product
# ID and remove the -f parameter from the options provided to mjpg_streamer.
#
# By default, this is done for the following devices:
# Logitech C170 (046d:082b)
# GEMBIRD (1908:2310)
# Genius F100 (0458:708c)
# Cubeternet GL-UPC822 UVC WebCam (1e4e:0102)
#
# Using the following option it is possible to add additional devices. If
# your webcam happens to show above symptoms, try determining your cam's
# vendor and product id via lsusb, activating the line below by removing # and
# adding it, e.g. for two broken cameras "aabb:ccdd" and "aabb:eeff"
#
# additional_brokenfps_usb_devices=("aabb:ccdd" "aabb:eeff")
#
# If this fixes your problem, please report it back so we can include the device
# out of the box: https://github.com/guysoft/OctoPi/issues
#
#additional_brokenfps_usb_devices=()
### Additional options to supply to MJPG Streamer for the RasPi Cam
#
# See https://github.com/foosel/OctoPrint/wiki/MJPG-Streamer-configuration
# for available options
#
# Defaults to 10fps
#
#camera_raspi_options="-fps 10"
### Configuration of camera HTTP output
#
# Usually you should NOT need to change this at all! Only touch if you
# know what you are doing and what the parameters mean.
#
# Below settings are used in the mjpg-streamer call like this:
#
# -o "output_http.so -w $camera_http_webroot $camera_http_options"
#
# Current working directory is the mjpg-streamer base directory.
#
#camera_http_webroot="./www-octopi"
#camera_http_options="-n"
@Space_Engineer I remember the C170 has an issue with the -f parameter (the comment further down also states this). So definitely get rid of that (the webcam server script should strip it, but maybe that isn't working properly here for some reason).
And the answer to "do you need a log file" is always "yes".
@geekkid, I believe you are using Octolapse, are you not? If so, take a look at this guide for getting custom image preferences working for mjpegstreamer. Pay close attention to the octopi.txt modifications that are needed as well as the security implications of making the change.
You could also use the 'Camera Initialization Script' to set the parameters via script, but that's probably overkill.
I am but my pi isn't running ocotpi but instead raspbian that I have installed octoprint on top of. I guess it it just a case of manually adjusting the exposure parameter of mjpg-streamer? I was hoping for a way to get the value of the autoexposure and then keep it ideally. Does mjpg-streaner expose the current exposure in any way?
This is probably the wrong thread and forum but is there anyway of having different resolutions for live stream and capture? I'm not to bothered about the live stream not looking too good and would rather have a low resolution and higher frame rate and my internet not too affected whereas when captures are required for octolapse I would rather have a high resolution image.
If you're running the default mjpegstreamer install control.htm should already be enabled. You can check it like so:
http://{ip address of pi}/webcam/control.htm
If a page loads you should be good to go as far as getting the custom image preferences working.
I'm not sure if it's possible to retrieve the current 'exposure' setting, but you definitely can change it. There are several ways of doing it, but Octolapse uses an http request sent to the mjpegstreamer's control.htm page. There are other ways of setting the exposure, however.
Regarding using a different resolution for capture/streaming, I don't think this is possible, but will look into it a bit when I have some time. The still images are captured from the camera stream, I believe. The most straightforward way to accomplish what you are trying to do would be to use two cameras and set one to a lower resolution. This solution can cause bandwidth and cpu utilization issues depending on a lot of variables (pi type, resolution, internal camera compression availability, etc...). However, I have not tested this, so perhaps it will work better if you're not actually streaming the higher res camera to any browsers.
I'm going to do a multi-stream tutorial soon, and will try to test cpu utilization also. The BEST solution would be to use a separate pi as a webcam server, and I'll try to include this option in my tutorial.
i add this line to my /boot/octopi.txt
camera_raspi_options="-x 1920 -y 1080 -fps 20 -quality 100 -ex auto -awb auto"
print a stl, but is always 640x480, i have a raspicam 1080p
whats wrong?
how can i test without always start print?
ok , solved:
camera="auto" dont work, force camera="raspi"
service webcamd restart
service webcamd status Show actual parameter http://ip:8080 show actual size image
I can get to http://{my octopi address}/webcam/control.htm, but when I select "Enable And Apply Preferences Before Print", an error (Unable To Enable Custom Preferences) pops up. What do I do next?
I posted the header of the message. Iβll post the body when I get home. The camera is an HXSJ S70; a cheap HD webcam from Amazon. Control.htm exposes a bunch of controls, including focus and exposure.
mjpegstreamer-control-error: The server denied access to the MJPG-Streamer control.html for the 'Default Webcam' camera profile. Please see this link to correct this error., or disable 'Custom Image Preferences'.
Note that the error message says "control.html", though the actual page is "control.htm"