diff --git a/README.md b/README.md index f21b141..f6b6760 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,22 @@ card 1: Q9000 [QuickCam Pro 9000], device 0: USB Audio [USB Audio] > `ffmpeg -loglevel error -i rtsp://garagecam.virtonline.eu:554/live3.sdp -c copy -f flv rtmp://peertube.virtonline.eu:1935/live/LIVE-STREAM-KEY` ### Live stream camera using h.264 hardware acceleration [VAAPI](https://trac.ffmpeg.org/wiki/Hardware/VAAPI) (e.g. on Intel iGPU) +Check your GPU +> `sudo lshw -C display` +``` + *-display + description: VGA compatible controller + product: Skylake GT2 [HD Graphics 520] + vendor: Intel Corporation + physical id: 2 + bus info: pci@0000:00:02.0 + version: 07 + width: 64 bits + clock: 33MHz + capabilities: pciexpress msi pm vga_controller bus_master cap_list rom + configuration: driver=i915 latency=0 + resources: irq:134 memory:de000000-deffffff memory:c0000000-cfffffff ioport:f000(size=64) memory:c0000-dffff +``` Use the dockerized ffmpeg with precompiled vaapi support, adjust `/dev/video2` > `alias ffmpeg='docker run --rm -w $(pwd) -v $(pwd):$(pwd) --device=/dev/dri --device=/dev/video2 jrottenberg/ffmpeg:vaapi'` @@ -115,7 +131,7 @@ Adjust `/dev/video2`, `-video_size 1920x1080 -framerate 60` and stream to peertu > `ffmpeg -hide_banner -y -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 60 -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i /dev/video2 -vf 'scale_vaapi=format=nv12' -c:v h264_vaapi -b:v 10M -f flv rtmp://peertube.virtonline.eu:1935/live/LIVE-STREAM-KEY` ### Setup a systemd service for a non-stop streaming -Adapt 'video_bitrate=3500000' to your Raspberry Pi (Zero W) max upload speed +Adapt 'VIDEO_BITRATE="3500000"' to your max network upload speed ``` sudo tee /etc/systemd/system/webcam-streamer.service </dev/null || true' ExecStartPre=-/usr/bin/env sh -c 'v4l2-ctl -d ${VIDEO_DEVICE} -c video_bitrate=${VIDEO_BITRATE}' ExecStart=/bin/bash -c 'ffmpeg -loglevel error \ - -f v4l2 -input_format ${VIDEO_CODEC} \ + -f v4l2 \ + -input_format ${VIDEO_CODEC} \ -video_size ${VIDEO_RESOLUTION} \ -framerate ${VIDEO_FRAMERATE} \ -i ${VIDEO_DEVICE} \ - -c copy -f flv \ + -c copy \ + -f flv \ -tune zerolatency \ ${PEERTUBE_LIVE}'