我是一名 iOS 开发人员。现在我正在开发 DLNA/UPNP iOS 应用程序。我的目标是直接将视频从 iPhone 投射到三星智能电视上,无需任何中间件。所以我为此使用 upnpx 库。线框如下。iPhone 从服务器下载视频链接。并直接将视频投射到电视上。当然,服务器不是 DMS。在这里,我的问题是某些视频在电视上播放效果很好。但有些视频无法在电视上播放。只播放音频。我在实施应用程序时错过了什么?我希望从每个人那里得到最好的解决方案。谢谢你。
这就是我选择 DMR 的方式:
MediaRenderer1Device *render = (MediaRenderer1Device*)device;
[[PlayBack GetInstance] setRenderer:render];
[[PlayBack GetInstance] Play:0];
/*选择 DMR urn 'urn:schemas-upnp-org:device:MediaRenderer:1' */
//play func
-(int)Play:(NSInteger)position {
if([[renderer avTransportService]isObserver:BasicUPnPServiceObserver*)self]== NO){
[[renderer avTransportService] addObserver:(BasicUPnPServiceObserver*)self];
}
NSString *uri = @"http://parstvco.files.wordpress.com/2015/11/dandoon-tala-10.mp4"; // This uri will be played on TV(DMR)
NSString *iid = @"0";
[[renderer avTransport] SetPlayModeWithInstanceID:iid NewPlayMode:@"NORMAL"];
[[renderer avTransport] SetAVTransportURIWithInstanceID:iid CurrentURI:uri CurrentURIMetaData:@"video/mp4"];
[[renderer avTransport] PlayWithInstanceID:iid Speed:@"1"];
}
//结果日志
2016-06-11 09:33:16.120 upnpxdemo[841:8340] 错误(SoapAction):得到非 200 响应:500。数据:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>UPnPError</faultstring><detail><u:UPnPError xmlns:u="urn:schemas-upnp-org:control-1-0"><u:errorCode>701</u:errorCode><u:errorDescription>Transition not available</u:errorDescription></u:UPnPError></detail></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>