串流
ArctosLinks.Media
提供了一套 API 來管理與控制串流畫面的渲染操作。
設定串流視圖位置
!!! info inline end "畫面佈局" 串流畫面的佈局由會議室的更換模板功能設定,注意僅能在會議進行時,由會議室主持人使用。 功能:設定串流視圖的位置,根據指定的 UIView 和其所屬的 UIViewController 進行配置。操作會啟動視訊串流和揚聲器。
參數:
- view: 串流視圖所錨定的 UIView。
- viewController: 管理串流視圖錨定的 UIView 之 UIViewController。
返回值:如果成功設定則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
import UIKit
func activateRenderer() {
ArctosLinks.Media.setStreaming(on: streamView, in: self)
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//init UI ...
lifecycleScope.launch {
initArctosLinksMediaManager()
}
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
//init UI ...
runCatching {
ArctosLinks.getInstance(Context).mediaManager.updateCameraRotation().getOrThrow()
}.onFailure {
Log.d(TAG, "updateCameraRotation: ${it.message}")
}
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) {
runCatching {
ArctosLinks.getInstance(Context).mediaManager.setGlSurfaceView(binding.surfaceView).getOrThrow()
}.onFailure {
Log.d(TAG, "setGlSurfaceView Failed ${it.message}: ")
}
runCatching {
ArctosLinks.getInstance(Context).mediaManager.setWhiteBoardView(binding.whiteboard).getOrThrow()
}.onFailure {
Log.d(TAG, "setWhiteBoardView Failed ${it.message}: ")
}
}
}
private suspend fun initArctosLinksMediaManager() {
runCatching {
ArctosLinks.getInstance(Context).mediaManager.initMedia(
context = Context,
lifecycleOwner = viewLifecycleOwner
).onSuccess {
Log.d(TAG, "initMedia success")
runCatching {
ArctosLinks.getInstance(Context).mediaManager.setGlSurfaceView(binding.surfaceView).getOrThrow()
}.onFailure {
Log.d(TAG, "setGlSurfaceView Failed ${it.message}: ")
}
runCatching {
ArctosLinks.getInstance(Context).mediaManager.setWhiteBoardView(binding.whiteboard).getOrThrow()
}.onFailure {
Log.d(TAG, "setWhiteBoardView Failed ${it.message}: ")
}
}.onFailure {
Log.d(TAG, "initMedia failed")
}
}
}
c++
#include "arctos_qt.h"
void setLayout(int layout_id /*1 - 4*/) {
auto& arctos_app = arctos::ArctosQt::getInstance();
arctos_app.media()->setTemplate(layout_id);
}
釋放多媒體資源
功能:停止串流、停止語音播放、停止麥克風收錄聲音、停止相機偵測影像並釋放資源。
返回值:如果成功釋放資源則完成,若是使用時發生例外狀況,則返回錯誤。
Swift
import ArctosLinks
func releaseMediaSources() {
ArctosLinks.Media.release()
}
Kotlin
import com.arctos.sdk.links.core.application.ArctosLinks
private fun releaseMediaSource() {
runCatching {
ArctosLinks.getInstance(Context).mediaManager.releaseMedia().getOrThrow()
}.onFailure {
Log.d(TAG, "release MediaSource: ${it.message}")
}
}
c++
#include "arctos_qt.h"
void releaseMediaSources() {
arctos_app.media()->stop();
}