Temat: MJPG-streamer kilka kamer

Witam

Po próbie konfiguracji kilku kamer w motion wracam do MJPG-streamer. W motion nie potrafię włączyć kilku kamer. Nie znalazłem też poradnika jak to zrobić

W MJPG-streamer udało mi się podłączyć 2 kamery które działają bez problemu. W motion strasznie obraz był przycinany. Tu działa jak należy.

Obecnie przy próbie podłączenia trzeciej kamery nie działa ona po prostu i zastanawiam się gdzie mogę mieć złe ustawienia.

Konfiguracja init.d

mjpg-streamer

#!/bin/sh /etc/rc.common
# Copyright (C) 2009-2014 OpenWrt.org

START=90
STOP=10

USE_PROCD=1
PROG=/usr/bin/mjpg_streamer

error() {
    echo "${initscript}:" "$@" 1>&2
}

start_instance() {
    local s="$1"

    config_get_bool enabled "$1" 'enabled' 0
    [ $enabled -eq 0 ] && return

    config_get input "$s" 'input'
    if [ -z "$input" ]; then
        error "in section '$s' option input is missing"
        return 1
    fi

    config_get output "$s" 'output'
    if [ -z "$output" ]; then
        error "in section '$s' option output is missing"
        return 1
    fi

    local input_arg
    if [ "x$input" = 'xuvc' ]; then
        input_arg="input_uvc.so"

        config_get device "$s" 'device'
        if [ ! -c "$device" ]; then
            error "device '$device' does not exist"
            return 1
        fi
        input_arg="${input_arg} --device $device"

        config_get fps "$s" 'fps'
        [ -n "$fps" ] && input_arg="${input_arg} --fps $fps"

        config_get_bool yuv "$s" 'yuv' 0
        if [ $yuv -ne 0 ]; then
            input_arg="${input_arg} --yuv"
            config_get quality "$s" 'quality'
            [ -n "$quality" ] && input_arg="${input_arg} --quality $quality"
        fi

        config_get resolution "$s" 'resolution'
        [ -n "$resolution" ] && input_arg="${input_arg} --resolution $resolution"

        config_get led "$s" 'led'
        [ -n "$led" ] && input_arg="${input_arg} --led $led"
    fi

    if [ -z "$input_arg" ]; then
        error "unsuported input option '$input' in section '$s'"
        return 1
    fi

    local output_arg
    if [ "x$output" = 'xhttp' ]; then
        output_arg="output_http.so"

        config_get port "$s" 'port'
        [ -n "$port" ] && output_arg="${output_arg} --port $port"

        config_get listen_ip "$s" 'listen_ip'
        [ -n "$listen_ip" ] && output_arg="${output_arg} --listen $listen_ip"

        config_get www "$s" 'www'
        [ -n "$www" ] && output_arg="${output_arg} --www $www"

        config_get username "$s" 'username'
        config_get password "$s" 'password'
        [ -n "$username" ] && [ -n "$password" ] && output_arg="${output_arg} --credentials $username:$password"
    fi

    if [ "x$output" = 'xfile' ]; then
        output_arg="output_file.so"

        config_get folder "$s" 'folder'
        [ -n "$folder" ] && output_arg="${output_arg} --folder $folder"

        config_get delay "$s" 'delay'
        [ -n "$delay" ] && output_arg="${output_arg} --delay $delay"

        config_get link "$s" 'link'
        [ -n "$link" ] && output_arg="${output_arg} --link $link"

        config_get ringbuffer "$s" 'ringbuffer'
        [ -n "$ringbuffer" ] && output_arg="${output_arg} --size $ringbuffer"

        config_get exceed "$s" 'exceed'
        [ -n "$exceed" ] && output_arg="${output_arg} --exceed $exceed"

        config_get command "$s" 'command'
        [ -n "$command" ] && output_arg="${output_arg} --command $command"

    fi

    if [ -z "$output_arg" ]; then
        error "unsuported output option '$output' in section '$s'"
        return 1
    fi

    procd_open_instance
    procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg"
    [ "x$output" = 'xhttp' ] && procd_add_mdns "http" "tcp" "$port" "daemon=mjpg-streamer"
    procd_close_instance
}

