OpenCV FFMpeg RTMP Stream
Example of live video streaming over RTMP protocol using OpenCV and FFMpeg.
For streaming without using OpenCV check ffmpeg-webcam-rtmp-stream repository.
Installation Guide
Install FFMpeg
On MacOS.
brew install ffmpeg
On Ubuntu Linux.
sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev libavdevice-dev -y
Install OpenCV
For installing OpenCV there's a script inside scripts/
folder:
./scripts/install-opencv.sh
Run RTMP Server Docker image
docker run -it -p 1935:1935 -p 8080:8080 --name rtmp-server jkuri/urtmp
Then open your browser at http://localhost:8080
where you can watch your published streams.
Compile & run
To compile source code just run:
mkdir -p build && cd build
cmake .. && make
Run the program to start streaming:
./build/rtmp-stream
To set up different options for stream, here is ./rtmp-stream -h
output
SYNOPSIS
./rtmp-stream [-c <camera>] [-o <output>] [-f <fps>] [-w <width>] [-h <height>] [-b <bitrate>] [-p <profile>] [-l <log>]
OPTIONS
-c, --camera <camera>
camera ID (default: 0)
-o, --output <output>
output RTMP server (default: rtmp://localhost/live/stream)
-f, --fps <fps>
frames-per-second (default: 30)
-w, --width <width>
video width (default: 800)
-h, --height <height>
video height (default: 640)
-b, --bitrate <bitrate>
stream bitrate in kb/s (default: 300000)
-p, --profile <profile>
H264 codec profile (baseline | high | high10 | high422 | high444 | main) (default: high444)
-l, --log <log>
print debug output (default: false)
Use VLC or ffplay
to connect to live video stream:
ffplay -sync ext rtmp://localhost/live/stream
LICENCE
MIT