K-UAM, 도심항공모빌리티 #1 (Intro)

이전글: 도심항공모빌리티(UAM)와 오픈소스

UAM, K-UAM

도심항공모빌리티(UAM, Urban Air Mobility)는 출발지와 목적지를 정해두고 계획한 일정에 따라 주기적으로 정해진 항로를 날아다니는 형태의 교통 수단이라고 할 수 있습니다. 5인승 정도 되는 저소음 수직 이착륙 비행체가 고도 300M에서 600M 사이에서 이동하는 모습을 2025년 즈음에는 서울에서 볼 수 있을 것이라는 것이 K-UAM의 목표이기도 합니다.

ConVairCar Model 118 이미지 출처:The Fascinating History of the Flying Car

K-UAM에 설계자로 참여하게 된 2022년 1월만하더라도 2025년이라고 시점을 언급한 것이 너무 섣부른 판단이 아닐까 하는 걱정이 더 많았습니다. 하지만 이 글을 쓰고 있는 8월 시점으로 본다면 2025년 상용화 목표 달성 가능성이 더 크다는 생각들고 있습니다. 비단 이것은 자만심이라기 보다는 많은 부분에서 불확실성이 해소되고 있기 때문일 것입니다.

K-UAM 정립의 기준

UAM은 많은 부분에 있어서 항공 산업에서 사용하고 있는 시스템들을 기준으로 다른 점들을 분석하고 수정할 부분과 새롭게 정의할 부분을 정의하고 있습니다. 기존 시스템을 기준으로 UAM이 나아갈 방향을 정립하는 단계라고 말할 수 있고, 이 기준의 축은 항공 산업, 교통 체계, 정책이라고 보고 있습니다. 이 중 가장 빠른 속도로 진행되는 축은 아무래도 보여줄 수 있는 실체를 만들 수 있는 항공 산업 기반의 축이라고 생각됩니다. 교통 체계로서는 기존에 운용되고 있는 택시, 버스, 철도, 그리고 역시 항공 서비스와 연계에 대해서 고민하다보니 이용자의 입장에서 사용할 수 있는 서비스 모델에 대한 정립이 필요하지만, 새롭게 등장한 교통 수단이기 때문에 획기적인 서비스 모델을 만든다하더라도 검증할 방법이 마땅치 않아 많은 고민을 할 수 밖에 없는 분야라고 할 수 있습니다. 또한 교통 체계의 완성과 성공 여부는 결국 이용자의 호응도에 따르는데 신기술로 무장한 UAM을 거부감 없이 이용할 사용자들이 얼마나 될지 예측하는 것도 사실 어려움이 있습니다. 마지막으로 정책에 대해서는 국가 단위의 의사 결정이 필요한 부분이므로 가장 속도가 느린 축이라고 말할 수 있습니다.

혼잡한 도심 내에서 이동 효율을 획기적으로 높일 수 있다는 기대감에 출발한 UAM은 이러한 세 기준을 어떻게 해석하느냐에 따라 각자의 특성을 가지고 발전을 하게 될 것입니다.

K-UAM

UAM은 체계의정립은, 미국은 FAA(Federal Aviation Administration)를 중심으로 유럽은 EASA(European Union Aviation Safety Agency)를, 그리고 우리나라는 국토교통부와 한국 항공 우주 연구원의 주도로 진행되고 있습니다.

미국의 경우, 넓은 지역과 다양한 민간 사업자를 고려하여 분산 운용 관제를 추구하고 있는 반면, 유럽의 경우는 기존 항공과 유사함을 근거로 중앙 집중식 관제 방식을 정립하고 있다는 것이 큰 차이점이라고 할 수 있습니다. 우리나라의 경우 미국의 선례를 따라서 분산 운용을 우선적으로 검토하고 있으나, 아직까지는 결론이 나지 않아 많은 연구와 실험을 통하여 최종 방안에 대한 권고안을 작성할 예정입니다.