start_service() {
    config_load 'mjpg-streamer'
    config_foreach start_instance 'mjpg-streamer'
}

service_triggers() {
    procd_add_reload_trigger 'mjpg-streamer'
}

mjpg-streamer2

#!/bin/sh /etc/rc.common
# Copyright (C) 2009-2014 OpenWrt.org

START=90
STOP=10

USE_PROCD=1
PROG=/usr/bin/mjpg_streamer

error() {
    echo "${initscript}:" "$@" 1>&2
}

start_instance() {
    local s="$1"

    config_get_bool enabled "$1" 'enabled' 0
    [ $enabled -eq 0 ] && return

    config_get input "$s" 'input'
    if [ -z "$input" ]; then
        error "in section '$s' option input is missing"
        return 1
    fi

    config_get output "$s" 'output'
    if [ -z "$output" ]; then
        error "in section '$s' option output is missing"
        return 1
    fi

    local input_arg
    if [ "x$input" = 'xuvc' ]; then
        input_arg="input_uvc.so"

        device2=/dev/video1
        input_arg="${input_arg} --device $device2"

        config_get fps "$s" 'fps'
        [ -n "$fps" ] && input_arg="${input_arg} --fps $fps"

        config_get_bool yuv "$s" 'yuv' 0
        if [ $yuv -ne 0 ]; then
            input_arg="${input_arg} --yuv"
            config_get quality "$s" 'quality'
            [ -n "$quality" ] && input_arg="${input_arg} --quality $quality"
        fi

        config_get resolution "$s" 'resolution'
        [ -n "$resolution" ] && input_arg="${input_arg} --resolution $resolution"

        config_get led "$s" 'led'
        [ -n "$led" ] && input_arg="${input_arg} --led $led"
    fi

    if [ -z "$input_arg" ]; then
        error "unsuported input option '$input' in section '$s'"
        return 1
    fi

    local output_arg
    if [ "x$output" = 'xhttp' ]; then
        output_arg="output_http.so"

        port2=9091
        [ -n "$port2" ] && output_arg="${output_arg} --port $port2"

        config_get listen_ip "$s" 'listen_ip'
        [ -n "$listen_ip" ] && output_arg="${output_arg} --listen $listen_ip"

        config_get www "$s" 'www'
        [ -n "$www" ] && output_arg="${output_arg} --www $www"

        config_get username "$s" 'username'
        config_get password "$s" 'password'
        [ -n "$username" ] && [ -n "$password" ] && output_arg="${output_arg} --credentials $username:$password"
    fi

    if [ "x$output" = 'xfile' ]; then
        output_arg="output_file.so"

        config_get folder "$s" 'folder'
        [ -n "$folder" ] && output_arg="${output_arg} --folder $folder"

        config_get delay "$s" 'delay'
        [ -n "$delay" ] && output_arg="${output_arg} --delay $delay"

        config_get link "$s" 'link'
        [ -n "$link" ] && output_arg="${output_arg} --link $link"

        config_get ringbuffer "$s" 'ringbuffer'
        [ -n "$ringbuffer" ] && output_arg="${output_arg} --size $ringbuffer"

        config_get exceed "$s" 'exceed'
        [ -n "$exceed" ] && output_arg="${output_arg} --exceed $exceed"

        config_get command "$s" 'command'
        [ -n "$command" ] && output_arg="${output_arg} --command $command"

    fi

    if [ -z "$output_arg" ]; then
        error "unsuported output option '$output' in section '$s'"
        return 1
    fi

    procd_open_instance
    procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg"
    [ "x$output" = 'xhttp' ] && procd_add_mdns "http" "tcp" "$port" "daemon=mjpg-streamer"
    procd_close_instance
}

start_service() {
    config_load 'mjpg-streamer'
    config_foreach start_instance 'mjpg-streamer'
}

service_triggers() {
    procd_add_reload_trigger 'mjpg-streamer'
}

mjpg-streamer3

#!/bin/sh /etc/rc.common
# Copyright (C) 2009-2014 OpenWrt.org

START=90
STOP=10

USE_PROCD=1
PROG=/usr/bin/mjpg_streamer

error() {
    echo "${initscript}:" "$@" 1>&2
}

