This repository has no description
0

Configure Feed

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

superconfig / tools / android-webcam / android-webcam.sh
2.2 kB 86 lines
1SHADER_TEMPLATE="@shaderPath@" 2ASCII_MODE=false 3ASCII_SCALE=6 4 5while [[ $# -gt 0 ]]; do 6 case $1 in 7 --ascii) 8 ASCII_MODE=true 9 shift 10 # Check if next arg is a number (the scale) 11 if [[ $# -gt 0 && $1 =~ ^[0-9]+$ ]]; then 12 ASCII_SCALE=$1 13 shift 14 fi 15 ;; 16 *) 17 echo "Unknown option: $1" >&2 18 echo "Usage: android-webcam [--ascii [SIZE]]" >&2 19 echo " SIZE: character size 1-20 (default: 6)" >&2 20 exit 1 21 ;; 22 esac 23done 24 25if $ASCII_MODE; then 26 # ASCII mode needs both devices 27 if [[ ! -e /dev/video0 ]] || [[ ! -e /dev/video1 ]]; then 28 echo "Error: /dev/video0 and /dev/video1 must exist for ASCII mode" >&2 29 echo "v4l2loopback should be configured with devices=2" >&2 30 exit 1 31 fi 32 # Generate shader with scale value 33 SHADER_PATH=$(mktemp --suffix=.hook) 34 sed "s/@SCALE@/${ASCII_SCALE}/" "${SHADER_TEMPLATE}" > "${SHADER_PATH}" 35else 36 if [[ ! -e /dev/video0 ]]; then 37 echo "Error: /dev/video0 must exist" >&2 38 exit 1 39 fi 40fi 41 42cleanup() { 43 echo "Stopping..." 44 kill "${SCRCPY_PID}" 2>/dev/null || true 45 [[ -n "${FFMPEG_PID:-}" ]] && kill "${FFMPEG_PID}" 2>/dev/null || true 46 [[ -n "${SHADER_PATH:-}" && -f "${SHADER_PATH}" ]] && rm -f "${SHADER_PATH}" 47} 48trap cleanup EXIT 49 50# Start scrcpy to stream phone camera to /dev/video0 51echo "Starting phone camera stream..." 52scrcpy \ 53 --video-source=camera \ 54 --camera-facing=back \ 55 --no-audio \ 56 --v4l2-sink=/dev/video0 \ 57 --video-encoder=c2.exynos.h264.encoder \ 58 --camera-size=1920x1080 & 59SCRCPY_PID=$! 60 61if $ASCII_MODE; then 62 sleep 2 63 64 # Start ffmpeg with ASCII shader to /dev/video1 65 echo "Starting ASCII filter pipeline (scale=${ASCII_SCALE})..." 66 ffmpeg \ 67 -f v4l2 -i /dev/video0 \ 68 -vf "libplacebo=custom_shader_path=${SHADER_PATH}" \ 69 -f v4l2 -pix_fmt yuv420p /dev/video1 & 70 FFMPEG_PID=$! 71 72 echo "" 73 echo "Android ASCII webcam running!" 74 echo " Raw camera: /dev/video0 (Phone Camera)" 75 echo " ASCII output: /dev/video1 (ASCII Webcam)" 76 echo " Character size: ${ASCII_SCALE}" 77else 78 echo "" 79 echo "Android webcam running!" 80 echo " Camera: /dev/video0 (Phone Camera)" 81fi 82 83echo "" 84echo "Press Ctrl+C to stop" 85 86wait