UAM의 운용 방식은, 국가별로 가용한 혹은 계획한 인프라의 상태와 신기술 도입에 대한 적극성, 기술 수준에 따라 다를 수 밖에 없으며, 우리나라의 UAM 체계는 K-UAM이라는 틀안에서 적합한 운용 방법을 찾아 나가고 있는 상황입니다.

K-UAM 인프라

우리나라와 미국, 유럽과 또 다른 상황은 UAM에 적용할 건설, 교통 및 통신 인프라의 차이 입니다. UAM을 운용하기 위해서는 UAM 기체가 있어야함은 물론이지만, 뜨고 내릴 수 있는 공항인 버티포트(Vertiport)가 있어야 합니다. 버티포트는 이착륙장뿐만 아니라 UAM 기체의 배터리 충전 및 정비가 가능해야하며, 승객과 UAM을 연결하는 창구가 됩니다. 즉 도심의 혼잡한 교통 상황을 해결하기 위해서 버티포트는 혼잡한 도심에 위치하는 것이 가장 이용률을 높일 수 있는 방안이라는 아이러니한 결론을 얻게되지만, 충전 및 정비 설비가 동작할 수 있도록 막대한 전력 공급이 가능하고 안전한 이착륙을 보장하기 위해 상공의 공간이 열려 있는 곳이어야 하기 때문에 그 위치 선정이 쉽지 않습니다. 그렇기 때문에 기존의 건설과 교통 인프라를 활용하는 방안이 검토되고 있습니다.

또 다른 큰 차이점을 만드는 부분은 UAM이 데이터 통신을 기반으로 시작하는 최초의 교통 수단이기 때문이라고 할 수 있습니다. 기존의 항공은 VHF 대역의 음성 통신 기반으로 운용이 되고 있고, 초기에는 많은 부분을 기존 항공 산업에서 사용하던 장비들을 활용할수 밖에 없겠지만, UAM 교통 관제, UAM 기체 조종사, 버티포트 등은 상용화 이후, 이전의 방식보다는 유무선 데이터 통신을 통해 주요한 의사 결정을 하는 체계를 완성하는 것을 목표로 하고 있습니다. 특히 UAM이 이용하는 하늘길에서 4G/5G 혹은 앞으로 출현할 6G 통신망의 사용은, UAM에 대한 명령과 제어를 하는 데이터와 일반 승객들이 이용하는 데이터를 같은 통신 인프라를 통해서 사용하게 될 것이라는 점에서 통신 인프라 설계자들의 고민을 깊게 만들고 있습니다. 불행 중 다행인 것은 우리나라의 지상 무선 통신망 인프라는 매우 품질이 좋은 편이며, 지상 인프라를 활용하여 상공망을 구축하는 것을 시작할 수 있어 다른 국가들에 비해 우위에 있다고 볼수 있다는 점입니다.

K-UAM 운용 시나리오

우리나라는 대부분의 공역이 비행허가구역으로 지정되어있기 때문에 UAM이 사용할 수 있는 구간은 정책에 의해서 결정될 수 있습니다. UAM이 비행할 수 있는 구간이 정해졌다고 해서 UAM 사업자가 원하는 시점에 해당 구간을 사용할 수 있는 것은 아니며, 원칙적으로는 하늘길을 합법적으로 사용하기 위해서 ATM(Air Traffic Management)의 관제를 받아야합니다. 하지만 UAM은 기존 항공기에 비해 짧고 빈번하게 운행되는 특성을 갖기 때문에, ATM의 통제하에 있기 보다는 UAM 항로에 대해서는 UAM 교통 관제 시스템이 담당을 하고, ATM와 연계하는 방식으로 진행되고 있습니다.

