본문 바로가기

전체 글

(156)
JavaScript(Event-Driven) 1. JavaScript was born for the browserJS was designed in 1995 for interactivity on web pagesIn the browser, you can't block the UI — otherwise the page freezesSo it had to be asynchronous by designbutton.addEventListener("click", () => { // react to user input}); 2. Then came Node.js (2009)Node.js said: "What if we use the event loop to build web servers?"Instead of using one thread per reque..
Java 코딩구현 - Java New I/O System java.nio = New I/OIt was introduced to improve performance, scalability, and flexibility in Java I/O operations.Here’s what it covers:Featurejava.io (Old I/O)java.nio (New I/O)📚 StyleStream-basedBuffer & channel-based📁 File handlingFilePath, Files🔁 I/O typeBlocking onlyBlocking & Non-blocking⚙️ PerformanceGood for simple tasksBetter for large data or high load📂 Directory walkManualBuilt-in (..
적응형 비트레이트 스트리밍(Adaptive Bitrate Streaming) 설계 적응형 비트레이트 스트리밍(Adaptive Bitrate Streaming) 프로토콜공통 구조 요약구성요소설명Manifest (플레이리스트)어떤 세그먼트들이 있는지 정의한 메타파일. 예: .m3u8, .mpdSegment (세그먼트)실제 미디어 데이터 (영상/음성). 일반적으로 짧은 시간 단위로 나눔 (예: 4~10초) 적응형 스트리밍 동작방식개념 : "같은 시점"의 영상에 대해 서로 다른 비트레이트 버전의 세그먼트들이 존재하고, 네트워크 상태에 따라 클라이언트가 선택해서 요청하는 방식이에요. 세그먼트 구조 (Sequence 번호는 동일, 비트레이트별로 따로 존재)예를 들어, 다음과 같이 여러 화질 버전이 있을 수 있어요:비트레이트세그먼트 이름 (예시)240p (300kbps)chunk_001_240.m..
테스트의 종류와 선택 일반적으로는 단위 테스트, 통합 테스트, API 테스트 모두 시행하는 것이 이상적인 테스트 전략입니다.  왜 세 가지를 모두 사용하는가?  테스트 종류 목적어떤 걸 확인하나?단위 테스트개별 클래스나 메서드의 로직이 정확한지 검증비즈니스 로직, 조건 분기, 예외처리 등통합 테스트여러 빈(서비스 ↔ 레포지토리 ↔ 설정)이 잘 연결됐는지 검증Bean 주입, 설정값, 실제 외부 의존성과의 통합 작동API 테스트외부 사용자의 시각에서 API가 제대로 동작하는지 검증요청/응답 포맷, HTTP 상태코드, 검증 오류 등  이상적인 테스트 방향  규모  / 상황 테스트 전략 현실화1인 개발 / 사이드 프로젝트단위 + API 테스트 위주. 통합 테스트는 최소한으로.스타트업 / MVP 단계빠른 개발을 위해 단위 or API..
HLS 프로토콜 튜닝 HLS (영상 프로토콜)HLS는 내부적으로 **HTTP 요청/응답(GET)**을 이용해서 .m3u8 (playlist) 파일과 .ts (video segment) 파일을 순차적으로 다운로드해서 재생합니다.HLS 같은 미디어 스트리밍 프로토콜은 "브라우저 자체"가 지원하지 않으면, JavaScript 라이브러리에 의존해야 합니다. 때문에 자신이 원하는 방식의 통신을 위한 프로토콜에 맞추어 설계하여야함통신 순서1. 클라이언트 → HTTP GET → playlist.m3u8 요청2. 서버 → playlist.m3u8 응답 (.ts 목록이 들어 있음)3. 클라이언트 → HTTP GET → segment1.ts4. 클라이언트 → HTTP GET → segment2.ts  FFmpeg HLS 튜닝 플래그-hls_t..
Encoding, Decoding, Frames 개념 효율적인 비디오 파이프라인 정리단계설명필요한 요소🎥 캡처 (입력)카메라에서 실시간 영상 데이터를 가져옴빠른 접근 가능한 장치 (예: /dev/video0, v4l2, avfoundation)🎞 인코딩원본 영상을 압축해서 전송/저장하기 좋게 변환고효율 코덱 사용 (예: libx264, nvenc, vaapi 등 하드웨어 가속)🧠 디코딩압축된 영상 데이터를 다시 프레임으로 복원하드웨어 가속 디코더 사용 시 성능 향상🔄 트랜스코딩 / 스트리밍스트리밍 형식(HLS 등)으로 재가공적절한 키프레임 간격, GOP 설정, 버퍼 조절 등📤 전달 (브라우저/플레이어로).ts 세그먼트와 .m3u8 재생 목록을 클라이언트에 제공HLS 세그먼트 생성, 재생 목록 실시간  What Are Video Frames?When..
영상 ffmpeg 인코딩 후 HLS 송출시 Latency 문제 개선 현상 : 실시간 관제를 위한 서비스에서 관제 영상이 HLS로 송출될때 1분이상 지연된 영상이 송출됨원인 : ffmpeg에서 인코딩할 시에 영상segment가 25초짜리 3개의 ts 파일로 인코딩 되어 있어 75초 이전의 영상이 송출됨심층원인 : 인코딩 전의 영상소스가 rtsp로 25초당 1번꼴로 keyframe이 삽입되어 파일 인코딩을 25초 단위로 할 수 밖에 없었음해결책 : 실시간 관제 서비스이기때문에 연결의 안정성보다는 실시간성이 중요하기때문에 끊김을 감수하더라도 ts파일을 2초, 2개로 설정심층원인 해결책 :  ffmpeg를 사용해서 keyframe을 1초당 30번으로 강제변환하여as is ffmpeg -i rtsp://127.0.0.1:7682/Test-01 \-c:v copy -c:a copy..
영상 스트리밍 처리과정 스트리밍 구조사용자가 데이터를 한꺼번에 받지 않고, 순차적으로 실시간에 가깝게 받아보는 시스템의 전체 구성“스트리밍 구조”는 단순히 영상만이 아니라,"데이터(특히 미디어)가 지속적으로 흐르는 시스템 구조"를 말합니다.일반 HTTP vs 스트리밍"스트리밍"은 단순 HTTP처럼 한 번에 요청/응답하는 구조가 아니라,데이터가 계속 흘러가는(지속 전달되는) 구조를 의미해요.그리고 이 흐름은 "실시간성"과 아주 밀접한 관계를 맺고 있습니다.항목일반HTTP 스트리밍구조요청 → 응답 → 끝연결 후 지속적으로 데이터 전송데이터 흐름한 번에 받음조각/이벤트 단위로 나눠서 받음연결 방식단발성 (short-lived)장기 연결 or 연속 요청예시게시글 API, 로그인영상, 채팅, 주식, 실시간 지도 등 사용예시영상 스트리밍..