Ошибка приведения видео DLNA/UPNP в DMR
Я разработчик iOS. Сейчас я занимаюсь разработкой приложения DLNA/UPNP для iOS. Моя цель - напрямую передавать видео с iPhone на Samsung Smart TV без какого-либо промежуточного программного обеспечения. Поэтому я использую библиотеку upnpx для этого. Каркас ниже. iPhone скачать видеолинк с сервера. И прямо снимали видео на ТВ. Конечно, сервер не DMS. Здесь моя проблема в том, что некоторые видео хорошо воспроизводятся по телевизору. Но некоторые видео не воспроизводятся по телевизору. Только аудио воспроизводится. Что мне не хватает при реализации приложения? Я надеюсь получить лучшее решение от всех. Спасибо.
Вот как я выбрал DMR:
MediaRenderer1Device *render = (MediaRenderer1Device*)device;
[[PlayBack GetInstance] setRenderer:render];
[[PlayBack GetInstance] Play:0];
/ * выбранный DMR urn 'urn:schemas-upnp-org: устройство: 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>
1 ответ
Сообщение об ошибке вряд ли будет связано с тем, что некоторые видео не воспроизводятся (я подозреваю, что это просто несовместимость кодека), но для сообщения об ошибке указано следующее:
Служба AVTransport может не работать с 701 в некоторых случаях, если она не может выполнить переход состояния, о котором вы просили (например, если вы пытаетесь Pause()
в то время как STOPPED
). В документе с описанием услуги AVTransport перечислены все случаи, когда 701 может произойти, но, конечно, ваш Samsung может вернуть его и в совершенно других ситуациях:/
Я не вижу, что в вашем коде может вызвать что-то, описанное выше, но я предлагаю попытаться отслеживать TransportState службы непосредственно перед вызовом, который завершается с ошибкой 701: я предполагаю, что служба по-прежнему, например, TRANSITIONING
и не будет принимать команды, пока не STOPPED
или же PLAYING
,