This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

superconfig / tools / video-webcam / video-webcam.sh
1.6 kB 81 lines
1DEVICE="/dev/video0" 2LOOP=true 3 4usage() { 5 echo "Usage: video-webcam [OPTIONS] <video-file>" 6 echo "" 7 echo "Stream a video file to a virtual webcam device." 8 echo "" 9 echo "Options:" 10 echo " -d, --device DEVICE v4l2 device to use (default: /dev/video0)" 11 echo " --no-loop Don't loop the video" 12 echo " -h, --help Show this help" 13 echo "" 14 echo "Examples:" 15 echo " video-webcam funny.gif" 16 echo " video-webcam -d /dev/video1 background.mp4" 17 echo " video-webcam --no-loop intro.webm" 18} 19 20while [[ $# -gt 0 ]]; do 21 case $1 in 22 -d|--device) 23 DEVICE="$2" 24 shift 2 25 ;; 26 --no-loop) 27 LOOP=false 28 shift 29 ;; 30 -h|--help) 31 usage 32 exit 0 33 ;; 34 -*) 35 echo "Unknown option: $1" >&2 36 usage >&2 37 exit 1 38 ;; 39 *) 40 VIDEO_FILE="$1" 41 shift 42 ;; 43 esac 44done 45 46if [[ -z "${VIDEO_FILE:-}" ]]; then 47 echo "Error: No video file specified" >&2 48 usage >&2 49 exit 1 50fi 51 52if [[ ! -f "$VIDEO_FILE" ]]; then 53 echo "Error: File not found: $VIDEO_FILE" >&2 54 exit 1 55fi 56 57if [[ ! -e "$DEVICE" ]]; then 58 echo "Error: Device $DEVICE does not exist" >&2 59 echo "Make sure v4l2loopback kernel module is loaded" >&2 60 exit 1 61fi 62 63echo "Streaming '$VIDEO_FILE' to $DEVICE" 64if $LOOP; then 65 echo "Looping enabled (Ctrl+C to stop)" 66fi 67echo "" 68 69LOOP_ARG="" 70if $LOOP; then 71 LOOP_ARG="-stream_loop -1" 72fi 73 74# shellcheck disable=SC2086 75exec ffmpeg \ 76 $LOOP_ARG \ 77 -re \ 78 -i "$VIDEO_FILE" \ 79 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,format=yuv420p" \ 80 -f v4l2 \ 81 "$DEVICE"