に、FFmpeg を使ったときのサンプルがあり、それによると Discord.Net 側は PCM signed 16-bit little-endian を前提にしているようです。, とおなじところに置いてください。Visual Studio のプロジェクトに入れて、出力ディレクトリにコピーするようにすると楽です。libsodium.dll と Opus.dll も同じようにすると楽です。, にしたがって、ライブラリを導入する必要があります。その際、64bit 向けの dll のため、C# のプロジェクトを 64bit 向けにする必要があります。また、.Net Core (Standard) には CSCore.Ffmpeg が対応していないため、.Net Framework を使う必要があります。. 実機が1台しかない場合は、JavaScript SDKで実装したWebアプリケーションとの相互接続で動作を確認することができます。, skyway.aarはGitHub's Releases ここで設定している項目の説明は以下のとおりです。, Navigatorクラスの初期化を行い、getUserMediaメソッドの引数にconstraintsを指定して実行することで、自分のカメラ映像(ローカルストリーム)が取得できます。 この時に、自分自身の_localStreamをセットすると、相手にカメラ映像・マイク音声を送信することができるようになります。
Peerオブジェクトには、PeerOptionクラスを利用し、APIキー、ドメイン名、デバッグレベルを指定してください。, Peerオブジェクトで指定可能なその他のオプションについては、APIリファレンス をご覧ください。, SkyWayのシグナリングサーバと接続し、利用する準備が整ったら発火します。 PeerIDはクライアントサイドで指定することもできます。 からダウンロードできます。 相手のPeerID、自分自身のlocalStreamを引数にセットし発信します。
", // Set callbacks for MediaConnection.MediaEvents. switchCameraメソッドで、該当メディアストリームで利用しているカメラ位置をFRONT、BACKで交互に切り替えます。, 実機でビルドし動作を確認してください。listAllPeersで取得したPeerIDに対して発信し、相手とビデオ通話ができれば成功です。 発信時の処理と同じくsetMediaCallbacksを実行し、イベントをセットします。中身については後ほど説明します。, MediaConnectionオブジェクトに必要なイベントコールバックです。 MediaConnection.MediaEventEnum.STREAMは相手のカメラ映像・マイク音声を受信した際に発火します。
Androidデバイス用アプリケーションにSkyWayを実装するためのSDKです。, Android SDKの基本機能を利用して、1:1のシンプルなビデオ通話アプリを作成することで、Android SDKの使い方について理解を深めます。 SkyWayCのすべての処理はこのイベント発火後に利用できるようになります。 以下の処理では、PeerIDが発行されたら、その情報をUIに表示する処理を行っています。, openイベントのコールバック内に、カメラ映像とマイク音声を取得するための処理を追記してください。, カメラ、マイクにアクセスするための権限があるかどうかのチェックを行い、無ければ権限を要求します。 取得したMediaStreamオブジェクトに、addVideoRendererメソッドを利用して、ビデオレンダラー(表示用のCanvasオブジェクト)を割り当てます。, 何らかのエラーが発生した場合に発火します。エラーが発生したら、ログにその内容を表示できるようにします。, Peer(相手)との接続が切れた際に発火します。チュートリアルでは特に処理は行いません。, シグナリングサーバとの接続が切れた際に発火します。チュートリアルでは特に処理は行いません。, Make Callボタンをタップし未接続状態であれば、showPeerIDsメソッドを実行します。, showPeerIDsメソッドでは、listAllPeersメソッドを利用して、接続先のPeerID一覧を取得します。
発信後は必要なイベントコールバックをセットします。setMediaCallbacksの中身については後ほど説明します。, actionButton(Make Callボタン)をタップし接続中であれば、MediaConnectionオブジェクトのCloseメソッドで該当するMediaConnectionを切断し、後ほど説明するcloseRemoteStreamで必要な処理を行います。, MediaConnectionオブジェクトのCloseメソッドが実行された後は、removeVideoRendererメソッドを利用して該当のMediaStreamに割り当てられた、ビデオレンダラーを取り外します。, 相手から接続要求がきた場合に応答します。 引数として相手との接続を管理するためのMediaConnectionオブジェクトが取得できるため、answerメソッドを実行し接続要求に応答します。 Twilio APIの実際の使い方をサンプルで簡単に紹介します。 たった4行で電話が作れるAPI「Twilio」とは? エンジニアの視点からその魅力を紹介します。 その後、skyway.aar を examples/{project_name}/app/libs ディレクトリ直下に移動します。, Android Studioから {project_name} を開きます。 line(ライン)無料通話の電話発信方法 / 応答方法についてご紹介いたします。お困りごとはjcomサポート!j:comが提供するサービスの総合サポートサイトです。 Voice data sent to discord should be encoded with Opus, using two channels (stereo) and a sample rate of 48kHz.. だそうです。48kHz のステレオのデータを Opus でエンコードして送ってあげる必要があります。
, using two channels (stereo) and a sample rate of 48kHz.
コールバック内では、UI上の接続ステータスのアップデート処理と、取得した相手のMediaStreamオブジェクトにaddVideoRendererメソッドを利用して、ビデオレンダラーを割り当てます。, SKW_MEDIACONNECTION_EVENT_CLOSEは相手がメディアコネクションの切断処理を実行し、実際に切断されたら発火します。 iOS SDK 相手から接続要求が来た場合はPeer.PeerEventEnum.CALLが発火します。 現在サーバに接続されているユーザーの一覧を表示し、通話相手を選び、1対1のビデオ通話を開始し、終了する機能、また着信を受け付ける機能を実装していきます。, このチュートリアルで作成するアプリは、サンプルコードとして提供している1対1のビデオ通話 と同じものになります。 取得した一覧から自分自身のIDを削除し、PeerListDialogFragmentで一覧表示します。, PeerListDialogFragmentでPeerIDが選択されたら、onPeerSelectedメソッドが呼ばれます。 // Set volume control stream type to WebRTC audio. エラーが発生したら、ログにその内容を表示できるようにします。, Ovverrideされたメソッドに必要な処理を追記してください。 ここで実行されている処理の概要は以下のとおりです。, unsetMediaCallbacks、unsetPeerCallbackの中身については後ほど説明します。, MediaConnectionオブジェクト、Peerオブジェクトに関するコールバックイベントの開放処理を追記してください。, UI関連の必要な処理を追記してください。 →, "android.permission.ACCESS_NETWORK_STATE", "android.permission.MODIFY_AUDIO_SETTINGS", "Failed to access the camera and microphone.\nclick allow when asked for permission. Discord Developer Portal — Documentation — Voice Connections によると.
コールバック内では、必要な切断処理を実行します。closeRemoteStream、updateActionButtonTitleの中身については後ほど説明します。, MediaConnection.MediaEventEnum.ERRORは何らかのエラーが発生した際に発火します。 PeerIDと呼ばれるクライアント識別用のIDがシグナリングサーバで発行され、コールバックイベントで取得できます。 完成したアプリを試したい場合は、ソースコードをダウンロード し、このチュートリアルのビルド手順に沿ってビルドししてください。, チュートリアルで利用するAndroid Studioのプロジェクトは以下のgithubリポジトリからダウンロードしてください。, 実機を接続しビルドします。実機での処理は途中で止まりますが、ビルドできることを確認してください。, MainActivityにプログラム中で利用する定数を追記してください。 API_KEYには先程ダッシュボードで発行したAPIキーを指定してください。 DOMAINには先程ダッシュボードで指定した利用可能ドメイン名のうち一つを指定してください。, onCreateメソッドの冒頭で、メインウィンドウのタイトルを非表示に設定し、UIスレッド処理のためのHandlerを生成する処理を追記してください。, 続けて、Peerオブジェクトを作成するための処理を追記してください。 もしボイスチャンネルを作りたければ、 message.guild.createChannel(channelName, 'voice'); となります。 詳しくは下記のページで確認してください。 Discord.jsDiscord.js is a powerful node.js module that allows you to indiscord.js.org.
【響on】の共振共鳴を通して、凸凹のいびつさを “平らに均(なら)す” エネルギーを、肉体・霊体・時空へと届けます。おかきがチャネリングによる即興で響かせる声をリラックスして聴く(響かせる)ことで、「本来の自分自身へと戻り・再び歩き出すための土台作り」をサポートします。 ", // Set GUI event listner for Button (make/hang up a call), "PeerID list (other than your ID) is empty. // Unset callbacks for MediaConnection.MediaEvents, https://github.com/skyway/skyway-android-sdk-tutorial, 「利用可能ドメイン」に"localhost"を追加して、「アプリケーションを作成する」を押す, 開発用プロジェクトをAndroid Studio等のIDEで開き、ビルドツールGradle等の設定を済ませる, app/src/main/java/com.ntt.ecl.webrtc.sample_p2p_videochat/MainActivity, app/src/main/java/com.ntt.ecl.webrtc.sample_p2p_videochat/PeerListDialogFragment, リソースやレイアウトについては完成版が同梱されており、今回のチュートリアルでは触れません.
権限がある場合は、startLocalStreamメソッドを実行してカメラ映像とマイク音声を取得します。, requestPermissionsメソッドで権限が取得できた場合は、startLocalStreamメソッドを実行してカメラ映像とマイク音声を取得します。, MediaConstraintsクラスでカメラ映像・マイク音声取得に関するオプションを設定可能です。 WebRTC Gateway
その後、 以下をあなたが登録したAPIキーとドメイン名に置き換えてください。, ←