@@ -33,7 +33,7 @@ dConnectLibStreaming は、映像配信などを行うためのライブラリ
3333 └─ README.md
3434```
3535
36- # インストール方法
36+ # インストール
3737libmedia と libsrt を AndroidStudio プロジェクトにインストールする方法を説明します。
3838
3939まず、libmedia と libsrt の aar を下記のページからダウンロードします。<br >
@@ -58,6 +58,87 @@ dependencies {
5858}
5959```
6060
61+ # チュートリアル
62+
63+ ## SRT サーバー
64+ libsrt の ` SRTServer ` クラスは SRT のサーバー機能を提供します。
65+
66+ ### インスタンス生成
67+ サーバーのポート番号を指定して、インスタンスを作成します。
68+
69+ ``` java
70+ SRTServer server = new SRTServer (12345 );
71+ ```
72+
73+ ### オプション設定
74+ サーバーを起動する前に、SRT についてのオプションを指定します。
75+
76+ ``` java
77+ Map<Integer , Object > socketOptions = new HashMap<> ();
78+ socketOptions. put(SRT. SRTO_PEERLATENCY , 120 );
79+ socketOptions. put(SRT. SRTO_LOSSMAXTTL , 1000 );
80+ socketOptions. put(SRT. SRTO_CONNTIMEO , 1000 );
81+ socketOptions. put(SRT. SRTO_PEERIDLETIMEO , 120 );
82+ server setSocketOptions(socketOptions);
83+ ```
84+
85+ ### コールバック設定
86+ サーバーから実際に映像と音声を配信するためには、` SRTServer.Callback ` を設定する必要があります。
87+
88+ ```
89+ mSRTServer.setCallback(new SRTServer.Callback() {
90+ @Override
91+ public void createSession(SRTSession session) {
92+ // 必要なリソースを確保し、session に設定。
93+ }
94+
95+ @Override
96+ public void releaseSession(SRTSession session) {
97+ // リソースを解放。
98+ }
99+ });
100+ ```
101+
102+ セッションで映像と音声のリソースのライフサイクルを管理します。
103+ 詳しくは以降の節をご参照ください。
104+
105+
106+ ### セッション作成処理
107+ ` createSession(SRTSession) ` コールバックは、クライアントとの接続が確立した時に呼び出されます。すでに1つ以上の接続がある場合は呼び出されないようになっています。ここで映像・音声のエンコーダを確保し、` session ` に対して設定します。
108+
109+ 映像・音声のエンコーダは libmedia の ` VideoEncoder ` と ` AudioEncoder ` のクラスとして定義されています。映像・音声の具体的なソースによって、` VideoEncoder ` と ` AudioEncoder ` の拡張クラスが実装されています。例えば、Android 端末のカメラ映像を Camera2 API で取得する場合は、` CameraSurfaceVideoEncoder ` をセッションに設定します。
110+
111+ 以下、セッションに映像のエンコーダを設定するサンプルコードです。
112+
113+ ```
114+ // Android 端末のカメラ映像のエンコーダを作成
115+ CameraSurfaceVideoEncoder videoEncoder = new CameraSurfaceVideoEncoder(context, "video/avc");
116+ videoEncoder.addSurface(surface);
117+
118+ // 映像のパラメータを設定
119+ CameraVideoQuality videoQuality.setFacing = (CameraVideoQuality) videoEncoder.getVideoQuality()
120+ videoQuality.setFacing(facing);
121+ videoQuality.setBitRate(biteRate);
122+ videoQuality.setFrameRate(fps);
123+ videoQuality.setVideoWidth(previewSize.getWidth());
124+ videoQuality.setVideoHeight(previewSize.getHeight());
125+
126+ // 映像のエンコーダをセッションに対して設定
127+ session.setVideoEncoder(videoEncoder);
128+ ```
129+
130+ 音声のエンコーダも同様に設定可能です。
131+
132+ なお、配信しないメディアについては、セッションへの設定を省略することで配信をオフにできます。
133+
134+ ### セッション解放処理
135+ ` releaseSession(SRTSession) ` コールバックは、すべてのクライアントとの接続が切断された時に呼び出されます。ここで必要に応じてリソースの解放を行います。
136+
137+ ### SRT サーバー起動
138+ ```
139+ server.start();
140+ ```
141+
61142# モジュールのビルド
62143
63144モジュールの開発を行う場合には、SRT をビルドしておく必要があります。
0 commit comments