📹
Agora.ioで配信する映像のカメラを切り替える
はじめに
この記事は、Agora.ioで配信する映像のカメラを切り替える方法を個人的な備忘録としてまとめたものです。
Agora.ioバージョン6.xの話になります。アップデートおよび仕様変更によって将来的にこの手順が使用できなくなる可能性があります。(記.2023/12/07)
補足
この記事はFlutterでの実装例を含みますが、それ以外の言語でもドキュメントを読む限りではそんなに変わらないと思います。
方法1
RtcEngine
クラスのswitchCamera
メソッドを使用する。これはカメラが有効になっているときしか使用できないことに注意。また、AndroidとiOS以外では使えない。
公式ドキュメントに書かれている注意点のコピペ
- This method is for Android and iOS only.
- This method must be called after the camera is successfully enabled, that is, after the SDK triggers the
onLocalVideoStateChanged
callback and returns the local video state aslocalVideoStreamStateCapturing(1)
.
RtcEngine agoraEngine = createAgoraRtcEngine();
// 略...
agoraEngine.switchCamera();
// 略...
方法2
setCameraCapturerConfiguration
というメソッドがあるので、これを使用すればカメラの詳細設定を弄ることができる。configの詳細はここ。これもAndroidとiOS以外では使えない。
この実装例では様々な設定のカメラを後々実装することになるかもしれないと考え、CameraType
というenum型を独自で実装している。
公式ドキュメントに書かれている注意点のコピペ
- This method is for Android and iOS only.
- This method must be called after the camera is turned on, such as calling after
startPreview
andenableVideo
.
import 'package:agora_rtc_engine/agora_rtc_engine.dart';
enum CameraType {
cameraRear,
cameraFront,
}
Future<CameraType> switchCameraType(RtcEngine agoraEngine, CameraType type) async {
// switch camera type
switch(type) {
case CameraType.cameraRear:
type = CameraType.cameraFront;
case CameraType.cameraFront:
type = CameraType.cameraRear;
}
if (type == CameraType.cameraRear) {
await agoraEngine.setCameraCapturerConfiguration(
const CameraCapturerConfiguration(
cameraDirection: CameraDirection.cameraRear
)
);
}
if (type == CameraType.cameraFront) {
await agoraEngine.setCameraCapturerConfiguration(
const CameraCapturerConfiguration(
cameraDirection: CameraDirection.cameraFront
)
);
}
return type;
}
Discussion