【问题标题】:DLNA/UPNP video cast error of DMRDMR 的 DLNA/UPNP 视频投射错误
【发布时间】:2016-06-11 02:51:56
【问题描述】:

我是一名 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>

【问题讨论】:

  • 您使用哪个库将视频从手机传输到电视?我正在寻找一些解决方案。

标签: ios upnp upnpx


【解决方案1】:

该错误消息不太可能与某些视频未播放有关(我怀疑这只是编解码器不兼容),但以下是错误消息:

如果 AVTransport 服务无法进行您要求的状态转换(例如,如果您尝试在 STOPPED 时尝试 Pause()),则 AVTransport 服务可能会在某些情况下失败并返回 701。 AVTransport 服务定义文档列出了所有可能发生 701 的情况——当然,您的三星也可能在完全不同的情况下返回它:/

我看不出您的代码中的哪些内容可能会触发上述内容,但我建议在调用失败并显示 701 之前尝试监控服务的 TransportState:我的猜测是该服务仍然是例如TRANSITIONING 并且在 STOPPEDPLAYING 之前不会接受命令。

【讨论】:

  • 你好。你能解释更多吗?也许它似乎接近了。
猜你喜欢
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多