树莓派3推流至Azure Media Services预览报错:No compatible source was found for this media
解决方案建议:Azure Media Services预览报错“No compatible source was found for this media”
我之前也碰到过类似的推流后无法预览的问题,结合你用的pass-through编码模式,给你几个针对性的排查和解决方向:
1. 确认推流编码/封装格式符合AMS要求
Pass-through模式下Azure Media Services不会对输入流进行转码,所以你的推流必须严格符合AMS支持的格式:
- 视频编码:必须是H.264(Baseline/Main/High profile,Level 4.1及以下版本)
- 音频编码:必须是AAC-LC(低复杂度)
- 封装格式:推RTMP的话用FLV封装,推SRT的话用TS封装
你可以检查下自己的ffmpeg命令参数,确保指定了正确的编码,比如:
sudo ~/azure_ffmpeg.save -f v4l2 -i /dev/video0 -c:v libx264 -profile:v main -level:v 4.1 -c:a aac -f flv <你的AMS推流URL>
如果没指定编码,树莓派摄像头的原始输出编码可能不被AMS兼容,建议手动强制指定上述参数。
2. 验证推流链路是否真的连通
虽然ffmpeg输出显示帧数和FPS正常,但有可能AMS并没有实际接收到流:
- 登录Azure门户,进入你的直播频道,查看监控标签页:如果能看到输入流的比特率、帧率持续变化,说明流已经正常接收;如果监控数据为0,那大概率是推流URL/密钥有误,或者网络防火墙阻止了流量(树莓派到AMS的端口是否开放,比如RTMP用1935端口)。
- 确认频道状态为Running,没有报错提示。
3. 检查流式端点的配置与状态
- 确保流式端点已经启动:创建后默认是停止状态,需要手动点击“启动”按钮,等待状态变为“Running”后再尝试预览。
- 确认流式端点开启了HLS/DASH协议支持:AMS的预览依赖这两种自适应比特率协议,pass-through模式下AMS会将输入流封装为这两种格式输出,如果封装失败就会导致预览报错。
4. 绕过门户预览,用本地播放器测试
门户的预览功能可能存在浏览器兼容性问题,建议直接用VLC或PotPlayer等播放器拉取流式端点的播放URL测试:
- HLS播放URL格式:
https://<你的流式端点域名>/<资产名称>/manifest(format=m3u8-aapl) - DASH播放URL格式:
https://<你的流式端点域名>/<资产名称>/manifest(format=mpd-time-csf)
如果本地播放器能正常播放,说明流本身没问题,只是门户预览的浏览器适配问题,尝试更换Chrome/Firefox等现代浏览器再试;如果播放器也无法播放,回到前面的编码/推流链路排查。
5. 补充音频流(如果缺失)
有些播放器/AMS预览要求必须包含音频流,如果你只推了视频流,可能会触发兼容性报错。可以在ffmpeg命令中添加静音音频测试:
sudo ~/azure_ffmpeg.save -f v4l2 -i /dev/video0 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -c:v libx264 -profile:v main -level:v 4.1 -c:a aac -f flv <你的AMS推流URL>
内容的提问来源于stack exchange,提问作者Reynold
相关产品推荐
相关产品推荐

