0

私は iOS 開発者です。現在、DLNA/UPNP iOS アプリケーションを開発しています。私の目標は、ミドルウェアなしで iPhone から Samsung スマート TV にビデオを直接キャストすることです。そのために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>
4

1 に答える 1

0

エラー メッセージは、一部のビデオが再生されないことに関連している可能性は低いですが (コーデックの非互換性が原因であると思われます)、エラー メッセージは次のとおりです。

AVTransport サービスは、要求された状態遷移を実行できない場合 (たとえばPause()whileしようとした場合STOPPED)、いくつかのケースで 701 で失敗することがあります。AVTransport サービス定義ドキュメントには、701 が発生する可能性のあるすべてのケースがリストされていますが、もちろん、Samsung はまったく異なる状況でもそれを返している可能性があります:/

あなたのコードの何が上記の何かを引き起こす可能性があるのか​​ わかりませんが、701で失敗する呼び出しの直前にサービスのTransportStateを監視することをお勧めします:私の推測では、サービスはまだeg TRANSITIONINGであり、コマンドを受け取らない.STOPPEDまたはになるまでPLAYING

于 2016-06-11T15:02:27.783 に答える