UAM 기체가 비행할 계획을 사전에 수립하고, 이/착륙 및 비행시에 정해진 프로토콜에 따라 운행하되, 계획에서 벗어난 상황에서 UAM 시스템들이 어떻게 동작해야하는지는 결국 운영 시나리오를 통해서 확립할 수 밖에 없습니다. 또한 이 운용 시나리오가 정교해질 수록 UAM을 구성하는 시스템의 역할과 운영 주체도 판별할 수 있게 됩니다.

즉 하늘길을 안전하게 사용할 수 있는 기반은 K-UAM 인프라가 제공을 하는 것이며, 우리 나라의 하늘길을 사용하기 위한 시스템은 K-UAM 운용 시나리오를 바탕으로 연구하고 있다고 말할 수 있습니다.

현재까지 구성한 K-UAM 시나리오에서는, UAM이 이동하는 경로는 UAM 교통 관제 시스템이 관제를 하는 것이 원칙이지만, 버티포트는 UAM 기체와 승객의 접점이 되는 공간으로 특별히 주의 깊게 관리해야하는 지역으로 버티포트 주변 영역의 관제와 UAM 운항 경로에 대한 관제를 구분하여 설정하고 있습니다.

도심항공교통 가상 통합 운용 및 검증 기술

운용 시나리오를 검증하는 가장 좋은 방법은 시나리오를 실제로 수행해보는 것입니다. 도심항공교통 가상 통합 운용 및 검증 기술 과제는 270억 규모로 약 40여개의 민간 기관이 2022년부터 2025년까지 K-UAM을 운용할 가상의 환경을 구축하는 사업으로, 상황별 시나리오를 모의 시스템 내에서 수행하여 해당 시나리오의 유효성을 검증하는 것 뿐 아니라, K-UAM을 효율적으로 운용하기 위한 최소 요구 조건을 수립하는 것을 목표로 진행하고 있습니다.

K-UAM의 체계를 정립하고 검증하기 위해 수행하고 있는 이 과제는 5개의 세부 분야로 나뉘어져있습니다. 가상의 버티포트를 구성하고, 모의 조종석을 통해 기체를 제어할 수 있는 시스템과, 버티포트와 기체 그리고 전체적인 상황을 통제하는 교통 관제 시스템, 교통 관제의 의사 결정을 위한 정보를 제공하는 운항 정보 제공 시스템을 구성중에 있고, 최종 시스템은 가상 통합 운용 센터로 통합하여 과제를 진행하면서, 그리고 종료 후에도 5년간 운용하면서 K-UAM운용 시나리오를 점검하고 검증하는데 사용될 예정입니다.

과제 구성도

다음글: K-UAM 교통 관제 시스템 (예정)

관련 세미나 정보

UAM의 미래상과 기술 개발 전략

  • 일시 2022년 08월 16일 (화)
  • 시간 16:00 ~ 18:00
  • 장소 SKT타워 4층 SUPEX홀

불안정한 네트워크에서 고품질 고해상도 영상 전송 #2

가용 대역폭의 변화

다시 데이터 전송과 네트워크 불확실성으로 돌아와서 간단한 실험을 진행하고자합니다. 앞서 정의한 불확실성의 척도를 결정하는 요소는 대역폭, 딜레이, 패킷 유실률로 구성되어 있습니다. 이 글에서는 실험의 복잡도를 낮추기 위해서 패킷 유실률에 대해서 가용 대역폭의 변화를 살펴보고자 합니다.

리눅스에서 구동하는 iproute2를 활용한다면 원하는 네트워크 상태를 에뮬레이션 할 수 있습니다.

 $ sudo tc qdisc add dev eno1 root netem loss 10% 

실험이 끝난 후에 에뮬레이션한 값을 삭제하기 위해서는 del 파라미터를 사용해야 합니다.

 $ sudo tc qdisc del dev eno1 root netem loss 10% 

로컬 네트워크에서 패킷 유실률을 0%에서 10%까지 증가시켰을때 HTTP를 이용한 다운로드시에 사용한 대역폭의 변화는 다음 그래프와 같이 나타납니다.

패킷 유실률에 따른 대역폭 변화

