Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Пример Android-приложения с двумя плеерами

Данный пример показывает, как отобразить в одном приложении более одного плеера, каждый из которых может играть свой видеопоток.

Работа с кодом примера

Для разбора кода возьмем класс TwoPlayersActivity.java примера 2players, который доступен для скачивания в соответствующей сборке 1.0.1.38.

...

Code Block
languagejs
themeRDark
StreamOptions streamOptions = new StreamOptions(mPlay1StreamView.getText().toString());
streamOptions.setRenderer(remote1Render);

/**
  * Stream is created with method Session.createStream().
  */
play1Stream = session.createStream(streamOptions);

/**
  * Callback function for stream status change is added to make appropriate changes in controls of the interface when stream is being played.
  */
play1Stream.on(new StreamStatusEvent() {
    @Override
    public void onStreamStatus(final Stream stream, final StreamStatus streamStatus) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (StreamStatus.PLAYING.equals(streamStatus)) {
                    mPlay1Button.setText(R.string.action_stop);
                    mPlay1Button.setTag(R.string.action_stop);
                } else if (StreamStatus.NOT_ENOUGH_BANDWIDTH.equals(streamStatus)) {
                    Log.w(TAG, "Not enough bandwidth stream " + stream.getName() + ", consider using lower video resolution or bitrate. " +
                          "Bandwidth " + (Math.round(stream.getNetworkBandwidth() / 1000)) + " " +
                          "bitrate " + (Math.round(stream.getRemoteBitrate() / 1000)));
                } else {
                    mPlay1Button.setText(R.string.action_play);
                    mPlay1Button.setTag(R.string.action_play);
                }
                mPlay1Button.setEnabled(true);
                mPlay1Status.setText(streamStatus.toString());
            }
        });
    }
});

/**
  * Method Stream.play() is called to start playback of the stream.
  */
play1Stream.play();

...

Code Block
languagejs
themeRDark
StreamOptions streamOptions = new StreamOptions(mPlay2StreamView.getText().toString());
streamOptions.setRenderer(remote2Render);

/**
  * Stream is created with method Session.createStream().
  */
play2Stream = session.createStream(streamOptions);

/**
  * Callback function for stream status change is added to make appropriate changes in controls of the interface when stream is being played.
  */
play2Stream.on(new StreamStatusEvent() {
    @Override
    public void onStreamStatus(final Stream stream, final StreamStatus streamStatus) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (StreamStatus.PLAYING.equals(streamStatus)) {
                    mPlay2Button.setText(R.string.action_stop);
                    mPlay2Button.setTag(R.string.action_stop);
                } else if (StreamStatus.NOT_ENOUGH_BANDWIDTH.equals(streamStatus)) {
                    Log.w(TAG, "Not enough bandwidth stream " + stream.getName() + ", consider using lower video resolution or bitrate. " +
                          "Bandwidth " + (Math.round(stream.getNetworkBandwidth() / 1000)) + " " +
                          "bitrate " + (Math.round(stream.getRemoteBitrate() / 1000)));
                } else {
                    mPlay2Button.setText(R.string.action_play);
                    mPlay2Button.setTag(R.string.action_play);
                }
                mPlay2Button.setEnabled(true);
                mPlay2Status.setText(streamStatus.toString());
            }
        });
    }
});

/**
  * Method Stream.play() is called to start playback of the stream.
  */
play2Stream.play();

...