ScreenCaptureSettings

public struct ScreenCaptureSettings

画面キャプチャの設定です。

  • 送信する映像フレームレートの目標値です。 固定レートではなく上限値となります。また高負荷時はレートを下回る可能性があります。 1 以上を指定します。入力フレームが高頻度な場合は古いフレームを間引きます。 指定できる最大値は 120 です。これより大きな値は 120 に丸められます。 既定値は 15 です。

    フレーム送信間隔は PTS に依存して変動します。

    間引きの判定は SDK 内部の送信キュー上で行います。間引かれなかった frame が SDK 内部の 滞留上限で破棄された場合も、送信記録は内部の受理直前に行われるため、間引きの基準としては 残ります。

    Declaration

    Swift

    public var targetFPS: Int
  • 映像フレーム送信前に CMSampleBuffer を加工するためのクロージャーです。 nil を返すと該当フレームを破棄します。

    このクロージャーは SDK 内部の送信キュー (sendVideoFrameQueue) 上で呼ばれます。 targetFPS による間引きで破棄されるフレームと、送信処理中のために破棄されるフレーム、 キャプチャ停止中と切断中のフレームでは呼ばれません。送信キューへ投入された後でも、 capture ID の照合 (停止・再開始の競合) と VideoFrame への変換に失敗した場合は 破棄されるため、呼ばれたフレームが必ず送信されるわけではありません。

    引数の CMSampleBuffer と戻り値の CMSampleBuffer の所有権は SDK に委ねられます。 戻り値の buffer が保持する pixel buffer は SDK が送信のために retain するため、 利用側で解放や再利用の同期を行う必要はありません。戻り値を返した後にその buffer を 書き換えないでください (送信中のフレームが変更されると映像が壊れます)。

    MediaStream.send(videoFrame:) の ingress はこのクロージャーの後に実行されます。 以降の処理 (VideoFilter の実行と RTCVideoSource への配送) は frame ごとの直列 executor 上で行われます。

    Declaration

    Swift

    public var videoSampleBufferTransformer: ((CMSampleBuffer) -> CMSampleBuffer?)?
  • 画面キャプチャ実行中に発生したエラー通知コールバックです。 通知専用のため、このコールバック呼び出しではキャプチャ停止を行いません。 停止が必要な場合は利用側で MediaChannel.stopScreenCapture() を呼び出してください。

    Declaration

    Swift

    public var onRuntimeError: ((Error) -> Void)?
  • 初期化します。

    Declaration

    Swift

    public init(
      targetFPS: Int = 15,
      videoSampleBufferTransformer: ((CMSampleBuffer) -> CMSampleBuffer?)? = nil,
      onRuntimeError: ((Error) -> Void)? = nil
    )

    Parameters

    targetFPS

    送信する映像フレームレートの目標値

    videoSampleBufferTransformer

    映像フレーム送信前の加工処理

    onRuntimeError

    画面キャプチャ実行中エラーの通知コールバック