Conceptually I can understand that Termux cant take a photo or video from a camera device because it doesnt have access to the camera drivers that Android has…

…except that the Termux API does allow you to take a photo. So why is video off limits?

  • tetris11@lemmy.mlOP
    link
    fedilink
    arrow-up
    2
    ·
    1 day ago

    Yeah I have a bash script that does similar, using the notification API for interactivity

    FOLD_CAMERA=CameraShots
    TEMP_PID=~/.record_pid
    APP_ID=record
    
    mkdir -p $FOLD_CAMERA
    
    function main {
        termux-notification \
            --id $APP_ID --group RECORD \
    	    --priority max \
    	    --button1 "Front" \
    	    --button1-action "termux-notification-remove $APP_ID;bash $0 record 1" \
    	    --button2 "Back"  \
    	    --button2-action "termux-notification-remove $APP_ID;bash $0 record 0" \
    	    --button3 "Quit" \
    	    --button3-action "termux-notification-remove $APP_ID;exit" \
    	    --title "Record"
    	
    }
    
    function record {
        local cam=${1:-0}
    
        termux-notification \
            --id $APP_ID --group RECORD \
    	    --priority max \
    	    --button1 "Stop" \
    	    --button1-action "termux-notification-remove $APP_ID; bash $0 killproc" \
    	    --title "Rec. $cam"
        
        (while :; do
    	     termux-camera-photo \
    	         -c $cam \
    	         $FOLD_CAMERA/$(date "+%Y%m%d-%H%M_${cam}_record.jpg")
         done) &
    
        local pid=$!
        echo -n $pid > $TEMP_PID
    } 
    
    function killproc {
        local last_pid=$(cat $TEMP_PID)
        if [ "$last_pid" == "" ]; then
    	    termux-toast "Could not kill process. Restart the phone."
        else
    	    kill $last_pid &&
    	        bash $0 main
        fi
    }
    
    
    [ "$*" = "" ] && main || eval "$*"
    

    It just needs ffmpeg tied to the exit function