-
Notifications
You must be signed in to change notification settings - Fork 2
๐ ์๋ก๊ณ ์นจ ์ HLS ERROR
HLS ํ ์คํธ๋ฅผ ์งํํ๋ ์ค, ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง์ฃผ์น๊ฒ ๋์๋ค.
๊ทผ๋ฐ ์ ๋ง ํฌํํ ์ ์ ์ฌ์์๋ ์ ํ ๋ฌด๋ฆฌ๊ฐ ์๋ค๋ ๊ฒ. ์ฆ, ์คํธ๋ฆฌ๋ฐ ๊ธฐ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์๋ค.
๋ค๋ง, Error๋ผ๋ ๋จ์ด ์์ฒด๊ฐ ๋ณด๊ธฐ ์ซ์ด์ ์ ๊ทธ๋ฐ ๊ฒ์ธ์ง ํ์ ํด๋ณด๊ธฐ๋ก ํ๋ค.
์ฌ์ ๋ฒํผ์ ๋ฐ๋ก ๋๋ฅด์ง ์์๋, URL ์์ฒญ์ ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๋ก m3u8์ด ์๋ต๋๊ณ ,
๊ทธ m3u8ํ์ผ์ ์ฝ์ด์ ts ์์ฒญ์ ๋ณด๋ธ ํ, ์ํฉ์ ๋ง๋ tsํ์ผ๋ค์ ์๋ต๋ฐ๋๋ค.
์ด๊ฒ์ด ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์๋ค.
์๋ก ์ฌ์์ ํ ๋, ๊ธฐ์กด HLS ๋ฐ์ดํฐ๋ฅผ ์ญ์ ๋ฅผ ํ์ง ์๊ณ ์งํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ Error๋ผ๊ณ ์ถ์ธก์ ํ๊ณ , destroyHLS ๋ฉ์๋๋ฅผ ์์ฑํด๋ณด์๋ค.
const hlsRef = useRef<Hls | null>(null);
...
const destroyHls = useCallback(() => {
if (hlsRef.current) {
hlsRef.current.destroy();
hlsRef.current = null;
}
}, []);
const initializeHls = (audio: HTMLMediaElement, streamUrl: string) => {
destroyHls();
const hls = new Hls(DEFAULT_STREAMING_CONFIG);
hls.loadSource(streamUrl);
hls.attachMedia(audio);
...
};
์ด๋ ๊ฒ ์ ์ฉ์ ํด๋ ์ฌ์ ํ error๊ฐ ๋ฐ์ํ๋ค.
๋ ์์ธ์ด ๋ฌด์์ธ๊ฐ ์๊ฐํด๋ณด๋,
hlsRef๋ฅผ null๋ก ๋ง๋ค๊ณ ์ถ์ ์ ์ํค์ง ์์์ ์๊ธฐ๋ ์๋ฌ ๊ฐ์๋ค. ๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค
const hlsRef = useRef<Hls | null>(null);
...
const destroyHls = useCallback(() => {
if (hlsRef.current) {
hlsRef.current.destroy();
hlsRef.current = null;
}
}, []);
const initializeHls = (audio: HTMLMediaElement, streamUrl: string) => {
destroyHls();
const hls = new Hls(DEFAULT_STREAMING_CONFIG);
hlsRef.current = hls; // ์ถ๊ฐ ๋ถ๋ถ
hls.loadSource(streamUrl);
hls.attachMedia(audio);
...
};
๋ค์๊ณผ ๋ณ๊ฒฝํ๋๋, ์๋ก๊ณ ์นจ ์์, ๋ค์ ๊ณก์ผ๋ก ๋์ด๊ฐ ๋์๋ error๊ฐ ๋ฐ์ํ์ง ์์๋ค!!!
์ผํธ!
๐ ffmpeg๋ stderr๋ก ๋๋ฒ๊น
์ ํ๋ ์ด์
๐ HLS ํ๋กํ ์ฝ์ ๊ดํ ์ ๋ฆฌ ๋ฐ FFmpeg ์ฌ์ฉ๊ธฐ
๐ ๋นํธ๋ tsconfig.json์ด ์ธ ๊ฐ?
๐ NestJS ๊ธฐ๋ณธ ๊ฐ๋
- Modules
๐ Socket.io ์ต(๊ฐ)์ ํ
๐ ๋์ปค์ nginx์ ์ฌ์ฉ๊ธฐ
๐ ๋ถํํ
์คํธ๋ฅผ ํด๋ณด์
๐ FSD ์ฌ์ฉ๊ธฐ, ๊ทผ๋ฐ ์ด์ ๋๋ง์ ๊ท์น์ ๊ณ๋ค์ธ
๐ CICD ๊ตฌ์กฐ ์์
๐ ์จ๋ฒ ๋จ์๋ก ์คํธ๋ฆฌ๋ฐ ํ๊ธฐ (with HLS)
๐ HLS๋ก ์์
์ฃผ๊ณ ๋ฐ๊ธฐ
๐ vite + react + typescript ํ๊ฒฝ์์ path alias ์ค์
๐ React Scan์ด ๋ญ์ฃ ?
๐ ๋ก์ปฌ ํ๊ฒฝ ๊ฐ๋ฐ ๋ชจ๋ ๋ฐฐํฌ
๐ ์จ๋ฒ ์ ์ฒด๋ฅผ ์คํธ๋ฆฌ๋ฐํ๋ค๊ณ ? (with HLS)
๐ ์ฝ๋์ ์์ ์ฑ์ ๋์ด๊ธฐ ์ํด ํ
์คํธ์ฝ๋๋ฅผ ์์ฑํด๋ณด์
๐ ์๋ก๊ณ ์นจ ์ HLS ERROR
๐ input ํ๊ทธ์ ํ๊ธ ์
๋ ฅ ํ, Enter๋ฅผ ๋๋ฅด๋ฉด ํจ์๊ฐ ๋๋ฒ ํธ์ถ๋๋ ์ค๋ฅ
๐ nginx proxy pass๋ฅผ ๋ฐ๊ฟจ๋๋ ์๊ธด ์๋ฌ - ์ค์จ๊ฑฐ ์ธ์ ๋ฌธ์
๐ ๋ฐฐํฌ ํ๊ฒฝ์์ ํด๋ผ์ด์ธํธ-์๋ฒ WS handshake
๐ ๋ ๋๋ง ๋ฒ์ธ์ ํ๋!
๐ ๊ทธ๋ผ์ด๋ ๋ฃฐ
๐ฅ ํ์ ์๊ฐ
๐ ์ฝ๋ & ๊น ์ปจ๋ฒค์
๐ณ ๊น branch ์ ๋ต
๐ ๋
ธ์
๋ฌธ์ ์ ์ฅ์
๐จ ํผ๊ทธ๋ง
๐งโ๐ป ๊ธฐํ ๊ณต์ ๋ฐํ ์๋ฃ
๐ค 2์ฃผ์ฐจ ๋ฐํ ์๋ฃ
๐ ๋ฐฑ๋ก๊ทธ
๐ 1์ฃผ์ฐจ
๐ 2์ฃผ์ฐจ
๐ 3์ฃผ์ฐจ
๐ 4์ฃผ์ฐจ
๐ 5์ฃผ์ฐจ
๐๏ธ 1์ฃผ์ฐจ
๐๏ธ 2์ฃผ์ฐจ
๐๏ธ 3์ฃผ์ฐจ
๐๏ธ 4์ฃผ์ฐจ
๐๏ธ 5์ฃผ์ฐจ
โจ 1์ฃผ์ฐจ
โจ 2์ฃผ์ฐจ
โจ 3์ฃผ์ฐจ
โจ 4์ฃผ์ฐจ