如何向DLNA/UPnP飞利浦SAPHI电视推流直播并检测支持格式
解决方案:PC摄像头流推送到飞利浦SAPHI OS电视(DLNA/UPnP)
一、让电视播放HLS/UDP/RTSP流的方法
由于电视直接不支持这些协议的原生播放,核心思路是转码/封装为电视兼容的DLNA格式,再通过HTTP或DLNA服务器推送给电视,结合你已掌握的SetAVTransportURI接口调用即可实现。
1. 用FFmpeg转码并发布HTTP兼容流
FFmpeg是最灵活的转码工具,可将RTSP/HLS/UDP流转换为电视支持的H.264+AAC编码的TS/MP4流,通过HTTP发布:
- 转码RTSP摄像头流为HTTP TS流:
ffmpeg -i rtsp://your-camera-ip/stream-path -c:v h264 -c:a aac -f mpegts http://your-pc-local-ip:8080/camera-stream.ts - 转码HLS流为HTTP TS流:
ffmpeg -i http://your-hls-source.m3u8 -c:v copy -c:a copy -f mpegts http://your-pc-local-ip:8080/converted-hls.ts - 转码UDP流为HTTP MP4流(适合点播式直播):
ffmpeg -i udp://your-udp-source:port -c:v h264 -c:a aac -f mp4 -movflags frag_keyframe+empty_moov http://your-pc-local-ip:8080/udp-stream.mp4
启动转码后,用SetAVTransportURI指向上述HTTP地址即可播放。
2. 用VLC搭建中转流媒体服务器
VLC操作更可视化,适合快速测试:
- 打开VLC → 媒体 → 流 → 选择摄像头/RTSP/HLS/UDP源 → 点击“流”
- 在“目标设置”中选择“HTTP(MMS)”,设置地址为
http://0.0.0.0:8080/stream - 点击“编码选项”,选择视频编码为H.264、音频编码为AAC,封装格式选MP4或TS
- 点击“流”启动服务,再通过
SetAVTransportURI调用该HTTP地址
3. 用DLNA服务器托管转码后的流
如果需要更稳定的DLNA推送,可搭配minidlna或ReadyMedia:
- 用FFmpeg将流保存为本地TS/MP4文件(或实时转码到指定目录)
- 配置minidlna监控该目录,电视会自动发现媒体流,再通过Home Assistant或UPnP命令选择播放
二、检测电视支持的格式/播放列表
1. 调用UPnP接口查询支持格式
通过GetSupportedMediaFormats动作直接从电视获取官方支持列表:
用curl发送SOAP请求(替换电视的AVTransport服务地址):
curl -X POST http://tv-local-ip:port/AVTransport/control \ -H "Content-Type: text/xml; charset=utf-8" \ -H 'SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#GetSupportedMediaFormats"' \ -d '<?xml version="1.0"?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body> <u:GetSupportedMediaFormats xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"> <InstanceID>0</InstanceID> </u:GetSupportedMediaFormats> </s:Body> </s:Envelope>'
返回的XML会包含电视支持的视频编码、音频编码、封装格式及协议。
2. 查看电视官方规格文档
飞利浦SAPHI OS电视的产品页面会明确标注支持的流媒体格式,包括:
- 视频编码:H.264、H.265(部分型号)
- 音频编码:AAC、MP3
- 封装格式:MP4、TS、MKV
- 流媒体协议:HTTP、DLNA(部分型号原生支持RTSP,但需确认)
3. 手动测试验证
用FFmpeg生成不同格式的测试流,通过SetAVTransportURI逐个测试:
- 测试HTTP MP4流:
ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=25 -c:v h264 -c:a aac -f mp4 http://pc-ip:8080/test.mp4 - 测试HTTP TS流:
ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=25 -c:v h264 -c:a aac -f mpegts http://pc-ip:8080/test.ts
能播放的格式即为电视支持的类型。
内容的提问来源于stack exchange,提问作者Filip Hanes
相关产品推荐
相关产品推荐

