Пример Android-приложения с двумя плеерами
Данный пример показывает, как отобразить в одном приложении более одного плеера, каждый из которых может играть свой видеопоток.
Работа с кодом примера
Для разбора кода возьмем класс TwoPlayersActivity.java примера 2players, который доступен для скачивания в соответствующей сборке 1.0.1.38.
...
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
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(); |
...