Skip to content

Commit

Permalink
Fix: [Server][LiveStream] ほぼ同時に同一チャンネルのストリーミングを要求すると多重にエンコードタスクが起動して状…
Browse files Browse the repository at this point in the history
…態が破綻する不具合を修正
  • Loading branch information
tsukumijima committed Sep 13, 2023
1 parent 368743b commit b19925c
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions server/app/streams/LiveStream.py
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,10 @@ async def connect(self, client_type: Literal['mpegts', 'll-hls']) -> LiveStreamC
# ライブストリームが Offline な場合、新たにエンコードタスクを起動する
if current_status == 'Offline':

# ステータスを Standby に設定
# 現在 Idling 状態のライブストリームを探す前に設定しないと多重に LiveEncodingTask が起動しかねず、重篤な不具合につながる
self.setStatus('Standby', 'エンコードタスクを起動しています…')

# 現在 Idling 状態のライブストリームがあれば、うち最初のライブストリームを Offline にする
## 一般にチューナーリソースは無尽蔵にあるわけではないので、現在 Idling(=つまり誰も見ていない)ライブストリームがあるのなら
## それを Offline にしてチューナーリソースを解放し、新しいライブストリームがチューナーを使えるようにする
Expand All @@ -412,10 +416,6 @@ async def connect(self, client_type: Literal['mpegts', 'll-hls']) -> LiveStreamC

await asyncio.sleep(0.1)

# ステータスを Standby に設定
# タイミングの関係でこっちで明示的に設定しておく必要がある
self.setStatus('Standby', 'エンコードタスクを起動しています…')

# エンコードタスクを非同期で実行
instance = LiveEncodingTask(self)
asyncio.create_task(instance.run())
Expand Down

0 comments on commit b19925c

Please sign in to comment.