| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- Flutter
- webrtc
- REST API
- localization
- node
- HLS
- Redux
- html2canvas
- segment
- Reverse tunneling
- jszip
- Babel standalone
- multiple camera
- react
- Signaling server
- three.js
- babel
- typescript
- code editor
- how to install cursor on ubuntu
- M3U8
- race condition
- append row
- turn
- STUN
- ffmpeg
- SDP
- KakaoMap
- Excel
- mDNS
- Today
- Total
목록ffmpeg (2)
Never give up
이번에는 하드웨어의 냉혹한 현실에 대해 다루고자 합니다 화면도 없고 리소스가 제한된 기기에서 고화질 카메라 피드를 끊김 없이 뽑아내려면 하드웨어 프레임을 캡처하고 극도로 제한된 CPU 바운드 내에서 압축하여 실시간으로 WebRTC 미디어 파이프라인에 밀어 넣어야 합니 만약 인코딩 설정이 아주 조금이라도 어긋나면 기기의 CPU 점유율은 순식간에 100%를 찍어버리고 프레임 드랍, 발열 스로틀링, 그리고 커넥션 타임아웃등이 발생합니다 이 문제를 해결하기 위해 FFmpeg Child Processes, 플랫폼 독립적인 하드웨어 드라이버 추상화 그리고 초저지연 UDP 루프백을 이용해 오버헤드가 거의 없는 비디오 파이프라인을 구축한 과정을 공유해 보겠습니다 크로스 플랫폼 제약: 하드웨어 디바이스 노드의 추상화로컬..
이번에는 일반 영상을 올릴 때, FFmpeg으로 변환하는 과정과 영상 데이터를 클라이언트에 전달하는 부분을 보도록 하겠습니다 index.tsconst app = express();const options = { origin: "http://localhost:3000", credentials: true, optionsSuccessStatus: 200,};app.use(cors(options));app.use(express.json());app.use(express.urlencoded({ extended: true }));app.use("/api/video", video);app.listen(8080, () => { console.log(`[server] running on localhost:${80..
