Skip to content
/ ah4c Public

This is a fork of https://github.com/tmm1/androidhdmi-for-channels which aims to be a drop in replacement and provide for reliance on hdmi encoding via network or application tuners. Expanding support to docker and beyond!

License

Notifications You must be signed in to change notification settings

sullrich/ah4c

Repository files navigation

Eye candy

image (built in stats gui)

This is a fork of https://github.com/tmm1/androidhdmi-for-channels with these features:

  1. ENV variable support
  2. Standardize and improve script durability / reliability
  3. Allow multiple tuners from one set of scripts
  4. Allowing the tuner and encoder information to be dynamically set. Useful for docker containers, etc
  5. Support for FireTV and Hulu
  6. Test each pre script and if fails move on to next tuner before giving up
  7. M3U file serving with templating for IP Address
  8. Docker support
  9. Application based tuners (IE: magewell, hauppauge colossus 2 & anything ffmpeg supports!)
  10. E-Mail alerts on failures
  11. Global logging to disk with rotation
  12. Logging endpoint /logs for moments you do not have access to console with dynamic refresh!
  13. Webhook support on failure use $reason variable in URL.
  14. Custom script support - drop in your scripts and set STREAMER_APP env variable to match dir location
  15. Web graphs of cpu, mem, gpu (nvidia)
  16. Tee support (sending feed to a secondary target)
  17. Application based tuning! Just send the feed to stdout
  18. Dead video feeds restart - video locking up but audio working
  19. Use OCR if tesseract is installed looking for common questions such as Whos there? and Still watching?

Docker Instructions

  1. Download the Docker convenience script: $ curl -fsSL https://get.docker.com -o get-docker.sh
  2. Install Docker: $ sudo sh get-docker.sh
  3. Install Portainer: $ sudo docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer
    --restart=always
    -v /var/run/docker.sock:/var/run/docker.sock
    -v portainer_data:/data
    cr.portainer.io/portainer/portainer-ce:latest
  4. Configure Portainer and add androidhdmi-for-channels.yml via Portainer-Stacks: https://:9443
  5. Add environment variable values to bottom section of Portainer-Stacks as defined in Docker compose.
  6. Deploy container. Use re-pull image and redeploy slider if the container has been updated since the last time you downloaded it.
  7. Check Portainer log for running container using Quick Actions button from Container list to check for errors.

Recommended Docker Compose for Portainer-Stacks:

version: '3.9'
services:
  ah4c:
    image: bnhf/ah4c:testlatest
    container_name: ah4c
    hostname: ah4c
    dns_search: localdomain # Specify the name of your LAN's domain, usually local or localdomain
    ports:
      - 5037:5037 # Port used by adb-server
      - 7654:7654 # Port used by this androidhdmi-for-channels proxy
      - 7655:8000 # Port used by ws-scrcpy
    environment:
      - IPADDRESS=${IPADDRESS} # Hostname or IP address of this androidhdmi-for-channels extension to be used in M3U file (also add port number if not in M3U)
      - NUMBER_TUNERS=${NUMBER_TUNERS} # Number of tuners you'd like defined 1, 2, 3 or 4 supported
      - TUNER1_IP=${TUNER1_IP} # Streaming device #1 with adb port in the form hostname:port or ip:port
      - TUNER2_IP=${TUNER2_IP} # Streaming device #2 with adb port in the form hostname:port or ip:port
      - TUNER3_IP=${TUNER3_IP} # Streaming device #3 with adb port in the form hostname:port or ip:port
      - TUNER4_IP=${TUNER4_IP} # Streaming device #4 with adb port in the form hostname:port or ip:port
      - ENCODER1_URL=${ENCODER1_URL} # Full URL for tuner #1 in the form http://hostname/stream or http://ip/stream
      - ENCODER2_URL=${ENCODER2_URL} # Full URL for tuner #2 in the form http://hostname/stream or http://ip/stream
      - ENCODER3_URL=${ENCODER3_URL} # Full URL for tuner #3 in the form http://hostname/stream or http://ip/stream
      - ENCODER4_URL=${ENCODER4_URL} # Full URL for tuner #4 in the form http://hostname/stream or http://ip/stream
      - STREAMER_APP=${STREAMER_APP} # Streaming device name and streaming app you're using in the form scripts/streamer/app (use lowercase with slashes between as shown)
      - CHANNELSIP=${CHANNELSIP} # Hostname or IP address of the Channels DVR server itself
      #- ALERT_SMTP_SERVER="smtp.gmail.com:587"
      #- ALERT_AUTH_SERVER="smtp.gmail.com"
      #- ALERT_EMAIL_FROM=""
      #- ALERT_EMAIL_PASS=""
      #- ALERT_EMAIL_TO=""
      #- ALERT_WEBHOOK_URL=""
      #- UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # Set to true if you'd like the sample scripts and STREAMER_APP scripts updated whether they exist of not
      #- UPDATE_M3US=${UPDATE_M3US} # Set to true if you'd like the sample m3us updated whether they exist of not
      - TZ=${TZ} # Your local timezone in Linux "tz" format
    volumes:
      - /data/ah4c/scripts:/opt/scripts # pre/stop/bmitune.sh scripts will be stored in this bound host directory under streamer/app
      - /data/ah4c/m3u:/opt/m3u # m3u files will be stored here and hosted at http://<hostname or ip>:7654/m3u for use in Channels DVR - Custom Channels settings
      - /data/ah4c/adb:/root/.android # Persistent data directory for adb keys
    restart: unless-stopped

And, here's a sample of the environment variables that you'll need to provide:

screencapture-htpc6-9000-2023-08-16-16_33_04

Developer Instructions

First see https://github.com/sullrich/ah4c/blob/main/getting_started.txt

About

This is a fork of https://github.com/tmm1/androidhdmi-for-channels which aims to be a drop in replacement and provide for reliance on hdmi encoding via network or application tuners. Expanding support to docker and beyond!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •