1

Chromecast を使用してオンライン ビデオの再生をテストしています。その後onRouteSelected()、ApplicationSession を作成し、MediaProtocalMessageStream をアタッチします。

次にmSession.startSession();、APP_ID なしで呼び出したので、chromecast 内の組み込みアプリがビデオを再生すると想定しています。このコードは完璧に機能し、独自のレシーバーを作成しなくても、オンライン mp4 ビデオを再生できます。

しかし、ビデオ再生アプリを離れようとすると、もう戻ることができず、常に次のようなエラーメッセージが表示さonSessionStartFailed()れます

StartSessionTask がエラーで失敗しました: アプリケーションの起動に失敗しました: アプリケーションが実行されていません

数日間離れていないビデオ再生アプリに初めてアクセスしたときのことを覚えていません。

しかし、私はそれを残す方法を知っています.Sessionを再び開始できなくなる前に私がしたことは次のとおりです。

  1. Youtubeアプリを開き、デバイスを接続します
  2. ユーチューブの動画を再生して
  3. クロムキャストから切断された後、クロムキャストは開始ページに戻ります

それで、ここで何が起こっているのか誰も知りませんか?ビルトインビデオアプリを再度開くには?

ところで、スタート ページに戻った直後に私の chromecast はシステム アップデートを取得します。

以下は、startSession を実行して mediaStream をアタッチするコードです。

mSession = new ApplicationSession(mCastContext, mSelectedDevice);
ApplicationSession.Listener listener = new ApplicationSession.Listener() {
    @Override
    public void onSessionStarted(ApplicationMetadata appMetadata) {
        mChannel = mSession.getChannel();
        mStream = new MediaProtocolMessageStream();
        mChannel.attachMessageStream(mStream);
        if (mStream.getPlayerState() == null) {
            ContentMetadata metaData = new ContentMetadata();
            metaData.setTitle("Test Video");
            String url = "http://www.auby.no/files/video_tests/h264_720p_hp_5.1_6mbps_ac3_planet.mp4";
            try {
                mCommand = mStream.loadMedia(url, metaData, true);
                mCommand.setListener(new MediaProtocolCommand.Listener() {
                    @Override
                    public void onCompleted(MediaProtocolCommand arg0) {
                        onSetVolume(0.5);
                    }

                    @Override
                    public void onCancelled(MediaProtocolCommand arg0) {

                    }
                });
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onSessionStartFailed(SessionError error) {
        Log.d("TEST", "Session Started failed");
    }

    @Override
    public void onSessionEnded(SessionError error) {
        Log.d("TEST", "Session Started end");
    }
};
mSession.setListener(listener);
try {
    mSession.startSession();
} catch (IllegalStateException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}
4

1 に答える 1

1

独自のアプリ ID と独自のレシーバーを使用する必要があります。Google のデフォルト レシーバーは、ビデオ ストリームを再生しなくなりました (以前は再生していました)。現在、Chrome タブのミラーリングのみを処理します。

于 2013-08-27T12:18:32.513 に答える