실제 사용하는 네트워크 환경에서 10%까지의 패킷 유실률이 발생할 수 있을지는 의문이지만, 주목할만한 것은 패킷 유실률이 3%임에도 거의 1/2 수준으로 가용 대역폭이 줄어드는 것을 알수 있습니다.

이러한 급격한 변화는 TCP 네트워크의 혼잡제어(Congestion Control) 방식과 관련이 있습니다. TCP 내부에서는 전송한 패킷에 대하여 ACK가 확인되지 않거나 NACK가 발생하는 경우 해당 패킷을 재전송하게 되며, 일정 시간동안 재전송 패킷을 수신할 수 있도록 ‘윈도우’라고 불리는 내부 버퍼의 크기를 증가시키고 대기하게 됩니다. 이렇게 온전한 데이터를 수신할 때까지 추가된 재전송 및 대기 시간 때문에 결과적으로 단위 시간당 전송할 수 있는 패킷의 수가 줄어들게 되며, 이는 대역폭의 감소 현상으로 보이게 되는 것입니다.

실시간 고해상도 영상 전송

영상 파일을 전송하고, 온전한 영상 파일을 획득한 이후 시청한다고 하면 일반적인 파일 전송과 다를바 없습니다. 그러나 영상을 전송하면서 동시에 시청하고자 한다면 사용자가 인지하는 영상 재생 품질의 확보 때문에 영상 전송에서 네트워크 불확실성의 극복은 앞으로도 계속해서 이슈가 될 것으로 생각됩니다.

지연시간, 패킷 유실률, 가용대역폭을 개선하여 네트워크의 불확실성을 줄인다고 하더라도 또 다시 문제가 되는 부분은 고해상도와 고품질이라고 정의한 영상이 얼마나 더 많은 대역폭을 앞으로 요구할 것인가를 알수 없다는 것입니다.

앞선 실험에서 확인한바와 같이 네트워크 혼잡도가 증가하는 경우에는 최종적으로 가용 대역폭의 축소로 나타나며, 수신부에서는 영상 재생에 필요한 데이터를 충분히 확보하지 못하고 버퍼가 비어있는 Underrun 현상이 발생하게 됩니다. Underrun 상태에서 어떠한 이유로 인하여 혼잡도가 해소 된다면 줄어든 대역폭 때문에 수신부까지 도달하지 못했던 패킷들이 다시 도착을 해서 순서대로 버퍼를 채우다보면 가용한 버퍼의 크기를 초과하는 Overrun 현상을 초래하게 됩니다. Overrun 상태에서 버퍼의 크기를 초과한 데이터 패킷은 버려지게 되고, 버려진 패킷만큼 또다시 버퍼가 비워지는 상황이 됩니다. 만약 버려진 패킷에 대해서 재전송 요청을 하였다면, 요청된 패킷을 전송하기 위해서 더 많은 대역폭을 사용하게 됩니다. 즉, Overrun과 Underrun의 발생은 무엇이 먼저 발생을 하였던 서로간의 트리거로 작용을 하게 됩니다.

네트워크 혼잡도에 따른 버퍼 상태 변화

실시간 영상 전송 중에 발생한 Underrun과 Overrun은 단순히 영상 품질의 저하 뿐만아니라 영상 재생 자체가 단절되는 현상으로 나타나며, 이를 방지하기 위한 방법은 불확실성 척도를 결정하는 요소와 관련된 문제를 해소하는 것입니다. 그러나 대역폭, 딜레이, 패킷 유실률 이 세가지 요소 중에 딜레이 요소는 네트워크 인프라스트럭처와 관련된 항목이기 때문에 소프트웨어 입장에서는 개선점을 찾기란 쉽지 않으며, 대역폭은 영상 품질, 패킷 유실률은 실시간성과 관련되는 요소이기 때문에 실시간 고해상도 영상 전송이라는 과제는 상반된 성질의 요구사항을 수용해야하는 문제라고 정의할 수 있습니다.

  • 대역폭 확보: 낮은 bitrate의 영상 송출 (저해상도/저품질)
  • 패킷 유실률: 재전송을 위한 충분한 버퍼 확보 (지연시간 증가)

