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