start_instance() {
    local s="$1"

    config_get_bool enabled "$1" 'enabled' 0
    [ $enabled -eq 0 ] && return

    config_get input "$s" 'input'
    if [ -z "$input" ]; then
        error "in section '$s' option input is missing"
        return 1
    fi

    config_get output "$s" 'output'
    if [ -z "$output" ]; then
        error "in section '$s' option output is missing"
        return 1
    fi

    local input_arg
    if [ "x$input" = 'xuvc' ]; then
        input_arg="input_uvc.so"

        device3=/dev/video2
        input_arg="${input_arg} --device $device3"

        config_get fps "$s" 'fps'
        [ -n "$fps" ] && input_arg="${input_arg} --fps $fps"

        config_get_bool yuv "$s" 'yuv' 0
        if [ $yuv -ne 0 ]; then
            input_arg="${input_arg} --yuv"
            config_get quality "$s" 'quality'
            [ -n "$quality" ] && input_arg="${input_arg} --quality $quality"
        fi

        config_get resolution "$s" 'resolution'
        [ -n "$resolution" ] && input_arg="${input_arg} --resolution $resolution"

        config_get led "$s" 'led'
        [ -n "$led" ] && input_arg="${input_arg} --led $led"
    fi

    if [ -z "$input_arg" ]; then
        error "unsuported input option '$input' in section '$s'"
        return 1
    fi

    local output_arg
    if [ "x$output" = 'xhttp' ]; then
        output_arg="output_http.so"

        port3=9092
        [ -n "$port3" ] && output_arg="${output_arg} --port $port3"

        config_get listen_ip "$s" 'listen_ip'
        [ -n "$listen_ip" ] && output_arg="${output_arg} --listen $listen_ip"

        config_get www "$s" 'www'
        [ -n "$www" ] && output_arg="${output_arg} --www $www"

        config_get username "$s" 'username'
        config_get password "$s" 'password'
        [ -n "$username" ] && [ -n "$password" ] && output_arg="${output_arg} --credentials $username:$password"
    fi

    if [ "x$output" = 'xfile' ]; then
        output_arg="output_file.so"

        config_get folder "$s" 'folder'
        [ -n "$folder" ] && output_arg="${output_arg} --folder $folder"

        config_get delay "$s" 'delay'
        [ -n "$delay" ] && output_arg="${output_arg} --delay $delay"

        config_get link "$s" 'link'
        [ -n "$link" ] && output_arg="${output_arg} --link $link"

        config_get ringbuffer "$s" 'ringbuffer'
        [ -n "$ringbuffer" ] && output_arg="${output_arg} --size $ringbuffer"

        config_get exceed "$s" 'exceed'
        [ -n "$exceed" ] && output_arg="${output_arg} --exceed $exceed"

        config_get command "$s" 'command'
        [ -n "$command" ] && output_arg="${output_arg} --command $command"

    fi

    if [ -z "$output_arg" ]; then
        error "unsuported output option '$output' in section '$s'"
        return 1
    fi

    procd_open_instance
    procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg"
    [ "x$output" = 'xhttp' ] && procd_add_mdns "http" "tcp" "$port" "daemon=mjpg-streamer"
    procd_close_instance
}

start_service() {
    config_load 'mjpg-streamer'
    config_foreach start_instance 'mjpg-streamer'
}

service_triggers() {
    procd_add_reload_trigger 'mjpg-streamer'
}

Konfiguracja config

mjpg-streamer

config mjpg-streamer 'core'
    option quality '80'
    option www '/www/webcam'
    option port '9090'
    option led 'blink'
    option enable_auth '1'
    option username 'xxx'
    option password 'xxx'
    option device '/dev/video0'
    option resolution '1280x720'
    option fps '10'
    option enabled '1'
    option input 'uvc'
    option output 'http'

mjpg-streamer2

config mjpg-streamer 'core'
    option quality '80'
    option www '/www/webcam'
    option port '9091'
    option led 'blink'
    option enable_auth '1'
    option username 'xxx'
    option password 'xxx'
    option device '/dev/video1'
    option resolution '1280x720'
    option fps '10'
    option enabled '1'
    option input 'uvc'
    option output 'http'

mjpg-streamer3