혼잡제어 개선과 실시간 고해상도 영상 전송

불확실성 척도의 요소 중 대역폭과 패킷 유실률에 대해서 좀더 고민을 해본다면 대역폭의 변화는 결국 유실한 패킷에 대한 처리 방법 때문에 발생하는 것이라고 단순화할 수 있습니다. 또한 영상 전송에 한정하여 본다면 앞서 제시한대로 유실한 패킷을 모두 온전하게 다시 받아와야하는 것은 아니고, 경우에 따라서는 무시하고 진행을 할수 있다는 것이 결국 실시간 고해상도 영상 전송의 실마리가 됩니다.

UDP 기반의 SRT(Secure Reliable Transport)는 자체적인 혼잡 제어 방식을 가지고 있는 데이터 전송 프로토콜 중에 하나입니다. SRT가 혼잡 제어에 공헌하고 있는 방식은 크게 두가지 입니다. 첫번째는 사용자가 인지하는 지연 시간 내에서 전송 버퍼를 운용하는 방법이고, 두번째는 유실된 패킷을 전송하는 전략입니다.

버퍼와 흐름제어

SRT에서 권장하는 흐름제어를 위한 버퍼의 크기는 다음과 같은 기본 공식에 의하여 설정하는 것입니다.

  FCW (packets) = Bandwidth (bits) / 8 (bits/byte) * RTT (sec) / Chunk(bytes)

주목할 만한 것은, FCW를 계산하는 인자로 네트워크 대역폭(Bandwidth)와 전송 지연 시간(RTT)를 고려하고 있는 부분으로, 실제 데이터를 전송하기 전에 네트워크 정보를 알고 있다면 최적화된 FCW를 구할 수 있다는 것을 의미합니다.

실제 예를 들어본다면, 2Gbps의 대역폭을 가진 네트워크에서 150ms의 RTT가 측정이 되었다면 다음과 같이 계산할 수 있습니다.

  FCW = 2 * 100,000,000 / 8 * 0.15 / 1,472 = 25,475 (packets)

SRT에서 사용하고 있는 전송 단위는 헤더를 포함하여 1,472 bytes 이며 이를 Chunk의 값으로 사용하였습니다. 계산결과에 따르면 FCW는 25,475 packets 로 나타나고, 이는 약 300 Mbits (≈ 25,475 packets * 1472 bytes / packet * 8 bits / byte)를 의미합니다

즉, 이 네트워크의 경우 송신자가 데이터를 보내고, ACK를 수신하기 전까지 300Mbits의 데이터가 네트워크 상에 머무르고 있다는 것을 의미하며, 한번에 최대 300Mbits의 연속된 데이터를 전송과정에서 유실할 수 있다는 것을 의미하기도 합니다. 그렇기 때문에 SRT는 유실한 패킷을 재전송하기 위해 최소 버퍼로 FCW 크기보다 더 큰 값의 전송 버퍼를 유지할 것을 권장하고 있습니다.

Packet delivery

SRT 전송 방법은 패킷을 유실한 경우에 TSBPD(TimeStamp-Based Packet Delivery)와 TLPD(Too-Late Packet Drop)라는 두가지 전략을 통해서 패킷을 재전송하거나 재전송을 포기하는 방식을 취할 수 있습니다.

이 두가지 전송 전략은 실시간 영상 전송에 매우 효과적인 방식으로, 전송하는 데이터(패킷)을 원하는 시간에 사용할 수 있는가를 지표로 동작하도록 설계되어있습니다.

