Tencent CloudのTRTCは、Androidシステムでの画面共有をサポートしており、現在のシステムの画面コンテンツは、TRTC SDKを介してルーム内の他のユーザーと共有されます。この機能については、次のような2つの注意点があります。
iOS | Android | Mac OS | Windows | Electron | Chromeブラウザ |
---|---|---|---|---|---|
✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Androidデバイスでの画面共有は、TRTCCloud
のstartScreenCapture()インターフェースを呼び出すだけで開始することができます。ただし、明瞭で安定した共有効果を実現するには、次の3つの点に注意する必要があります。
次のactivityをmanifestファイルに貼り付けます(項目コードに存在する場合は追加する必要はありません)。
<activity
android:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity"
android:theme="@android:style/Theme.Translucent"/>
startScreenCapture()で最初のパラメータencParams
を設定することにより、画面共有のエンコード品質を指定することができます。encParams
をnullに指定した場合、SDKは以前に設定されたエンコードパラメータを自動的に使用します。推奨されるパラメータの設定は、次のとおりです。
パラメータ項目 | パラメータ名 | 通常の推奨値 | テキスト教育シナリオ |
---|---|---|---|
解像度 | videoResolution | 1280 × 720 | 1920 × 1080 |
フレームレート | videoFps | 10 FPS | 8 FPS |
最高ビットレート | videoBitrate | 1600 kbps | 2000 kbps |
解像度アダプティブ | enableAdjustRes | NO | NO |
Android 7.0以降のシステムから、バックグラウンドで実行されている通常のアプリプロセスに切り替わりますが、CPUのアクティビティがある場合、常にシステムによって強制終了されやすくなります。従って、アプリをバックグラウンドに切り替えてサイレントで画面共有すると、フローティングウィンドウのポップアップというソリューションによって強制終了を回避することができます。また、携帯電話の画面にフローティングウィンドウを表示することは、ユーザーが今、画面共有を行っていることをユーザーに知らせ、プライバシー情報の漏えい防止につながります。
public void showView(View view, int width, int height) {
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
//TYPE_TOASTは、4.4以降のシステムにのみ適用できます。下位バージョンをサポートするには、TYPE_SYSTEM_ALERTを使用します(manifestで権限を宣言する必要があります)
//7.1(7.1を含む)以降のシステムは、TYPE_TOASTに対して制限を設けています
int type = WindowManager.LayoutParams.TYPE_TOAST;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
type = WindowManager.LayoutParams.TYPE_PHONE;
}
mLayoutParams = new WindowManager.LayoutParams(type);
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mLayoutParams.flags |= WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
mLayoutParams.width = width;
mLayoutParams.height = height;
mLayoutParams.format = PixelFormat.TRANSLUCENT;
mWindowManager.addView(view, mLayoutParams);
}
Mac / Windows画面共有の確認
ルームにいるMac / Windowsユーザーが画面共有を起動し、サブストリームを介して共有を実行します。ルームにいるその他ユーザーはTRTCCloudDelegate中のonUserSubStreamAvailableイベントを介してこの通知を受け取ります。
画面共有を確認したいユーザーはstartRemoteSubStreamViewインターフェースを介してリモートユーザーのサブストリーム画面のレンダリングを起動することができます。
Android/iOS画面共有の確認
ユーザーがAndroid/iOSを介して画面共有を実行する場合は、メインストリームを介して共有を実行することができます。ルームにいるその他のユーザーは、TRTCCloudListener内のonUserVideoAvailableイベントを介してこの通知を受け取ります。
画面共有を確認したいユーザーはstartRemoteViewインターフェースを介して、リモートユーザーのメインストリーム画面のレンダリングを起動することができます。
//サンプルコード:画面共有の画面を見る
@Override
public void onUserSubStreamAvailable(String userId, boolean available) {
startRemoteSubStreamView(userId);
}
1つのルームで同時にいくつの画面を共有できますか。
現在、1つの TRTC オーディオ・ビデオルームで共有できる画面は1つだけです。
この記事はお役に立ちましたか?