-
Notifications
You must be signed in to change notification settings - Fork 2
Chrome 자동 재생이 안되는 문제
Seungheon Han edited this page Nov 15, 2024
·
1 revision
방송 시청하는 비디오가 페이지에 들어와도 자동으로 재생되지 않는 문제가 있었다.
<video ref={videoRef} autoPlay className="w-full h-full bg-surface-alt rounded-xl"/>위와 같이 video 태그에 속성으로 autoPlay를 넣어주었는데도 되지 않아서 이유를 찾아봤더니 Chrome은 음소거되지 않은 영상은 자동재생을 금지하는 정책이 있었다.
https://developer.chrome.com/blog/autoplay?hl=ko
<video>에 muted 속성을 넣고 오디오의 재생 상태를 관리하는 isAudioEnabled의 초기값으로 해당 값을 컨트롤할 수 있도록 했다.
function LivePlayer({ mediaStream }: { mediaStream: MediaStream | null }) {
const [isAudioEnabled, setIsAudioEnabled] = useState(false);
return (
<>
{/* ... */}
<video ref={videoRef} autoPlay muted={isAudioEnabled ? false : true} />
{/* ... */}
</>
)};이렇게 해두고 useEffect로 컴포넌트가 마운트될 때, setIsAudioEnabled(true)를 해주면 소리도 자동 재생이 될까했는데 안된다. 그냥 사용자가 도메인과 어떤 상호작용(클릭, 탭 등)을 하기 전까지는 오디오가 자동재생되면 안되는 것 같다.
어차피 사용자가 음소거 on/off를 할 수 있는 버튼이 제공되기 때문에 처음에 페이지가 열렸을 때는 비디오만 on, 소리는 off 상태로 제공되도록 했다.
- Mediasoup 포트 매핑 문제
- swagger 같은 응답 코드에 다양한 응답 보여주기
- Sudo가 계속 비밀번호를 요청함
- Docker 이미지가 너무 크다
- Git action에서 도커 이미지 빌드 시간을 단축시켜보자
- Docker compose를 이용해서 메모리 사용률을 줄여보자
- 방송 녹화 시 CPU 과부하 문제를 해결해보자
- Release 브랜치? 너 필요해?
- 로딩이 너무 짧아…!
- NestJS ORM으로 무엇을 사용해야 할까?
- WebRTC를 이용한 1:N 스트리밍 서비스에서 시그널링 서버가 필요할까?
- 실시간 채팅 구현: 인메모리 방식을 선택한 이유
- MySQL 아키텍처 개선: DB 의존성 분리와 서버 역할 명확화
- 브라우저 창이 최소화되면 비디오 송출이 안된다…!
- Mediasoup 기본 개념
- DLTS와 Signaling
- Tell, Don't Ask (TDA) 원칙이란
- VPC(Virtual Private Cloud) 학습 정리
- 순환참조: A 서비스 ‐ B 서비스 vs. A 서비스 ‐ B 레포지토리
- Dto 메서드 전략
- WebRTC란?
- 자바스크립트 패키지 매니저(npm, yarn, pnpm)
- shadcn/ui을 이용해 UI 개발 생산성 높이기
- React 이벤트 핸들러 네이밍(on vs handle)
- React-router-dom의 createBrowserRouter을 사용해보기
- fetch vs axios