树莓派CM4基于uv4l-webrtc实现流媒体,iOS浏览器音视频无法正常显示
调整UV4L启动参数,适配iOS的H.264编码规范
iOS对H.264的profile和level有严格限制,默认raspicam驱动输出的编码可能不达标,替换启动命令为:uv4l --syslog-host localhost --driver raspicam --encoding h264 --h264-profile baseline --h264-level 3.1 --enable-server --server-option '--enable-webrtc'
baseline profile是iOS WebRTC优先支持的类型,level 3.1适配移动设备性能,同时明确开启WebRTC服务选项,避免自动回退到MJPEG。补全音频配置参数
iOS WebRTC对音频参数有硬性要求,确保UV4L加载正确的音频设备,添加以下参数到启动命令:--audio-device plughw:0,0 --enable-audio --audio-rate 48000 --audio-channels 1
plughw:0,0是树莓派默认音频设备,48kHz采样率是WebRTC标准,单声道更适配移动设备。强制禁用MJPEG回退机制
在启动命令中加入--server-option '--webrtc-no-mjpeg-fallback',让iOS端强制尝试WebRTC流,不会自动降级到无音频的MJPEG模式。验证HTTPS证书兼容性
iOS对HTTPS证书要求严格:- 若用自签名证书,必须在iOS设备的「设置-通用-VPN与设备管理」中手动添加信任;
- 证书必须包含正确的Subject Alternative Name(SAN),要覆盖你的服务域名或ngrok分配的域名,否则会因证书验证失败导致WebRTC协商中断。
升级UV4L到最新稳定版
旧版本UV4L可能存在iOS WebRTC兼容性bug,执行以下命令升级:sudo apt update sudo apt upgrade uv4l uv4l-raspicam uv4l-server uv4l-webrtc
内容的提问来源于stack exchange,提问作者Herry

