fotografia:camaras:streaming:raspberry
Table of Contents
Raspberry streaming bookworm
Creamos la Raspberry
sudo dd if=/home/jose/Downloads/2024-07-04-raspios-bookworm-arm64-lite.img of=/dev/mmcblk0
5537792+0 records in 5537792+0 records out 2835349504 bytes (2.8 GB, 2.6 GiB) copied, 537.586 s, 5.3 MB/s real 8m57.656s
Habilitar SSH:
touch bootfs/ssh
Creamos usuario ruth/odin:
echo 'ruth:$6$S3pAIx36rcMzDYsK$vzl8eX.2k07Rbje9nJ4zsFQdieKw8Wg296javxQ.VW7SdknBlk03vFKh0eI8i4VGwPxWHiJCJNnCd7E72Sh8c0' > bootfs/userconf
Conectamos wifi con ip fija. El fichero se tiene que llamar con el id con la extensión nmconnection. Luego cambiar permisos a 600
sudo vim rootfs/etc/NetworkManager/system-connections/TuID.nmconnection
[connection] id=TuID type=wifi autoconnect=true [wifi] mode=infrastructure ssid=TuSSID [wifi-security] key-mgmt=wpa-psk psk=TuContraseña [ipv4] method=manual address1=192.168.1.XX/24,192.168.1.1 dns=8.8.8.8;8.8.4.4; [ipv6] method=ignore
Cambiamos permisos a 600
sudo chmod 600 rootfs/etc/NetworkManager/system-connections/pitufina.nmconnection
Cambiadmos SWAP a 1024
sed -i 's/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=1024/' rootfs/etc/dphys-swapfile
Configuramos Streaming
Usaremos este software
https://github.com/bluenviron/mediamtx
Bajamos el binario:
https://github.com/bluenviron/mediamtx/releases
wget https://github.com/bluenviron/mediamtx/releases/download/v1.9.3/mediamtx_v1.9.3_linux_arm64v8.tar.gz
Configuramos en el yaml:
paths: cam_stream: source: publisher
Enviamos con ffmpeg:
ffmpeg -f v4l2 -input_format yuyv422 -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v libx264 -b:v 2000k -crf 18 -preset ultrafast -tune zerolatency -f rtsp rtsp://192.168.1.234:8554/cam_stream
ffmpeg -f v4l2 -probesize 10M -analyzeduration 10M -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v libx264 -b:v 2000k -crf 18 -preset ultrafast -tune zerolatency -f rtsp rtsp://192.168.1.234:8554/cam_stream
RASPI 4
ffmpeg -f v4l2 -input_format yuyv422 -video_size 1280x720 -framerate 30 -i /dev/video0 -c:v h264_v4l2m2m -b:v 2000k -preset ultrafast -tune zerolatency -f rtsp rtsp://192.168.2.101:8554/cam_stream
En OBS también configuramos rtsp:
rtsp://127.0.0.1:8554/cam_stream
En mediamtx se puede ver:
2024/11/18 17:19:12 INF [RTSP] [session 1e5bc2e0] is reading from path 'cam_stream', with UDP, 1 track (H264)
PRUEBAS
Este comando funciona bien ffmpeg -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 30 \ -i /dev/video0 -c:v libx264 -b:v 2000k -crf 18 -preset ultrafast -tune zerolatency \ -f rtsp rtsp://127.0.0.1:8554/cam_stream rpi3 tiene muchos frames duplicados. CPU: 256% MEM: 13.1% rpi4 no tiene frames duplicados pero pixela mucho CPU: 133% MEM: 1.5% rpi5 igual que la rpi4 no tiene frames duplicados pero pixela mucho CPU: 84.7% MEM: 1.5% Según chatgpt: Cuando el q es mas alto mayor calidad, viene dado por el CRF que le ponga frame= 8315 fps= 29 q=15.0 Lsize=N/A time=00:04:37.13 bitrate=N/A dup=6003 drop=0 speed=0.977x Significado de q=15.0 El valor q=15.0 indica la calidad de codificación del video en términos de QP (Quantization Parameter): Más bajo (q=0) significa mejor calidad (más carga en el sistema). Más alto (q=51) significa peor calidad (menos carga en el sistema). Este valor está controlado por el CRF que configuraste (-crf 18 en tu comando). En general: CRF 18: Calidad muy alta (visualmente indistinguible del original). CRF 23: Calidad buena. CRF 28+: Calidad media a baja. HE probado con CRF a 23 y sigue perdiendo frames pero va mas fluido y calidad aceptable Si quiero usar aceleración por hardware etngo que pasar a yuv420p y entonces me lo pixela mucho en la rpi3 aunque no pierde frames ffmpeg se pone a 179%cpu y 11.8% mem ffmpeg -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 30 \ -i /dev/video0 -vf format=yuv420p -c:v h264_v4l2m2m -b:v 2000k \ -f rtsp rtsp://127.0.0.1:8554/cam_stream v4l2-ctl --list-devices v4l2-ctl --list-formats-ext -d /dev/video0 ffmpeg -encoders | grep h264_v4l2m2m
fotografia/camaras/streaming/raspberry.txt · Last modified: 2024/11/18 20:27 by jose