Swift
スクリーンキャプチャーの作成
Vonage SDK は、以下の規格に準拠したカスタムビデオキャプチャを想定しています。 OTVideoCapture.新しいファイルを作成する ScreenCapturer.swift そして実行する:
- キャプチャするビューへの参照を保存する - 私たちのアプリがSwiftUIでセットアップされているとしても、最も簡単な方法は
UIViewを使うこともできる。UIViewRepresentableラッパー - ビューを定期的にレンダリングする - 使用
drawHierarchy(in:afterScreenUpdates:). - に変換する。
CVPixelBuffer/OTVideoFrame- にフレームを渡す。videoCaptureConsumer.
景色を捉える
import Foundation
import UIKit
import OpenTok
class ScreenCapturer: NSObject, OTVideoCapture {
var videoContentHint: OTVideoContentHint
var videoCaptureConsumer: OTVideoCaptureConsumer?
private let captureView: UIView
private let captureQueue = DispatchQueue(label: "screen-capture")
private var timer: DispatchSourceTimer
private var capturing = false
private var videoFrame: OTVideoFrame
private var pixelBuffer: CVPixelBuffer?
init(withView view: UIView) {
self.videoContentHint = .none
self.captureView = view
self.timer = DispatchSource.makeTimerSource(flags: .strict, queue: captureQueue)
self.videoFrame = OTVideoFrame(format: OTVideoFormat(argbWithWidth: 0, height: 0))
}
private func captureFrame() -> UIImage {
UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, false, 0)
defer { UIGraphicsEndImageContext() }
captureView.drawHierarchy(in: captureView.bounds, afterScreenUpdates: false)
return UIGraphicsGetImageFromCurrentImageContext() ?? UIImage()
}
// Implement initCapture, start, stop, releaseCapture, isCaptureStarted, captureSettings
// and feed frames to videoCaptureConsumer. See ScreenCapturer.swift for full implementation.
}
全文をコピーする ScreenCapturer.swift このサンプルプロジェクトからの実装です。これは、次のような処理を行います:
- 10fpsでのタイマー・ベース・キャプチャー
- エンコーダ互換性のためのリサイズとパディング
CVPixelBuffer創造とOTVideoFrame配達
画面共有
Vonage Video APIプラットフォームを使用して画面共有機能を実装する方法をご紹介します。
手順
1
はじめに2
はじめに3
新規プロジェクトの作成4
Vonage Video SDKの追加5
認証の設定6
スクリーンキャプチャーの作成7
フルスクリーンキャプチャのためのルートビューの公開8
フルスクリーンキャプチャのためのルートビューの公開9
概要10
結論