Apple Silicon Mac で PS4 ライブ配信環境構築
https://gyazo.com/313396a64dd51eefaedea1e72d37b888
m0t0k1ch1.icon だいぶ強引な方法だと思うので、オススメはしません
m0t0k1ch1.icon Windows なら強引なことせずにできると思うので、よい子は Windows でやろう
m0t0k1ch1.icon 表題には PS4 と書いたが、Switch などでも同様の方法で ok
---.icon
映像
PS4
→ ディスプレイ(パススルー)
→ 自分の目
→ MacBook Pro
m0t0k1ch1.icon NDI が使えたとしても、遅延が問題になるようなケースでは実はこの方法がベターかも?
---.icon
ゲーム音声
m0t0k1ch1.icon 配信と自分の耳に流したい
PS4
→ HD60 S
→ MacBook Pro
MacBook Pro の音声を BlackHole に出力すれば、Game Capture HD でキャプチャするだけで BlackHole に流れるはずなので、その状態で OBS の「デスクトップ音声」を BlackHole に切り替える → ヘッドセット
→ 自分の耳
---.icon
自分の声
m0t0k1ch1.icon 配信には流したいが、自分の耳には流したくない
ヘッドセット
→ MacBook Pro
OBS の「マイク音声」を接続しているヘッドセットに切り替える
---.icon
コメント読み上げ
m0t0k1ch1.icon 配信と自分の耳に流したい
MacBook Pro
Streamlabs の Chat Box ウィジェットに以下の JavaScript を仕込んで OBS 上で表示 ブラウザソースを追加し、ウィジェットの URL を指定する
OBS 上で表示しておけば、読み上げ音声はゲーム音声と同様にデスクトップ音声として扱える
→ ヘッドセット
→ 自分の耳
code:js
document.addEventListener('onLoad', function(obj) {
window.speechSynthesis.speak(new SpeechSynthesisUtterance(''));
});
document.addEventListener('onEventReceived', function(obj) {
if (obj.detail.command !== 'PRIVMSG') {
return;
}
const synth = window.speechSynthesis;
const utter = new SpeechSynthesisUtterance(obj.detail.body);
for (const voice of synth.getVoices()) {
if (voice.default) {
utter.voice = voice;
break;
}
}
utter.pitch = 1;
utter.rate = 1;
utter.volume = 0.3;
synth.speak(utter);
});
m0t0k1ch1.icon utter.voice utter.pitch utter.rate utter.volume は環境に合わせて調整
m0t0k1ch1.icon window.speechSynthesis.speak(new SpeechSynthesisUtterance('')); は、window.speechSynthesis.getVoices() の返り値を空にしないための策らしい(実際、初回読み上げ時は返り値が空になってしまってまともに読み上げてもらえなかった)
m0t0k1ch1.icon YouTube の場合は 'PRIVMSG' を 'youtube#liveChatMessage' に置換する
m0t0k1ch1.icon see also