영상은 프레임 단위로 디코딩을 하게 되며, 하나의 프레임을 완성할 수 있을 때까지 데이터를 버퍼에 보관하고 있습니다. 한 프레임을 구성하는 패킷 중 일부가 유실된 경우, 해당 프레임을 재생할때까지 남은 시간보다 재 전송 시간이 짧으면 재전송을 요구하여 온전한 프레임을 구성하고, 반대의 경우라면 재전송 자체를 포기하거나 재전송이 진행 중에 있더라도 도착한 패킷을 버리는 전략을 수행하여 송/수신 버퍼를 효율적으로 운영하고 있습니다.

Timestamp-based packet delivery

TSBPD: Timestamp-based packet delivery

Too-Late packet drop

TLPD: Too-Late packet drop

고해상도 영상 전송 실험

다음은 5%의 패킷 유실 환경에서 각기 다른 프로토콜을 이용하여 4K 영상을 송출한 결과입니다.

프로토콜에 따른 영상 품질 비교

왼쪽 상단부터 시계방향으로 1)원본, 2)SRT 전송, 3)WebRTC(STUN), 4)RTSP 전송에 따른 영상 품질 결과 입니다. 패킷 유실률이 5%인 경우 SRT를 이용한 전송만 유일하게 영상 식별이 가능함을 알수 있습니다.

또한 SRT를 기반으로 하는 실시간 영상 전송 플랫폼인 황새울 프로젝트의 데모에서는 실제 비행하는 드론에서 RTSP와 SRT를 이용하여 동시에 영상을 전송하였을 응답 속도와 영상 품질 확보면에서 SRT가 유리함을 보여주고 있습니다.


불안정한 네트워크에서 고품질 고해상도 영상 전송 #1

불안정한 네트워크

TCP/IP의 특성상 데이터를 전송할 때, 각 패킷이 목적지까지 도달하기까지 어떠한 경로를 이용하는지 알기는 쉽지 않습니다. 목적지가 정해진 경우에는 대개 ping 명령을 이용하여 ICMP(Internet Control Message Protocol)를 통해 간단한 테스트를 수행할 수는 있으나, 명칭에서 유추할 수 있듯, 데이터가 전달되는 프로토콜인 UDP 혹은 TCP와는 별개의 프로토콜을 사용하는 것이기 때문에 실제 데이터를 전송할때 특성은 ping에서 보여준 결과와 다르게 나타날 수 있습니다. 이러한 경우를 종단간 (end-to-end) 네트워크 상태에 대해서 예측이 불가능하다고 이야기하고 있으며 대게 다음과 같은 조건에서 불확실성은 더 높아지게 됩니다.

  1. 대역폭이 현저하게 큰 경우 (>= 1Gbps)
  2. 네트워크 경로가 긴 경우 (Hop의 수가 많아 패킷 도달 시간이 늘어나는 경우)
  3. 경로 내에 불특정 다수가 사용하는 무선 네트워크가 포함된 경우

불안정한 네트워크라는 추상적인 용어는 결국, 전달하고자 하는 데이터가 원하는 시간안에 도착하지 못함을 의미하게 됩니다. 네트워크 상에 가용한 대역폭이 증가하면서 예상치 못한 문제들이 발생하게 되는데, 이 문제는 이미 BDP(Bandwidth-Delay Product)로 정의되어 ACK 혹은 NACK 없이 네트워크 상에 떠돌게 되는 데이터의 양이 불확실성을 야기한다고 설명하고 있습니다. 본 글에서는 네트워크 상태를 판단할때 패킷 유실율을 고려하여 불확실성의 척도를 정의하고자 합니다. 불확실성의 척도는 위 세가지 조건을 각각 대역폭(B), 딜레이(D), 패킷 유실률(L)로 단순화하여 그 세기(Strength) 값으로 환산할 수 있습니다.

불확실성 척도 = B × D × w (1 + L) 

위와 같이 정의한 불확실성의 척도를 이용하여 두 네트워크 상태를 비교한다면 다음과 같이 됩니다.

  경로 A 경로 B
