Пример Android-приложения для записи видеопотока
Данный пример может использоваться с Web Call Server для публикации и записи WebRTC-видеопотока.
...
- ссылка для скачивания записи потока
- медиа-плеер, в котором можно воспроизвести запись
Работа с кодом примера
Для разбора кода возьмем класс StreamRecordingActivity.java примера stream-recording, который доступен для скачивания в соответствующей сборке 1.0.1.38.
...
Code Block | ||||
---|---|---|---|---|
| ||||
@Override public void onConnected(final Connection connection) { runOnUiThread(new Runnable() { @Override public void run() { mStartButton.setText(R.string.action_stop); mStartButton.setTag(R.string.action_stop); mStartButton.setEnabled(true); mStatusView.setText(connection.getStatus()); /** * The options for the stream to publish are set. * The stream name is passed when StreamOptions object is created. * To enable stream recording, option 'record' is set to 'true' with method StreamOptions.setRecord(). */ StreamOptions streamOptions = new StreamOptions(streamName); streamOptions.setRecord(true); /** * Stream is created with method Session.createStream(). */ publishStream = session.createStream(streamOptions); /** * Callback function for stream status change is added to display the status. */ publishStream.on(new StreamStatusEvent() { @Override public void onStreamStatus(final Stream stream, final StreamStatus streamStatus) { runOnUiThread(new Runnable() { @Override public void run() { if (StreamStatus.PUBLISHING.equals(streamStatus)) { mStatusView.setText("RECORDING"); /** * Filename of the recording is determined. */ recordFilename = stream.getRecordName(); return; } else if (StreamStatus.FAILED.equals(streamStatus)) { Log.e(TAG, "Can not publish stream " + stream.getName() + " " + streamStatus); recordFilename = null; } mStatusView.setText(streamStatus.toString()); } }); } }); ActivityCompat.requestPermissions(StreamRecordingActivity.this, new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA}, PUBLISH_REQUEST_CODE); } }); } |
5. Создание видеопотока и подготовка к публикации.
...