我是一名iOS开发人员。现在我正在开发DLNA/UPNP iOS应用程序。我的目标是在没有任何中间件的情况下,直接将视频从iPhone传输到三星智能电视。所以我使用upnpx库来实现。线框图如下所示。iPhone从服务器下载视频链接。并将视频直接播放到电视上。当然,服务器不是DMS。在这里,我的问题是一些视频在电视上播放得很好。但有些视频不会在电视上播放。仅播放音频。在实现app的过程中,我错过了什么?我希望每个人都能得到最好的解决方案。谢谢。
下面是我选择DMR的方式:
MediaRenderer1Device *render = (MediaRenderer1Device*)device;
[[PlayBack GetInstance] setRenderer:render];
[[PlayBack GetInstance] Play:0];/*choosed DMR urn :schemas upnp-org:device:媒体渲染器: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 upnpxdemo841: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>发布于 2016-06-11 23:02:28
错误消息不太可能与某些视频无法播放有关(我怀疑这只是编解码器不兼容),但以下是错误消息:
如果AVTransport服务不能进行您要求的状态转换(例如,如果您尝试在STOPPED时使用Pause() ),则在几种情况下,它可能会失败并返回701。AVTransport服务定义文档列出了可能发生701的所有情况--当然,您的三星也可能在完全不同的情况下返回它:/
我看不出你的代码中有什么东西可能触发上面描述的东西,但我建议在调用失败之前尝试监控服务的TransportState :我猜服务仍然是例如TRANSITIONING,在它是STOPPED或PLAYING之前不会接受命令。
https://stackoverflow.com/questions/37759476
复制相似问题