대역폭 (B) 1 Gbps 500Mbps
딜레이 (D) 20 ms 30 ms
패킷유실률 (L) 1% 2%
불확실성 척도 20,200 15,300

패킷 유실률을 얼마나 큰 요소로 간주할 것이냐에 따라 가중치인 w 값을 조절할 수 있으나, 문제를 단순화하기 위해서 1의 값을 가지는 것으로 하였습니다. 위 테이블에서 계산된 값은 경로 A경로 B보다 더 큰값을 가지게 되는데 이를 정의한 불확실성의 척도 개념에서 해석하자면, 경로 A가 좀 더 강한 세기의 불확실성을 가지고 있다고 말할 수 있습니다. 이 값은 통상적으로 대역폭이 높고 종단간 딜레이가 적다는 것이 데이터 전송에 유리할 것으로 여겨지는 것과는 상반되는 내용일 수 있습니다. 그러나 여기서 주의해야할 점은 불확실성의 척도는 단순히 두 네트워크의 상태를 비교하기 위한 개념일뿐이며, 상태의 좋고 나쁨을 의미하는 것은 아니라는 것입니다.

전송 관점에서 고품질 영상

영상 전송이 원할하게 잘 되고 있다는 판단을 할때는 시각적으로 보여지는 정보에 따라 주관적으로 판단하는 경우가 많습니다. 예를들어 FHD와 UHD, 혹은 10fps와 60fps 라는 단순 영상 속성 정보를 제공했을때, 당연하게도 해상도가 더 큰 UHD와 움직임이 부드럽게 보일것이라고 예상되는 60fps가 더 높은 품질의 영상일 것이라고 예상할 수 있습니다. 그러나 실시간 영상 송출하는 경우에는 영상 속성으로는 품질을 정의할 수 없는 한계가 있습니다.

$ ffmpeg -f avfoundation -i 0  -s 640x480 -r 25 -c:v libx264 -b:v 2M -maxrate 2M -bufsize 1M output.mp4
$ gst-launch-1.0 \
    avfvideosrc ! video/x-raw,format=NV12,width=640,height=480,framerate=25/1 ! videoconvert ! \
    x264enc tune=zerolatency bitrate=2048 ! \
    h264parse ! mp4mux fragment-duration=1000 ! filesink location=./output.mp4

위 두 명령은 각각 ffmpeg과 GStreamer를 이용하여, Apple Mac의 카메라 인터페이스를 이용하여 영상을 획득하고 x264 라이브러리를 이용하여 H.264로 영상 압축을 수행한 뒤 mp4 포맷으로 레코딩을 수행하는 것입니다. ffmpeg의 경우에는 약간 모호하지만, GStreamer 명령을 통해서 본다면 영상의 해상도, 프레임 수는 카메라에서 원본 영상을 얻는 것과 관련 있는 속성임을 쉽게 유추할 수 있습니다. 다만 주목할 만한 것은 인코딩 부분의 bitrate 입니다. 위 두 명령모두 2Mbps를 대역폭으로 설정하였는데, 이는 영상 인코딩 후 출력 대역폭을 의미합니다. 즉, 카메라 부분의 해상도, 프레임 수 등의 변경은 인코더의 입력 데이터 양과 관련이 있기 때문에, 인코더 출력 대역폭 설정을 변경하지 않고 해상도 등의 속성을 변경한다면 높은 해상도에서도 낮은 품질의 영상을 얻게 됩니다. 반면에 카메라의 속성을 변경하지 않고 인코더의 출력 대역폭을 증가시키면 보다 원본에 가까운 고품질의 영상을 획득 할 수 있습니다. 여러가지 복잡한 상황을 모두 제외하고 단순화한다면, 고품질 영상을 전송한다는 것은 더 많은 데이터를 전송해야한다는 것을 의미하게 됩니다.

Next: 불안정한 네트워크에서 고품질 고해상도 영상 전송 #2