{:title "Using RasPi for Video" :layout :post}
The RasPi has great hardware for working with video. Sofar we're able to transcode three streams and run the Pi camera at 30fps, encode and deliver with a few secods of latency, even when accounting for intermediate CDN caching. More details here.
This article is a living document... as of now this is what we use to go live.
Based on the nginx-rtmp config here: GitHub
720:
./ffmpeg -hide_banner -y -codec:v h264_mmal -i rtmp://localhost:1935/ispoogedaily_source_720/ispoogedaily_720 -c:a copy -c:v h264 -profile:v main -sc_threshold 0 -g 60 -keyint_min 50 -vf scale=w=1280:h=720:force_original_aspect_ratio=decrease -b:v 6000k -maxrate 6420k -bufsize 9000k -f flv rtmp://localhost:1935/ispoogedaily_local/ispoogedaily_720
360:
./ffmpeg -hide_banner -y -codec:v h264_mmal -i rtmp://localhost:1935/ispoogedaily_source_360/ispoogedaily_360 -c:a copy -c:v h264 -profile:v main -sc_threshold 0 -g 60 -keyint_min 50 -vf scale=w=640:h=360:force_original_aspect_ratio=decrease -b:v 3000k -maxrate 3210k -bufsize 4500k -f flv rtmp://localhost:1935/ispoogedaily_local/ispoogedaily_360
240:
./ffmpeg -hide_banner -y -codec:v h264_mmal -i rtmp://localhost:1935/ispoogedaily_source_240/ispoogedaily_240 -c:a copy -level:v 1.0 -c:v h264 -profile:v main -sc_threshold 0 -g 60 -keyint_min 60 -vf scale=w=426:h=240:force_original_aspect_ratio=decrease -b:v 800k -maxrate 1000k -bufsize 3000k -f flv rtmp://localhost:1935/ispoogedaily_local/ispoogedaily_240
live twitch:
live youtube:
https://gist.github.com/mikoim/27e4e0dc64e384adbcb91ff10a2d3678
./ffmpeg -i rtmp://localhost:1935/ispoogedaily_local/ispoogedaily_720 \
-c:v libx264 -preset slow -profile:v high \
-crf 18 -coder 1 -pix_fmt yuv420p -movflags \
+faststart -g 30 -bf 2 -c:a aac -b:a 384k \
-profile:a aac_low -f flv rtmp://a.live.youtube.com/li...FIXME
number of slices:
find /tmp/hls/ispooge.com -name *.ts | wc -l
number of streams:
find /tmp/hls/ispooge.com -name *.m3u8 | wc -l
check tmpfs (where segments are written):
df -h | grep /tmp$
top right small view:
raspivid -p 960,22,320,180 -t 0 -w 320 -h 180 -fps 30 -hf -b 1048576
top left large view:
raspivid -p 0,20,960,540 -t 0 -w 960 -h 540 -fps 30 -b 8388608
raspivid -p 0,20,960,540 -t 0 -w 960 -h 540 -fps 30 -b 8388608 -o sample.h264