config mjpg-streamer 'core'
    option quality '80'
    option www '/www/webcam'
    option port '9092'
    option led 'blink'
    option enable_auth '1'
    option username 'xxx'
    option password 'xxx'
    option device '/dev/video2'
    option resolution '1280x720'
    option fps '10'
    option enabled '1'
    option input 'uvc'
    option output 'http'

2

Odp: MJPG-streamer kilka kamer

Masz kamery uvc które moga zabrać cały bandwidth na usb. Mimo że sama nie wykorzystuje całej przepustowości usb. Oby to nie było właśnie to.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: MJPG-streamer kilka kamer

Mówi się trudno. W sumie 2 mi wystarczą do podglądu.

https://youtu.be/HBor3HCnQMs

4

Odp: MJPG-streamer kilka kamer

Czy istnieje możliwość podglądu z dwóch kamer na jednej stronie www? Jeden obraz pod drugim.

5

Odp: MJPG-streamer kilka kamer

Zrób sobie html i osadź na nim dwa iframe z obrazem z kamer? Powinno działać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

6

Odp: MJPG-streamer kilka kamer

Dokładnie tak, działa smile Jeszcze tylko muszę to ładnie ustawić smile dzięki

7

Odp: MJPG-streamer kilka kamer

Czemu tylko 10 fps? mjpg-streamer mało obciąża router i myślę że nawet 30 fps by ładnie działało (przynajmniej u mnie się sprawdziło).

8 (edytowany przez mar_w 2020-02-16 04:06:59)

Odp: MJPG-streamer kilka kamer

9tysiecy napisał/a:

Czemu tylko 10 fps? mjpg-streamer mało obciąża router i myślę że nawet 30 fps by ładnie działało (przynajmniej u mnie się sprawdziło).

mało obciąża?
A jakie parametry zaproponujesz dla mnie (kamera Esperanza na Xiaomi Miwifi Mini) :

:
MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 1
i: Format............: JPEG
i: JPEG Quality......: 80
i: TV-Norm...........: DEFAULT
i: FPS coerced ......: from 1 to 5
...

Mem: 51872K used, 72712K free, 232K shrd, 6564K buff, 17464K cached
CPU:  97% usr   2% sys   0% nic   0% idle   0% io   0% irq   0% sirq
Load average: 0.23 0.14 0.34 2/41 3717
  PID  PPID USER     STAT   VSZ %VSZ %CPU COMMAND
3714  1704 root     S     5300   4%  97% mjpg_streamer -i input_uvc.so -d /dev/video0 -f 1 -r VGA -o output_http.so -w /www/webcam
1565     1 root     S     1780   1%   2% /usr/sbin/hostapd -s -P /var/run/wifi-phy1.pid -B /var/run/hostapd-phy1.conf
3717  1704 root     R     1212   1%   0% top
...

smile

* WNDR 4300v2 * ||  * Xiaomi Miwifi Mini * || Netgear R6220 *
* DVBT2 - T230C *

9 (edytowany przez palibrzuch 2020-02-19 23:15:51)

Odp: MJPG-streamer kilka kamer

https://www.dropbox.com/s/d52jnbb3wbs0ka1/IMG_20200219_221039.jpg?dl=1

Jednak udało się podłączyć trzecią ????

Niestety wszystkie działają na 10fps i 640x480

Mi to wystarcza.

Właśnie mocowanie do trzeciej się drukowało big_smile

Wszystko na jednej stronie.

10

Odp: MJPG-streamer kilka kamer

ja ze swoim enderem3 już przestalem walczyc, ni cholery nie moge wypoziomowac calego stolu, wieksze wydruki sie zwywają.

11 (edytowany przez palibrzuch 2020-02-20 07:17:44)

Odp: MJPG-streamer kilka kamer

Nawet widać leży obok na stole czujnik zegarowy, cały stół idealnie prosty. Będę zmieniał jeszcze płytę i założę auto czujnik. Jak na razie drukuje całkiem fajnie. Tu na stole petg wydrukowany. Chyba mi się trafiła dobra sztuka. Ważne jest też dobre jej złożenie i wykasowanie luzów.

Można powiedzieć, że mój r6220 jest w pełni wykorzystany, oczywiście obraz od Cezarego big_smile
No i co najważniejsze. Działa non stop z openvpn jako klient. Ostatnio 2tyg bez przerwy, bez rozłączania.