RiotBlue Playerを使ってYouTube複数同時配信で見つかった音声ミュートが解除されないバグを修正しました。
実は、プログラム中から動作しなくなる懸念を持っていました。
RiotBlue Playerは、3つのイベントで動作しています。
- ユーザ操作ボタン
- YouTubeプレイヤー
- 1秒周期
画面に表示される時間や進捗バーの更新は1秒周期のイベント処理で更新しています。
実は、この1秒周期で音声のミュートを解除する処理を実行しています。
残再生時間=終了再生時間ー開始再生時間
という条件でミュートを解除していました。
今回、このミュート処理を実行する条件となりませんでした。
通常であれば、再生開始でこの条件に一致してミュートを解除します。
今回の問題は、PCのCPU負荷が高くなり1秒周期の処理が間に合わず、1秒周期処理時に残再生時間が想定する再生時間より減ってしまい条件に一致しませんでした。
PCが3ストリーム同時配信したのでCPU処理が間に合わず発生しという高負荷の
1秒周囲処理が必ず1秒で実行されるという前提のプログラムが間違っていたということです。
条件を下記のように変更しました。
(残再生時間<=(終了再生時間ー開始再生時間))AND (ミュートされていたら)