With this dockerized app, you can use a webcam to stream live video to YouTube
It was developer for Raspberry Pi, but of course it works with any type of HW as long as it supports Docker.
- Install
Docker
🐳curl -sSL https://get.docker.com | sh
- Install
docker-compose
sudo pip install docker-compose
ORsudo pip3 install docker-compose
- Clone this repo
git clone https://github.com/gaborvecsei/YouTube-Live-Stream-Docker.git
- go inside the folder
cd Youtube-Live-Stream-Docker
With this "mode", the streaming starts when your device boots up and shuts down only when you turn off your device or stop the docker container. It can be useful when you have a dedicated device, only for this purpose what your only want to turn on and off without using ssh and entering commands to the terminal. This method handles these automatically.
I use this mode, so I can have a "secret eye" 👀 on my puppy, when I leave ❤️.
cd base_docker_image
thensudo ./build_base.sh
to build the base image for the other Docker images- Edit
docker-compose.yml
- Change
YOUTUBE_LIVE_KEY
to your personal youtube live stream key which you can find athttps://www.youtube.com/live_dashboard
- Under
devices
change the host mapping if necessary. (By default it uses thevideo0
).- For example if you'd like to use
video1
device than change it to:/dev/video1:/dev/video0
- For example if you'd like to use
- Change
- Go to the
youtube_stream_image
folder and then run command:sudo docker-compose up -d
- Go to the
youtube_stream_image
folder and then run command:sudo docker-compose down
As I always forgot to turn on/off the stream, now it does it automatically based on the connected devices on your network ✨.
This is achieved with a MAC whitelist. If a MAC address is in the list, that means if it's present at your network, the stream will shut down automatically (so you don't have to worry about being streamed, even if it's private). If it's not present then the stream goes live.
+---------------------------+
| +
| yes+---->stop
| ^ stream
| |
v +
start +-----> scan devices +---> is whitelisted MAC
^ present?
| +
| |
| v
| no+----->start
| stream
| +
+---------------------------+
- Perform the same as in Setup Simple Mode
- Whitelist device MAC addresses
- Edit
master_app_image/code/whitelisted_devices.csv
- This file is responsible for keeping safe MAC addresses, so when this device is present based on
arp-scan
ornmap
we know, we can shut down the stream
- This file is responsible for keeping safe MAC addresses, so when this device is present based on
- Edit
- YouTube Private Settings
- Don't forget to set yout live stream to
private
at YouTube Live Dashboard
- Don't forget to set yout live stream to
sudo docker-compose up -d
(For logs you can use sudo docker-compose logs
or inside the code
folders you can find the log files)
sudo docker-compose down
- Device Scanner 💻
- Responsible to scan the devices in the local network (localhost)
- Rest Api:
GET, POST - localhost:8887/device_scan_api/scan result: {"device_macs": ["00:11:22:33:44:55", ...}
- YouTube Stream 📷
- With this we can start or stop a live stream
- Rest Api:
GET, POST - localhost:8888/youtube_stream_api/start GET, POST - localhost:8888/youtube_stream_api/stop GET, POST - localhost:8888/youtube_stream_api/check_health GET, POST - localhost:8888/youtube_stream_api/alive
- Master App 👑
- This is the main container which uses the above services to detect whitelisted devices and decide to start or stop the live streaming
- device scanning for automatic streamin
- master - feature architecture
- create base Dockerfile
- logging to DB when was the stream live, which device, etc...
- easily switch to "basic mode". When there is no device scan, it streams when I start it.
- easily editable
csv
for whitelisting - comments
- send (Slack, Gmail, etc...) message when stream started/stopped
Gábor Vecsei