https://baseball-broadcast.vercel.app/
「ツイキャスゲームズ」などのスクリーン配信に対応したサービスで、
スマホの画面を直接ストリーミング配信できることを利用して、
スマホ側でカメラを起動して画面を合成したらいいじゃないかという発想に。
react-webcamというライブラリ(canvasで描画している)とNextJSを組み合わせました。
最低でもQA画面と設定画面、合成画面が必要になると思っていたので、
NextJSを選択しました。
デプロイ用のプラットフォーム
セキュリティ的にカメラの起動条件がlocalhostか、https通信下だったので、最初はvercelに上げながら動作確認していましたが、途中からcodesandboxを使っていました。
iPhone/Chromeではカメラが起動しないとか。
縦横の向きを変えたときにリサイズする処理を色々試したのですが、
どれも結局上手くいかず、stackoverflowなどを見ながら最終的にたどり着いたのはCSSでの表示制御でした。えぇぇぇぇぇ.....。
スコアボードのUIを詰め過ぎてタップしづらいという問題が発生。
transform: scale(1.3)
でコンポーネントごと1.3倍にして逃げました。
秘伝のたれを思いついた瞬間
import Webcam from "react-webcam";
import NHKBoard from "./NHKBoard";
const Home = () => {
const videoConstraints = {
facingMode: { exact: "environment" },
aspectRatio: 1.78
};
return (
<div
style={{
width:'95vw',
height:'95vh',
position:'relative'
}}
>
<Webcam
style={{
position:'absolute',
top:0,
left:0,
width:'95vw',
height:'95vh',
}}
videoConstraints={videoConstraints}
/>
<div
style={{
transform:'scale(1.3)',
position:'absolute',
bottom:0,
right:0
}}
>
<NHKBoard/>
</div>
</div>
)
}
export default Home;
スコアボードの種類を選べるようにするとか、選手紹介を表示するとか機能拡張は考えていますが、一旦最小構成でリリースしますのでフィードバックいただけるとうれしいです!
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント