Skip to content

Commit 66067c8

Browse files
committed
SRT サーバーの開始方法を追記。
1 parent e559c8a commit 66067c8

1 file changed

Lines changed: 82 additions & 1 deletion

File tree

dConnectSDK/dConnectLibStreaming/README.md

Lines changed: 82 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ dConnectLibStreaming は、映像配信などを行うためのライブラリ
3333
└─ README.md
3434
```
3535

36-
# インストール方法
36+
# インストール
3737
libmedia と 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

Comments
 (0)