跳轉到

外部來源

ArctosLinks.Media 提供了一套 API 來接收外部來源的影像與聲音資料,包含獲取當前媒體輸入源、 切換媒體輸入源、傳入外部影像資料、以及傳入外部聲音資料。

獲取當前媒體輸入源

功能:取得當前媒體輸入源,來自 SDK 內部或外部

返回值:當前媒體輸入源,若是使用時發生例外狀況,則返回錯誤。

import ArctosLinks

ArctosLinks.Media.getMediaInputSource { result in
    switch result {
    case .success(let inputSource):
        dump(inputSource, name: "InputSource")
    case .failure(let error):
        print(error.localizedDescription)
    }
}
import com.arctos.sdk.links.core.application.ArctosLinks

fun getCurrentInputSource(){
    ArctosLinks.getInstance(context).mediaManager.getCurrentInputSource { input ->
     ...
    }
}

設定媒體輸入源

功能:設定媒體輸入源

參數:

返回值:設定後的媒體輸入源,若是使用時發生例外狀況,則返回錯誤。

傳入外部影像資料

功能:傳入外部影像資料

  • iOS:影像格式為 CIImage

  • Android:影像格式為 Y、U、V,其中各自的參數:

    • width:影像的寬,格式為整數

    • height:影像的高,格式為整數

    • y:Y plane 的資料,格式為 ByteArray

    • u:U plane 的資料,格式為 ByteArray

    • v:V plane 的資料,格式為 ByteArray

    • 返回值:若是使用時發生例外狀況,則返回錯誤。

import ArctosLinks

ArctosLinks.Media.switchMediaInputSource(to: InputSource) { result in
    switch result {
    case .success():
        print("Successfully.")
    case .failure(let error):
        print("Failed. error = \(error.localizedDescription).")
    }
}
import com.arctos.sdk.links.core.application.ArctosLinks

suspend fun setMediaInputSource(inputSource: InputSource, context: Context, lifecycleOwner: LifecycleOwner) {
    runCatching {
        withContext(Dispatchers.Main) {
            ArctosLinks.getInstance(context).mediaManager.setMediaInputSource(InputSource.SDK, context, lifecycleOwner)
                .onSuccess { input ->
                    ...
                }
                .onFailure {
                    ...
                }
        }
    }
}

傳入外部聲音資料

功能:傳入外部聲音資料

  • iOS:聲音格式為 AVAudioPCMBuffer

  • Android:聲音格式為 PCM,聲音參數為:

    • pcm: PCM 資料,格式為 ShortArray

    • channel: 聲道數,格式為整數

    • sampleRate: 聲音採樣率,格式為整數

    • 返回值:若是使用時發生例外狀況,則返回錯誤。

import ArctosLinks

let audioBuffer: AVAudioPCMBuffer = ... // Generate your AVAudioPCMBuffer.
ArctosLinks.Media.sendAudioInput(audioPCMBuffer: audioBuffer) { result in
    switch result {
    case .success():
        print("Audio input sent successfully.")
    case .failure(let error):
        print("Failed to send audio input. Error: \(error.localizedDescription)")
    }
}
import com.arctos.sdk.links.core.application.ArctosLinks

fun sendExternalAudioData(pcm: ShortArray, channel: Int, sampleRate: Int) {
    ArctosLinks.getInstance(context).mediaManager.sendExternalAudioData(pcm, channel, sampleRate)
}

類型

枚舉類別

媒體輸入源 (InputSource)

功能:用於列舉變更媒體輸入源時,可以選擇的來源

  • iOS:格式為 enum InputSource,其成員包含:

    • thisDevice

    • others

  • Andorid:格式為 enum InputSource,其成員包含:

    • SDK

    • EXTERNAL

enum InputSource {
    case thisDevice
    case others
}
enum class InputSource() {
    SDK,
    EXTERNAL
}