Stream Video from Raspberry Pi to Network and/or Youtube with PiCam.
https://github.com/iizukanao/picam#using-a-binary-release
Install and update dependencies
sudo apt update && sudo apt upgrade
sudo apt install libharfbuzz-dev libfontconfig1 -y
Create picam folder
mkdir ~/picam
Copy script/content from: scripts/symlink.sh
nano ~/picam/symlink.sh
Make script executable and run it
chmod +x symlinks.sh
./symlinks.sh
Install picam binary
wget https://github.com/iizukanao/picam/releases/download/v2.0.7/picam-2.0.7-`uname -m`.tar.xz
tar xvf picam-2.0.7-*.tar.xz
cp picam-2.0.7-*/picam ~/picam/
Cleanup files
rm -rf picam-2.0.7-*
mv symlinks.sh ~/picam/
Disable legacy camera
sudo raspi-config
#Interface Options -> Legacy Camera -> NO
Increase microphone volume to 100
alsamixer -c 1
Start picam
cd ~/picam && ./picam
https://github.com/arut/nginx-rtmp-module/wiki/Getting-started-with-nginx-rtmp
Install Build utils
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev git zlib1g-dev -y
Create build dir
mkdir ~/build && cd ~/build
Get nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module
Get nginx (use latest version: https://nginx.org/download/)
sudo wget http://nginx.org/download/nginx-1.23.1.tar.gz
sudo tar xzf nginx-1.23.1.tar.gz
cd nginx-1.23.1
Build nginx with nginx-rtmp
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install
Start nginx server
sudo /usr/local/nginx/sbin/nginx
Replace nginx-config from: nginx/nginx.conf
sudo nano /usr/local/nginx/conf/nginx.conf
Restart nginx
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx
Cleanup build files
cd ~ && sudo rm -rf ./build
Start picam
cd ~/picam && ./picam --tcpout tcp://127.0.0.1:8181
Test with VLC -> Network -> rtmp://raspberry-ip/picam/live
Get STREAM_URL/STREAM_KEY from Youtube Studio -> Start Livestream
Start ffmpeg stream with:
ffmpeg -i tcp://127.0.0.1:8181?listen -c:v copy -c:a aac -f flv STREAM_URL/STREAM_KEY
Test with Browser -> https://www.youtube.com/stream-url
To autostart nginx add services/nginx.service to:
sudo nano /etc/systemd/system/nginx.service
Start/Stop/Status Service with
sudo service nginx start/stop/status
And persist after reboot with
sudo systemctl enable nginx
To create symlinks on startup edit:
sudo nano /etc/rc.local
Add following before exit 0
:
# Set symlinks for picam
/home/pi/picam/symlink.sh
Create following scripts from: scrips/picam.sh, scrips/restart.sh and scrips/shutdown.sh
nano ~/picam.sh
nano ~/restart.sh
nano ~/shutdown.sh
Make them executable
chmod +x ~/picam.sh
chmod +x ~/restart.sh
chmod +x ~/shutdown.sh
Install netcat to wait for nginx
sudo apt install netcat
To autostart PiCam create from: services/picam.service
sudo nano /etc/systemd/system/picam.service
Start/Stop/Status of Service with
sudo service youtube start/stop/status
And persist after reboot with
sudo systemctl enable picam
Copy STREAM_URL/STREAM_KEY to:
nano ~/Documents/youtube.txt
Create following script from: scrips/youtube.sh
nano ~/youtube.sh
Make it executable
chmod +x ~/youtube.sh
To autostart Youtube-Stream create from: services/youtube.service
sudo nano /etc/systemd/system/youtube.service
Start/Stop/Status of Service with
sudo service youtube start/stop/status
And persist after reboot with
sudo systemctl enable youtube
- To stream HLS in local network see docs/HLS.md
- To use node-server instead of NGINX-RTMP see docs/NODE.md
- Github
- Linux
- NGINX
- Audio