本文にスキップする
Version: 7.0

ビデオモディファイアー

ビデオモディファイアー機能を使用すると、ビデオ送信前にローカルビデオフレームを修正できます。この機能により、アプリケーションはリアルタイムエフェクト、フィルター、または変換を送信ビデオストリームに適用できます。

対応する通話タイプSDKの最低バージョン
1対1通話、グループ通話(カンファレンス)PlanetKit 7.0
Note
  • ビデオモディファイアーは、カメラでキャプチャーしたローカルビデオにのみ適用されます。
  • ビデオ修正処理時にフレームのドロップや画質低下を防ぐため、演算コストと遅延時間を最小限に抑える必要があります。

活用事例

ビデオモディファイアーの主な活用例は次のとおりです。

  • リアルタイムのビデオエフェクトとフィルター
  • ビューティーフィルターと顔補正
  • 色補正と調整

実装段階

ビデオモディファイアー機能を実装するには、次の手順に従います。

ビデオモディファイアーの実装

ビデオフレームを編集するために、PlanetKitVideoInterceptorインターフェースを実装するクラスを作成します。

import com.linecorp.planetkit.video.PlanetKitVideoInterceptor
import com.linecorp.planetkit.video.PlanetKitVideoFrameData

class VideoModifier : PlanetKitVideoInterceptor() {
override fun onFrameIntercept(data: PlanetKitVideoFrameData): PlanetKitVideoFrameData? {
// Access video frame properties
val width = data.width // Int: frame width in pixels
val height = data.height // Int: frame height in pixels
val format = data.format // PlanetKitVideoSourceFormat: frame format
val rotation = data.rotation // PlanetKitVideoRotation: rotation angle
val timestamp = data.timestamp // Long: timestamp in nanoseconds
val buffer = data.buffer // ByteBuffer: video frame data
val size = data.size // Int: size in bytes
val isMirrored = data.isMirrored // Boolean: whether frame is horizontally flipped

// Process the frame and apply your effects
// You can either:
// 1. Process synchronously: Modify the frame and return it
// 2. Process asynchronously: Return null and call onFrameProcessedListener later

// Example: Apply your custom effect synchronously
applyVideoEffect(buffer, width, height, format)

// Return the modified frame for synchronous processing
// Return null if processing asynchronously (must set onFrameProcessedListener)
return data
}

private fun applyVideoEffect(
buffer: ByteBuffer,
width: Int,
height: Int,
format: PlanetKitVideoSourceFormat
) {
// Implement your video effect logic here
// Note: This runs on the camera capture thread, keep processing lightweight
}
}

ビデオモディファイアーの設定

ビデオフレームの編集を開始するには、カメラマネージャーにモディファイアを登録します。

// Get camera manager instance
val cameraManager = PlanetKit.getCameraManager()

// Create and set the modifier
val videoModifier = VideoModifier()
cameraManager.setVideoSourceInterceptor(videoModifier)

ビデオモディファイアーの解除

ビデオフレームの編集を停止するには、モディファイアの登録を解除します。

val cameraManager = PlanetKit.getCameraManager()

// Clear the modifier by passing null
cameraManager.setVideoSourceInterceptor(null)

関連API

ビデオモディファイアー機能とこれに関連するAPIは以下のとおりです。