Developer Document

Embedded Software 개발을 하면서 습득한 내용을 적은 시니어 개발자들의 글

코 독 코 독 CoderDocument

Embedded SW 기초/Streaming

Stream 구조와 원리

뜨요르 2024. 5. 23. 14:05

stream 구조

위의 그림은 동영상을 모니터 화면에 출력 시 나오는 영상 데이터 구조입니다.

카메라 등에서 나오는 데이터가 src를 통해 들어오게 되고, filter를 거치며 나온 데이터를 sink를 통해서 모니터 등의 output에서 출력이 됩니다.

layer 계층 별 data packet

각 Layer에서 있는 packet 중 RTP(Real Time protocol)은 Timestamp, Sequence 역할을 하며 Transprot 계층에서 udp와 clock을 양쪽 끝에 위치시켜 packet이 손상되었는지 확인을 하는 encapsulation을 합니다. physical 계층에서 또한 MAC Header와 MAC으로 encapsulation 합니다.

동영상 구조

동영상의 구조는 컨테이너로 이루어져 있습니다.

컨테이너란 여러 코덱을 하나로 묶은 파일을 의미하며 예시로 mp4, mkv, ts 등이 있습니다.

코덱이란 데이터 스트림이나 신호에 대해 인코딩 혹은 디코딩을 할 수 있는 소프트웨어를 말합니다. 즉 데이터를 압축 혹은 압축 해제를 의미합니다. 코덱은 크게 viedo코덱과 audio코덱이 있습니다. video코덱의 예시로는 h.264, h.265등이 있으며 audio코덱으로는 mp3, acc, ogg 등이 있습니다.

 

컨테이너를 demuxing이라는 작업을 통해 코덱들이 나눠지고 코덱을 decoding 하면 audio(pcm 등)와 video(RGB, YUV422 등) 각각의 raw data가 나옵니다.

 

audio나 video는 대량의 데이터 이기 떄문에 코덱을 사용하여 데이터를 압축한 후 전송하고 전송된 데이터를 압축 해제하여 사용합니다. 이런 압축 방식엔 무손실 압축과 손실 압축이 있습니다.

무손실 압축은 압축 전과 압축 후 원본과 데이터가 같은 것을 무손실 압축이라고 하며 손실 압축은 원본과 내용 값이 다릅니다. 즉 손실이 높을수록 압축률 또한 높아지지만 화질이 떨어진다는 특징이 있습니다.

 

mediainfo <동영상 파일>

리눅스에서 미디어 파일 정보를 보여주는 명령어는 mediainfo이며 명령어 사용 후 나오는 정보는 아래와 같습니다.

mediainfo 명령어 결과

'Embedded SW 기초 > Streaming' 카테고리의 다른 글

GStreamer 기초  (0) 2024.05.29
프레임 (GOP) & 영상 품질 요소 ( Bit rate / Frame rate)  (0) 2024.05.29