====== 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