From 964d43e29e81a09138117a30b63d613aa406a146 Mon Sep 17 00:00:00 2001 From: Lea Date: Fri, 29 Sep 2023 23:26:23 +0200 Subject: [PATCH] add initial ramblings --- README.md | 24 ++++++++++++++++++++++-- services/README.md | 3 +++ services/droidcam-streamer.service | 17 +++++++++++++++++ services/droidcam.service | 12 ++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 services/README.md create mode 100644 services/droidcam-streamer.service create mode 100644 services/droidcam.service diff --git a/README.md b/README.md index a24786d..c76715a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,23 @@ -# droidcam-with-octoprint +# Droidcam with OctoPrint -Making OctoPrint work with Droidcam \ No newline at end of file +I'll write setup instructions at some point. Right now I'm tired of all the crap I had to go through to figure this out. + +This also expects that you're using OctoPrint's Raspberry Pi image, for other systems you'll probably have to adapt a bit. + +### Links + +- https://github.com/blueimp/mjpeg-server +- https://github.com/libimobiledevice/usbmuxd +- https://github.com/dev47apps/droidcam/issues/6#issuecomment-657677219 + +### Notes + +`/etc/modules` +``` +v4l2loopback +``` + +`/etc/modprobe.d/v4l2loopback.conf` +``` +options v4l2loopback devices=1 video_nr=1 +``` diff --git a/services/README.md b/services/README.md new file mode 100644 index 0000000..7965bf7 --- /dev/null +++ b/services/README.md @@ -0,0 +1,3 @@ +# systemd service files + +These should go into `/etc/systemd/user`. diff --git a/services/droidcam-streamer.service b/services/droidcam-streamer.service new file mode 100644 index 0000000..0487fa5 --- /dev/null +++ b/services/droidcam-streamer.service @@ -0,0 +1,17 @@ +[Unit] +Description=DroidCam streaming +BindsTo=droidcam.service +StartLimitIntervalSec=0 + +[Service] +Type=simple +# this is cursed +ExecStart=/home/pi/go/bin/mjpeg-server -a ":8080" -b gaysex -- bash -c 'while [[ true ]]; do gst-launch-1.0 -v v4l2src device=/dev/video1 ! videoconvert ! video/x-raw,format=I420 ! v4l2jpegenc ! multipartmux boundary=gaysex ! filesink location=/dev/stdout || true; done' +Restart=always +RestartSec=5 + +# Old transcoding command, ffmpeg hammered the CPU way too much and doesn't have support for the v4l2 mjpeg encoder. gstreamer performs leagues better +# ExecStart=/home/pi/go/bin/mjpeg-server -a ":8080" -- ffmpeg -i /dev/video1 -fflags nobuffer -an -r 15 -f mpjpeg -q 2 - + +[Install] +WantedBy=default.target diff --git a/services/droidcam.service b/services/droidcam.service new file mode 100644 index 0000000..15f7d3b --- /dev/null +++ b/services/droidcam.service @@ -0,0 +1,12 @@ +[Unit] +Description=DroidCam streaming +StartLimitIntervalSec=0 + +[Service] +Type=simple +ExecStart=/usr/bin/droidcam-cli -nocontrols -dev=/dev/video1 -size=1280x720 ios 57192 +Restart=always +RestartSec=5 + +[Install] +WantedBy=default.target