Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] 설정 다이얼로그를 통한 마이크/카메라 선택 기능 구현 #338

Merged
merged 11 commits into from
Dec 2, 2024

Conversation

seoko97
Copy link
Collaborator

@seoko97 seoko97 commented Dec 1, 2024

Warning

이전 #334가 아직 병합되지 않아 이전 커밋 내역이 남아있습니다.
해당 PR을 먼저 리부해주시면 감사하겠습니다.

관련 이슈 번호

작업 내용

  • 설정 다이얼로그 추가
  • 카메라/마이크 선택 기능 추가

고민과 학습내용

기존 useLocalStream 내부에서 작성중이던 MediaStream관련 로직을 useMediaTracks 내부에서 관리하도록 변경하였습니다.

변경 이유는 다음과 같습니다.

  1. useLocalStream에 경우 mediasoup 관련 로직이 함께 존재
  2. useMediaTracks을 통해 미디어 트랙 정보 및 스트림 정보를 관리하고자 분리 진행

스크린샷

화면 기록 2024-12-02 오전 5 32 48

@seoko97 seoko97 added FE Frontend 관련 작업 ✨ Feature 새로운 기능 추가 labels Dec 1, 2024
@seoko97 seoko97 self-assigned this Dec 1, 2024
@github-actions github-actions bot added the size/l label Dec 1, 2024
Copy link

github-actions bot commented Dec 1, 2024

🎨 스토리북 확인하기

Comment on lines +44 to +55
{videoDevices.length !== 0 && (
<select
value={selectedVideoDeviceId ?? '선택'}
onChange={(e) => setSelectedVideoDeviceId(e.target.value)}
className="mt-2 w-full"
>
{videoDevices.map((device) => (
<option key={device.value} value={device.value}>
{device.label}
</option>
))}
</select>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P4 기왕 하는거 Select 공통 컴포넌트를 사용하면 좋을거같긴합니다~! 우선순위는 매우 낮으니 이 부분은 제가 수정할게요!!

Comment on lines +160 to +189
useEffect(() => {
if (!selectedVideoDeviceId) return;

const videoTrack = video.stream?.getVideoTracks()[0];

if (!videoTrack) return;

const isSameDevice = videoTrack.getSettings().deviceId === selectedVideoDeviceId;

if (isSameDevice) return;

closeStream('video');
startCameraStream();
}, [selectedVideoDeviceId]);

useEffect(() => {
if (!selectedAudioDeviceId) return;

const audioTrack = audio.stream?.getAudioTracks()[0];

if (!audioTrack) return;

const isSameDevice = audioTrack.getSettings().deviceId === selectedAudioDeviceId;

if (isSameDevice) return;

closeStream('audio');
startMicStream();
}, [selectedAudioDeviceId]);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기가 핵심 로직이로군요 확인했습니다!

@seoko97 seoko97 merged commit e772b19 into develop Dec 2, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FE Frontend 관련 작업 ✨ Feature 새로운 기능 추가 size/l
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 설정 버튼을 통해 로컬 스트림 목록 중 선택 가능하도록 변경
3 participants