영상 관련 기술의 기초
홍영훈 cto 님의 교육
이미지
점(pixel)들의 집합이다.
동영상
영상은 이미지들의 연속적 표현의 결과이고 우리가 아는 동영상은 영상과 오디오 데이터가 시간에 맞춰서 화면과 스피커로 출력되는 결과물이다.
영상에서 각각의 이미지는 특정 시간대의 화면을 표현하게 되는데 이를 frame이라고 칭한다.
1초에 몇 개의 프레임이 있느냐는 초당 프레임(fps)이라고 부른다.
rawdata로 영상을 생각하면 우리가 보통 사용하는 모니터가 1920*1080 인데 이 이미지 크기는 32비트 칼라 기준으로 약 8메가 바이트이고, 30fps 기준으로 1분에 15기가 바이트를 차지하게 된다.
우리 중 한사람만 이런 영상을 시청하는 것만으로도 회사 네트워크는 마비되고 정작 시청도 제대로 할 수 없다
그래서 영상과 오디오 압축이 필수적이다.
영상을 압축할때 모든 데이터를 다 압축을 하게 되면 데이터를 많이 사용하기 때문에 중간 중간 키프레임(영상의 모든 정보를 가지고 있는)을 두고 변경된 정보만 담게된다
보통 키프레임은 5~10초에 하나씩 만들게 되면 특수한 경우 1초 정도로 짧게 설정할수도 있다.
ffmpeg을 다시 보니 키프레임을 셋팅하는 부분이 있다 알고 보는것이 좋은듯
코덱
동영상이나 소리 등을 인코딩 또는 디코딩 할 수 있는 그 알고리즘을 가리키는 용어로 자주 쓰임.
동영상 코덱
MPEG-4 ASP : 3ivx, DivX, FFmpeg MPEG-4, HDX4, Xvid 무료라서 오래전부터 영상파일 저장용으로 인기.
H.264/MPEG-4 AVC : CoreAVC, HDX4, QuickTime H.264, x264 표준화된 코덱 중에서 압축율이 탁월. 대신 cpu 자원 많이 먹음. 대부분 웹브라우저에서 지원.
flv1 : 플래시에서 사용해서 유명해진 코덱. 표준이 아니라서 플래시에서만 사용.
오디오 코덱
MP3 : 아마 가장 잘 알려짐.
AC3 : AC3는 오디오 코덱 코드(Audio Codec code) 3 이란 약자
AAC : AAC(Advanced Audio Coding, AAC, 표준문서ISO/IEC 13818-7)는 디지털 오디오에서 쓰이는 표준적인 손실 데이터 압축방식.
컨테이너 포맷(Digital_container_format)
디지털 컨테이너 포멧이라고 해서 동영상, 이미지, 오디오들의 컨테이너 포멧이 있다.
지금 여기서는 동영상 컨테이터 포멧(?) 비디오 파일 포멧으로 생각하면 될것 같다.
트랜스코딩(video-transcoding)
비디오 인코딩은 비디오 인코딩과 같은 하나의 디지털 인코딩 형식에서 다른 형식으로의 변환입니다. 여기에는 디지털 비디오의 세 가지 요소 (파일 형식, 비디오 및 오디오)를 동시에 변환하는 작업이 포함됩니다.
영상 전송 프로토콜
스트리밍 방식은 기존의 파일전송 프로토콜인 http, ftp 등도 이용 가능하지만 몇 가지 문제가 있다.
첫번째 시청 시간과 무관하게 다운로드 진행되어 쓸데없이 트래픽을 유발할 수 있다.
둘째 원하는 시간대로 스킵 할 수 없다.
셋째 컨테이너 포맷(메타 헤더가 파일 끝에 있는 경우)에 따라서 스트리밍이 불가능할 수 있다.
RTMP : 리얼 타임 메시징 프로토콜(Real Time Messaging Protocol, 흔히 줄여서 RTMP)은 어도비 시스템즈사의 독점 컴퓨터 통신 규약이다. 플래시에서 기본적으로 탑재한 프로토콜이라 플래시를 설치할 수 없는 웹브라우저에서는 지원이 불가능하다. 레이턴시가 약 2초
RTSP : 실시간 스트리밍 프로토콜(Real Time Streaming Protocol,RTSP)은 IETF가 1998년에 개발한 통신 규약이다. 비교적 오랜 역사를 가진 프로토콜로 CCTV등에 많이 사용된다. 레이턴시가 짧은 게 특징. 1초 이내. 표준 규약이라 web socket을 이용하면 일반적인 웹브라우저에서 사용이 가능하다. 다만 ios safari는 지원하지 않음.
HLS : http live streaming의 준말. Apple(iPhone, iPad 등) 에서 사용하는 표준 HTTP 기반 스트리밍 프로토콜이다. 프로토콜에서 스트리밍 데이터를 m3u8 의 확장자를 가진 재생목록 파일과 잘게 쪼개놓은 다수의 ts 파일들(동영상)을 HTTP 를 통해 전송하는 방식. HTTP로 전송되기 때문에 보안문제로부터 자유롭고, 네트워크 대역대에 맞춰서 Adaptive Bitrate Streaming 이 가능하다. 거의 모든 웹브라우저에서 지원하며 VOD인 경우는 일반 웹서버를 미디어 서버로 사용해도 된다. 최대의 약점은 latency. 보통 ts 파일이 최소 2초가량의 데이터를 담고 있고, 최소 3개파일이 존재해야 하므로 이론상 최소 latency가 6초.
WebRTC : (Web Real-Time Communication)는 웹 브라우저 간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API이다. W3C에서 제시된 초안이며, 음성 통화, 영상 통화, P2P 파일 공유 등으로 활용될 수 있으며 서버를 하나의 peer로 사용하면 스트리밍 서비스가 가능한 것으로 알려져 있다.
미디어 서버
위의 스트리밍용 프로토콜을 지원하는 서버 소프트웨어들을 말한다.
상용 미디어 서버로 가장 유명한 제품이 wowza이다. Wowza는 rtmp 프로토콜과 플래시를 개발한 어도비사에서 나온 개발자들이 만든 제품이다.