Table of Contents |
---|
Пример iOS-приложения для управления медиа-устройствами
Данный пример может использоваться как стример для публикации WebRTC-видеопотока с Web Call Server и позволяет выбрать медиа-устройства и следующие параметры для публикуемого и проигрываемого видео
...
а вид с настройками воспроизведения - при нажатии на кнопку 'Remote settings'.
Работа с кодом примера
Для разбора кода возьмем версию примера MediaDevices Swift, которая доступна для скачивания на GitHub.
...
Code Block | ||||
---|---|---|---|---|
| ||||
func toMediaConstraints() -> FPWCSApi2MediaConstraints { let ret = FPWCSApi2MediaConstraints() if (self.audioSend.isOn) { let audio = FPWCSApi2AudioConstraints() audio.useFEC = audioFEC.isOn audio.useStereo = audioStereo.isOn audio.bitrate = Int(audioBitrate.text ?? "0") ?? 0 ret.audio = audio } if (self.videoSend.isOn) { let video = FPWCSApi2VideoConstraints() for device in localDevices!.video { if ((device as AnyObject).label == camera.text) { video.deviceID = (device as AnyObject).deviceID; } } video.minWidth = Int(videoWidth.text ?? "0") ?? 0 video.maxWidth = video.minWidth video.minHeight = Int(videoHeight.text ?? "0") ?? 0 video.maxHeight = video.minHeight video.minFrameRate = Int(videoFPS.text ?? "0") ?? 0 video.maxFrameRate = video.minFrameRate video.bitrateminBitrate = Int(videoBitratevideoMinBitrate.text ?? "0") ?? 0 video.maxBitrate = Int(videoMaxBitrate.text ?? "0") ?? 0 ret.video = video; } return ret; } |
...
- options.name - имя публикуемого потока
- options.display - вид для локального отображения
- options.constraints - параметры аудио и видео
- options.stripCodecs - массив кодеков, которые должны быть исключены из SDP при публикациипроигрывании
- options.transport - используемый WebRTC транспорт
...
10. Остановка воспроизведения потока.
WCSStream.stop code
Code Block | ||||
---|---|---|---|---|
| ||||
@IBAction func playPressed(_ sender: Any) { changeViewState(playButton,false) if (playButton.title(for: .normal) == "PLAY") { ... } else{ do { try playStream?.stop(); } catch { print(error); } } } |
11. Остановка публикации потока.
WCSStream.stop code
Code Block | ||||
---|---|---|---|---|
| ||||
@IBAction func publishPressed(_ sender: Any) { changeViewState(publishButton,false) if (publishButton.title(for: .normal) == "PUBLISH") { ... } else { do { try publishStream?.stop(); } catch { print(error); } } } |