/streaming-pi

Stream Video from Raspberry Pi to Network and/or Youtube with PiCam

Primary LanguageShell

Video-Streaming with Raspberry Pi

Stream Video from Raspberry Pi to Network and/or Youtube with PiCam.

Video Stream on RPi4

Install 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

Install Nginx-RTMP

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


Stream to Youtube

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


Persist Restart

Nginx

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

Symlinks

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

PiCam

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

Youtube

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

More

Links