라벨이 gstreamer인 게시물 표시

브라우저가 실시간 동영상을 재생하는 과정( != 실시간 )

산업현장에 설치된 IP 카메라로 산업현장의 영상과 위험을 모니터링 하는 프로젝트를 수행했었다. 프로젝트 수행시 '동영상 재생' 기능을 어떻게 구현했는지 복습과 정리를 위해  글을 작성했다.

데이터 스트림_2(gstreamer, socketio, rabbitmq, kafka)

이번 글에서는 지난 1년동안 웹기반 실시간 영상 프로젝트에 참여하며 배운점을 공유하면서 프로젝트에서 쓰인  gstreamer라는 스트리밍 플랫폼, socketio, rabbitmq와 rabbitmq와 유사한 kafka와 같은 이벤트 기반 프레임워크와 비교하겠다. 이 비교과정을 통해서 스트리밍, 비동기 프로그래밍, callback 기반 코드, 이벤트 기반 프레임워크 등에 대해   더 깊은 이해를 할 수 있었다. 위 제품들은 아주 큰 범위의 streaming에서만 일맥상통하고 메커니즘, 지향하는 바는 제각각이기 때문에 쓰이는 분야 또한 제각각이다. 지난 1년간, 프로젝트에서 gstreamer는 주로 미디어 처리 역할을 수행하게 되었다. gstreamer gstreamer는 c로 작성된 객체지향형 프레임워크인 gobject를 기반으로 구성된 프레임워크이다. gstreamer 자체는 pipeline, bin, element을 구현하기 위한 코어 모듈들 콜백 시스템 구현을 위한 각종 시그널, 버스, 메시지 등의 모듈들로 구성되었다. 그 외에 각종 plug-in들은  gstreamer 프레임워크를 준수하며 사용 목적에 맞게 개발자들이 제작한 것이다.  나는 그중에서도 실시간 영상 스트리밍을 위해 rtspsrc, hlssink(multifilesink의 상속), avdec, h264parse, x264enc 과 같은 인코딩, 디코딩, 파싱 모듈을 사용했으며 이는 영상처리를 위한 플러그인들이다. 파이프라인에 흘러갈 소스가 동영상이 아닌 경우에는 다른 플러그인을 사용하면 된다. rtsp src는 적절한 연결-수립 통신 이후에는 - rtp packet을 보내게되고 이 rtp-packet에서 변환 과정을 거쳐야 영상처리를 위한 데이터를 뽑을 수 있다. rtsp packet rtp packet -> h264 -> x-raw (이 부분부터 raw 파일을 조작할 수 있다.) 작업했던 프로젝트에서는 gstreamer에서는 rtspsr...

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code 완주, 독후감

Blogger 커스터마이징 : CSS 수정 (sticky-header)