검색 전체 메뉴
PDF
맨 위로
OA 학술지
사용자 기반 가변 대역폭 영상 스트리밍 시스템 A User Driven Adaptive Bandwidth Video Streaming System
  • 비영리 CC BY-NC
  • 비영리 CC BY-NC
ABSTRACT
사용자 기반 가변 대역폭 영상 스트리밍 시스템

Adaptive bitrate (ABR) streaming technology has become an important and prevalent feature in many multimedia delivery systems, with content providers such as Netflix and Amazon using ABR streaming to increase bandwidth efficiency and provide the maximum user experience when channel conditions are not ideal. Where such systems could see improvement is in the delivery of live video with a closed loop cognitive control of video encoding. In this paper, we present streaming camera system which provides spatially and temporally adaptive video streams, learning the user’s preferences in order to make intelligent scaling decisions. The system employs a hardware based H.264/AVC encoder for video compression. The encoding parameters can be configured by the user or by the cognitive system on behalf of the user when the bandwidth changes. A cognitive video client developed in this study learns the user’s preferences( i.e. video size over frame rate) over time and intelligently adapts encoding parameters when the channel conditions change. It has been demonstrated that the cognitive decision system developed has the ability to control video bandwidth by altering the spatial and temporal resolution, as well as the ability to make scaling decisions

KEYWORD
멀티미디어 통신 , 인지 컴퓨팅 , 대역폭 적응 , 기계학습 , 사용자 선호도
  • Ⅰ. 서 론

    무선 네트워크가 더욱 보편화되고, 네트워크에 엑세스할 수 있는 장치의 수가 증가하면서, 보다 효율적인 비디오 스트리밍에 대한 필요성이 대두되고 있다. 폭주하는 트래픽으로 인하여, 대역폭 효율은 각 개별 사용자에게 최고의 경험 품질(QoE)를 제공하기 위해서 중요한 관심사가 되었다. 이와 동시에, 비디오 서버들은, 대역폭의 제약과 개선된 비디오 전송 방법에도 불구하고, 사용자가 중요하게 여기는 정보가 손실되지 않도록 비디오를 제공하여야 만 한다.

    이와 같은 문제를 해결하기 위하여 다양한 기술들이 개발되고 있는데, 실시간 스트리밍 프로토콜 RTSP[2], TCP, HTTP, [1,3-5] 등과 같이 기존의 프로토콜에 기초한 것과 대역폭 적응성에 관한 것이 있다. 대역폭 적응 기술에는 순차적 다운로드, 적응 비트율 (ABR) 스트리밍, 스트림 스위칭 등 [6]을 포함하고 있다. 또한, 코덱에 기반을 둔 다양한 접근 방법들이 개발되면서, 공간 및 시간적 해상도 의 스케일 가변이 가능하게 되었는데[7], 코덱에 기반을 둔 접근 방식의 주요한 예는 H.264/AVC와 H.264/SVC 라고 할 수 있다[8,9].

    그러나 이 기술은 비디오 대역폭을 제어하기 때문에 화소 품질 해상도에 영향을 미치게 된다. HTTP 적응 스트리밍 (HAS)[1] 또는 동적 적응 스트리밍 (DASH)[10]과 같이 널리 대중적으로 사용되는 스트리밍 솔루션들은, 채널 대역폭의 변화에 적응하기 위해서 비디오 스트림의 화소 비트율을 조절하므로 수신된 비디오 품질의 차이를 경험하게 된다.

    이러한 특징은, 원격 의료 진단 상담 시스템으로는 적합하지 않을 수 있다. 예를 들면, 원격 진료 환자는 화상이나 병변 등과 같은 의료 문제에 대하여 빠르고 효과적으로 진료를 받기 위해, 자신의 의사와 원격으로 진료 상담을 받을 수 있다. 그런데, 비디오 대역폭이 ABR에 의하여 제어됨으로써, 채널의 상태에 따라서 비디오 화소의 품질 해상도가 영향을 받는다면, 상담 의사는 시각적 비디오 품질이 충분하지 못하기 때문에 이용자에게 적절한 진단에 의한 유효한 진료를 제공하지 못할 수 있다. 원격 의료 진단 상담 시스템에서는, 채널 대역폭의 상태 조건에 따라 비디오의 시간적 해상도를 가변적으로 조절함으로써, 병변 등의 시각적인 정보는 손상되지 않고 그대로 유지하는 대신, 덜 중요한 시간적 정보는 희생할 수도 있을 것이다.

    본 연구에서는, 이와 같이 각각의 해상도 크기 전환을 지능적으로 결정하기 위한 사용자 프로파일을 개발하고, 이를 공간 및 시간적 해상도의 크기 결정에 연동함으로써 비디오의 응용별 최적의 경험 품질을 제공하는 시스템을 제안하고자 한다. 또한, 사용자가 매개변수 자체를 변경하지 않더라도, 시스템에서 사용자의 이용습관에 적합한 인코딩 매개변수를 선택할 수 있는 방법을 다루고자 한다.

    본 연구에서는, 사용자의 선호도를 학습하여, 비디오에 적절하게 적응할 수 있는 지원 벡터 머신(SVM: Support Vector Machine)을 생성하고, 사용자 선호도를 채널 대역폭과 비디오 콘텐츠 유형과 같은 상황적 비디오 특징에 기초하여 학습함으로써 다양한 비디오 상황에 대해서 서로 다른 기능으로 동작하도록 하고자 한다.

    Ⅱ. H.264 패킷화 및 프레임 인코딩

       2.1. H.264/AVC 개요

    H.264/AVC는, ITU-T의 비디오 코딩 전문가 그룹(VCEG)과 ISO/IEC의 동영상 전문가 그룹(MPEG)에 의하여, 화상 회의와 같은 “대화식”응용뿐만 아니라 방송 스트리밍과 같은 “비대화식”응용이 가능하도록, 향상된 비디오 압축과 “네트워크 친화적인”영상 표현을 목표로 설계, 개발된 비디오 코딩 표준이다[11]. VCEG와 MPEG는 2001년 12월에 통합 비디오팀(JVT)을 구성하고, 2003년 3월에는 공식 제출을 위한 H.264/AVC의 비디오 코딩 표준 초안을 완성하였다[11].

    이 표준은 효율적인 비디오 코딩을 제공함으로써 저장에서부터 스트리밍에 이르는 다양한 응용분야에서 사용될 수 있다. 이는 그 이전의 비디오 코덱에 비해 50% 또는 그 이상의 비트율 절감 효과를 제공하게 되었다[12]. 이러한 점으로, 특히 H.264/AVC는 무선 환경에 적용될 수 있도록 하였다. [13][14]에서는, IP 네트워크와 무선 환경에서, 비디오 압축을 위한 도구로서 H.264/AVC가 효율적이라는 것을 입증하였다. 또한, H.264에서는 품질 향상을 위한 기능과 맞춤화된 비디오 코딩에 대해서 상세한 설명을 제공하고 있다. 이러한 기능들의 몇 가지 예는 다음과 같다.

    또한, H.264/AVC는 다양한 환경에서 우수한 오류내성 및 유연성을 갖는 많은 기능들을 지원한다[11]. 이러한 중요한 기능 중 일부는 다음과 같다.

    [11][15]에서는 이러한 기능에 대한 각각의 보다 상세한 개요를 제공한다. H.264 / AVC 코덱의 구조는 그림 1에 표시하였다. 그림 1에 나타낸 코덱은 비디오 코딩 계층 (VCL: Video Coding Layer) 뿐만 아니라 네트워크 추상화 계층(NAL: Network Abstraction Layer)을 모두 포함하고 있다.

    NAL에서는 패킷화된 데이터에 헤더를 부여하지만, VCL에서는 비디오의 물리적 인코딩과 압축을 수행한다.

       2.2. NAL 유닛 헤더와 패킷화

    NAL은 다수의 전송 계층 프로토콜 (즉, UDP/RTP, 파일 포맷 등)에 데이터를 패킷화하여 매핑하는 것을 가능하도록 한다. 가장 중요하게 살펴보아야 할 부분은, NAL 유닛과 그와 다른 종류의 전송 계층 페이로드와의 관계이다. 특히, UDP/RTP상에서 비디오를 스트리밍할 때, NAL유닛을 보면, 프레임이 VCL로 인코딩할 때 데이터를 감싸는 역할을 함으로써 NAL 유닛을 구성한다.

    각 NAL유닛에는 이 유닛에 어떤 종류의 데이터가 포함되었는지 나타내는 1 바이트의 헤더를 포함하고 있다. 전송 계층에서 UDP/RTP를 사용하여 비디오를 스트리밍 하는 경우, 각 패킷의 시작 부분에는 NAL 유닛이 포함되어 있다. NAL 유닛은 인코딩된 데이터와 관련한 정보를 디코더에 전달하게 된다. NAL 유닛에는 1 바이트 헤더와 페이로드 바이트 문자열이 포함되어 있다[12]. 헤더에서는 NAL 유닛의 종류, 잠재적 오류 여부 그리고 디코딩 프로세스를 위한 이 NAL 유닛의 상대적 중요도 정보를 알려준다[12]. 1 바이트 NAL 유닛헤더의 구조는 그림 2와 같다.

    헤더의 각 필드들은 다음과 같이 설계 되었다.

    NAL 유닛의 중요한 유형들은, 주어진 비디오 스트림이나 개별 프레임에 관한 정보를 포함하는 매개변수들이다. 이는 프레임 열의 매개변수 세트와 화상 매개변수 세트로 나눌 수 있다. 프레임 열 매개변수 세트는 실제 비디오 스트림에 앞서 사전에 전송되어, 특정 세션 동안 가끔 일어나는 정보의 손실이 발생하지 않도록 강력하게 보호한다. 화상 매개변수 세트에는 특정 코딩된 화상이 변경되지 않은 채로 유지하는 관련 정보를 포함하고 있다. NAL 유닛 다음으로는, NAL 유닛 유형에 따라 디코더가 처리할 VCL 인코딩 프레임이 따라온다.

    NAL유닛은 해당 프레임이 인트라 코딩된 I-프레임인지 역방향으로 추정된 P-프레임 또는 양방향으로 추정된 B-프레임인지를 알려준다. H.264/AVC 규격에서는 디코더를 위해 다른 기능 지원이 가능하도록 프로파일 및 레벨 세트, 또한 정의하고 있다. 이는 표준을 적용한 여러 가지 다양한 응용 간에도 높은 수준의 호환성을 지원하기 위해 설계된 것이다. [11]에 따르면, “하나의 프로파일은, 그 레벨 값이 비트 스트림의 중요 매개변수에 대해서 제한을 두기 때문에, 확정된 비트 스트림을 생성하는데 사용될 수 있는 일련의 코딩 도구나 알고리즘을 설정한다.” 그러므로 많은 수의 다양한 프로파일을 통하여, 다양한 기능적 특징과 유연성 그리고 맞춤화를 제공하고 있다. 몇몇 프로파일의 예와 그들의 응용은 다음과 같다.

    화상회의 응용이나 본 연구에서 제안된 시스템과 같은 모바일 기기 스트리밍에서는, 한정기본 프로파일 또는 기본 프로파일을 사용하는 것이 적절하다. 프로파일 유형과 그 제약 조건에 대한 더욱 자세한 정보는 [15]의 섹션A.2에서 알 수 있다.

    본 연구에서는 한정 기준 프로파일을 사용하여 프레임을 인코딩한다. 따라서 가장 기본적인 특성 세트를 이용하므로 인코더는 I 와 P 프레임만을 지원한다. 이 프로파일에서는 B 프레임의 지원이 없다[15]. NAL 유닛 헤더에 근거하여, 송신되는 데이터 유형이 결정된다. 그림 3은 본 시스템에서 패킷을 구성하는 방법을 보여준다.

    매 패킷은 3 바이트의 0x00 로 채워진다. 여기에 그 프레임에 대한 NAL 유닛이 이어지고, 마지막으로, 인코딩된 데이터가 포함된다. NAL 유닛에서는, 첫 번째 바이트가 NAL 유닛 헤더가 된다. 본 연구에서는, NAL 유닛 헤더에 근거하여 NAL 유닛의 세 가지 유형을 정의하였다. :

    NAL헤더를 이용하여, 언제 비디오의 새로운 세그먼트가 시작하는지 결정하고, 각기 들어오는 패킷들의 상대적 중요도를 측정한다.

    Ⅲ. 스케일 가변적 비디오 코딩과 단일 계층 비디오 스트림

    비디오 스트리밍 시스템의 주요 관심사는 불확실한 채널 조건이 비디오 스트림의 품질에 영향을 미친다는 점이다. 예를 들어, 비디오 대역폭 B와 그에 따른 품질로 비디오 스트림을 송신할 때, 채널 대역폭 C가 C < B의 조건으로 변동하는 경우, 수신 단말기에서는 심각한 비디오 품질의 저하를 경험하게 된다. 이를 대처하기 위해서, 채널에 적합하도록 비디오의 특정 해상도를 변경할 수 있는 스케일 가변적 코덱이 개발되었다. 이는 비디오의 시간 및 공간적 해상도, 또는 비디오 화소 품질을 변경하는 것이다. H.264 / SVC와 같이 비트 스트림을 구성할 수 있는 코덱에서는, 비트 스트림의 어떤 특정 부분을 제거하더라도, 이에 따른 비트 스트림이 여전히 디코더에는 유효하도록 비트 스트림을 표현하는 방식으로 이를 구현할 수 있다[8].

    예를 들어, 송신기는 하나의 기본 계층 비트 스트림을 송신하고 수신기가 이들 중에 어떤 것을 디코더로 보낼지 선택할 수 있는, 다중 향상 계층 비트 스트림을 전송한다고 하자. 이 경우, 채널 대역폭 내에 필요한 비트 스트림만이 포함되도록 선택함으로써 비디오 대역폭을 제어할 수 있게 된다. 이것은 유효한 스트림을 표현하는 단일 비트 스트림이 주어진 디코더로 전송되는 전통적인 단일 계층 비디오 스트림과 극한 대조를 이룬다. 비디오 대역폭을 제어하기 위해서는, 송신기가 서로 다른 인코딩 변수로 소스 비디오를 인코드해야 하고, 수신 디코더는 이러한 변화에 대응할 수 있어야만 한다. 본 연구에서는, 변화하는 채널 조건에 따라 비디오 스트림을 조절하는 2가지 방법을 비교하고자 한다. 첫 번째는 [8]에서 논의된 H.264의 스케일 가변적 비디오 코딩 확장이고, 두 번째는 단일 계층 비디오 스트림을 이용하여 소스 단에서 인코딩 매개변수를 변경하는 것이다.

    H.264/AVC의 스케일 가변적 비디오 코딩 확장에서는, H.264의 기본적인 기능들을 모두 채택하였고, 스케일 가변적 비디오 스트리밍을 얻기 위해 필요한 기능을 추가하였다. 여기서, 우선적인 스케일 가변 매개변수로 시간 및 공간적 해상도 그리고 화소 품질 해상도를 지원한다.

    시간적 스케일 가변성을 얻기 위해서 송신기는, 한개의 시간적 기본 계층과 한 개 또는 그 이상의 시간적 향상 계층으로 구분되는, 다중 시간적 스트림을 전송해야 한다. 이 스트림에는 T0에서 Tk 까지의 레이블을 부여한다. 수신 디코더는, 현재의 스트림에서 이러한 접속 유닛 중에서 0부터 n까지(여기서 n < k) 어떤 것이 유효하고 유효하지 않은지 알 필요가 있다. 이와 같이, 스트림을 분해하고 유효한 스트림만을 실행하는 것은 이미 참조 화상 메모리 제어 방법을 채택한 H.264/AVC 표준에 제시되었다[8]. 스트림을 다중의 시간적 스트림으로 나누는 것은 그림 4에 표현하였다.

    공간적 스케일 가변성을 얻기 위해서, SVC는 계층간 추정을 통해 다중 계층 코딩을 이용하고 있다[8]. 다중 계층이 전송될 때, 각각은 특정한 공간 해상도에 대응되며 공간 계층 번호인 d에 대해서, 0부터 d-1 사이 정수 값을 갖는 연관 식별번호에 의해 참조된다. 화소 품질 스케일 가변성은, 동일한 공간적 해상도가 되도록 그 계층을 전송하는 공간적 스케일 가변성과 동일한 원칙으로 동작한다.

    비디오 스트림의 대역폭을 조절하는 또 다른 방법은 소스에서 단일 계층 인코딩을 사용하여 인코딩 매개변수를 조작하는 것이다. 단일 계층 인코딩된 비디오 스트림에서는, 하나의 비트 스트림이 인코딩되어 수신기로 전송된다. 이러한 비트 스트림은 비디오의 전체 프레임 열에 대해서 고정된 공간 및 시간적 해상도와 화소 품질 해상도를 유지한다. 코덱에는 공간 및 시간적 해상도 및 화소품질 해상도 미드 스트림을 변경하는 내장 메커니즘이 없다. 이 때, 비디오의 다른 세그먼트에 대해서는 소스에서 다른 인코딩 매개변수를 사용함으로써 비디오 대역폭을 제어 할 수 있다.

    비디오 스트림은 Tk, (k=0...n-1) 로 표시된 다중 세그먼트로 분할될 수 있다. 여기서 n은 주어진 세션에 대한 세그먼트 번호이고, 세그먼트 k가 시작되는 시각이 Tk이다. 매 시각 Tk마다, 비디오 대역폭이 채널에 맞게 변경되도록, 송신기가 인코딩 매개변수를 다시 설정하는 것이다. 이러한 분할 형태는 이미 사전에 알고 있거나 또는 허용 수준의 정확도로, 예를 들어 [16]에서 설명한대로 DiChirp과 같은 방법을 사용해서, 채널 대역폭이 측정 될 수 있다면 채널 대역폭의 함수로 결정될 수 있다. 송신기가 다시 인코딩 매개변수를 설정하여 송신할 때, 디코더에 인코딩된 비디오의 변화를 신호하도록 새로운 프레임 열 매개변수 세트가 스트림에 부여된다. 예시된 스트림을 그림 5에 표시하였다. 인코딩 매개변수를 변경하게 되면, 인코딩 과정을 새로 시작하는데 걸리는 시간동안의 시간지연이 스트림에 포함된다. 이런 시간지연을 보상하고, Tk 시각의 변경 과정을 처리하기 위하여, 수신기 구조를 그림 6과 같이 제안한다.

    제안한 수신기 구조에서는, 전처리 장치가 각기 수신되는 패킷의 NAL 유닛 헤더를 검사하여 언제 비디오 스트림이 변경되었는지 결정하게 된다. 이러한 구현에서, NAL 유닛 헤더가 0x67가 될 때, 새로운 세그먼트의 시작을 알린다. 이러한 과정에서, 휴지상태의 디코더 스레드가 깨어나서 비디오의 다음 프레임 열을 디코드 하도록 설정한다. 앞 서 활성화된 디코더 스레드는 새로운 비디오 세그먼트의 시작 전에 대기 열을 비우게 된다. 활성화 된 스레드가 종료를 알리면 새로운 스레드가 이 역할을 수행한다.

    본 연구에서 개발된 시스템에서는 비디오 대역폭을 조절하기 위하여, 그림 6과 같이 제안한 시스템 구조에서, 단일 계층 비디오 스트림을 사용한다. 이는 하드웨어 H.264/AVC 인코더를 이용하여 얻을 수 있다. 그 결과로, 실시간으로 인코더 초기화가 가능하고, 프레임을 인코딩하는데 수반되는 CPU 오버헤드도 소프트웨어 인코더 비하여 없었다. 또한, 이러한 실시간 효율성으로, 비디오 세그먼트 간에 최소한의 시간지연으로 빠르게 인코딩 변수를 전환하는 것이 가능하였다. 이로써, 각 비디오 세그먼트의 시간 및 공간적 해상도와 화소 품질의 해상도를 제어 할 수 있었고, 결과물의 효과만큼 비디오 대역폭을 제어할 수 있었다.

    Ⅳ. 시스템 구조

    제안된 시스템의 기본적인 구조는, 그림 7에 나와 있는 바와 같이, 스트리밍 클라이언트, 스트리밍 서버와 그 구성 요소로 이루어진다. 본 연구에서 개발한 카메라 시스템은 비디오 클라이언트와 스트리밍 서버로 구성된다. 새로운 스트리밍 세션을 요청하기 위해 클라이언트는 서버에 접속하고, 비디오 랜 VLC 플레이어에 기반을 둔 미디어 플레이어에서 비디오를 실행한다. 스트리밍 서버는 안드로이드 응용 프로그램으로 퀄컴 MSM8960 하드웨어에 구현된다.

    비디오는, 하드웨어 H.264 / AVC 인코더를 사용하는 디바이스 상에서 인코드되고, 상위 프로토콜(실시간 전송 프로토콜 (RTP)[12] 또는 실시간 스트리밍 프로토콜 (RTSP)[2] 등) 없이 원시 UDP 패킷을 이용하여, 클라이언트로 스트리밍 된다. 서버는 연결된 클라이언트로 유니 캐스트 스트림을 전송할 수 있도록 설계되었다. 그리고 클라이언트는 서로 다른 서버로부터 전송되는 어떤 수의 비디오 스트림이라도 볼 수가 있다.

       4.1. Client Design

    클라이언트는 주로 제어 센터와 한개 이상의 비디오창으로 구성되는 데스크 탑 어플리케이션으로 설계되었다. 비디오 윈도우에는 비디오를 표시하는 미디어 플레이어뿐만 아니라, 사용자가 스트림의 인코딩 매개변수를 조작할 수 있는 제어기능도 포함하고 있다.

    미디어 플레이어는, VideoLAN 그룹에서 개발하여 VLC 미디어 플레이어에서 사용하는 라이브러리인 LibVLC를 사용한다. 특정 스트림의 재생을 위해 필요한 주요 기능들이 미디어 플레이어에 캡슐화 된다.

    미디어 플레이어의 백엔드 구성에서는, 비디오 스트림을 역다중화하기 위하여 사용하는 2개의 디코더 스레드를 생성하는데, 이는 2.2 절에서 설명한 구조와 일치한다. 비디오 재생에 나타나는 중요한 효과를 보지 않고도 인코딩 매개 변수 미드 스트림의 동적인 변경을 가능하도록 하는 것이다. 이를 통하여, 비디오의 사용자 경험을 최적인 상태로 유지하면서 비디오 대역폭이 제어 될 수 있다. 미디어 플레이어의 상단에는 서버와 상호 작용하는 TCP 클라이언트가 위치한다. 새로운 비디오 스트림이 요청 되었을 때, 클라이언트는 서버에 접속하려고 시도하고, 연결이 성공하면, 미디어 플레이어를 시작한다. 이 클라이언트는 서버로 모든 요청을 보내고 응답에 적절하게 동작한다.

    클라이언트는 적절한 인코딩 매개변수를 선택하고, 채널 대역폭에 기초하여 비디오 대역폭을 관리하여야 한다. 이러한 면에서, 클라이언트는 현재의 채널 대역폭이 어느 정도인지 결정하고, 채널 조건 변화에 대응하는데 필요한 응용을 갖고 있다. 이러한 결정은, 정확한 사용자 선호도 모델이 개발되었을 경우에는 사용자의 선호도를 취하고, 사용자 선호도를 학습할 때에는 기본적으로 결정된 기능을 따른다. 얼마나 비디오를 스케일 가변할지 결정할 때, 클라이언트에서는 사용자를 방해하지 않을 만큼 지능적이어야 한다.

       4.2. Server Design

    본 연구에 사용된 카메라 서버 응용 프로그램은, 퀄컴의 APQ8060A 프로세서를 사용하는 DragonBoard APQ8060A 개발 보드에서 실행된다. 이러한 응용 프로그램은 공간 및 시간 해상도를 변화시키면서, 8MP 카메라로부터 라이브 비디오를 캡처할 수 있다.

    TCP 서버는 클라이언트로부터 오는 모든 연결과 요청을 처리한다. 각 연결 요구에 대해서, 새로운 스레드가 분기되어 클라이언트와 서버 간 인터페이스로 동작한다. 비디오 스트림의 해상도의 조절을 가능하게 하는 각 스레드에게 인코더에 대한 핸들이 주어진다. 그 핸들은 “인코더 활성화 인터페이스” 라고 하는 객체에 캡슐화 된다. 이 객체는, 이름에서 알 수 있듯이, 인코더뿐만 아니라 카메라에 대한 인터페이스 역할을 한다.

    이 인터페이스를 통해, 사용자는 특정 비디오 스트림에 대해 인코더를 초기화 및 종료 그리고 변경할 수 있다. 이는, 클라이언트가 비디오 대역폭을 포함하여 비디오의 매개변수를 전역적으로 제어 할 수 있도록 한다. 클라이언트 응용 프로그램은 사용자 선호도를 학습하여 인코딩 매개변수에 대해서 보다 지능적으로 결정하기 때문에, 서버는 채널 조건을 알지 못한 상태로 유지되고 연결된 클라이언트에 종속적으로 동작하며 클라이언트의 요청에 따라 스트림을 재구성한다.

       4.3. 세션 관리

    제안한 시스템에는, 클라이언트와 서버 사이의 메시징을 위해 TCP를 사용하는 통신 계층이 포함되어 있다. 이 통신 계층은 세션 관리자의 역할을 한다. TCP는 단말 간의 신뢰성 있는 메시지 통신을 위해 사용될 뿐만 아니라 스트리밍 세션의 시작과 끝을 알리기 위해 사용된다. 일단 서버가 클라이언트의 연결을 허용하면 스트리밍 세션이 시작되고 단말기의 연결이 끊어지면 종료된다.

    클라이언트가 서버로부터 특정 스트림을 수신하고자 할 때, 먼저 서버와 연결을 시도한다. 연결되면, 서버는 클라이언트의 요청을 처리할 새 스레드를 초기화 한다. 서버 스레드는 먼저 인코더를 시작시키고 H.264로 인코딩된 프레임들을 포함하는 패킷의 스트리밍을 시작한다. 이 스레드는, 해당 클라이언트가 연결 해제되었음이 검출될 때까지, 클라이언트의 요청에 응답하는 루프에 진입하게 된다. 이러한 요청을 위해 매우 간단한 프로토콜을 정의하였는데, 클라이언트가 직접 인코딩 매개변수를 변경하거나, 비디오 스트림을 중단하도록 하는 것이다. 이전에 스트림이 중단되었다면, 인코딩 매개변수를 갱신하기 위한 요청도 역시 스트림을 다시 시작하도록 한다. 인코더를 갱신하기 위해, 클라이언트는 다음과 같은 메시지를 전송한다.

    여기서, “width”는 새롭게 원하는 가로 폭이고, “height”는 새롭게 원하는 세로높이, “fps”는 이때 원하는 프레임율이며, “rate”는 원하는 비디오 화소 품질 비트율이다. 인코더를 중지하려면, 다음과 같은 메시지가 중단 요청 작업을 위해 전송된다.

    연결이 해제되면, 클라이언트의 요청을 처리하는 스레드는 인코더를 종료하고, 비디오 스트림을 중지한 후 종료된다.

    Ⅴ. 스냅드래곤 비디오 프레임 워크

    DragonBoard APQ8060A에는 오디오와 비디오 모두를 위한 다양한 하드웨어 기반의 코덱이 장착되어 있다. 본 연구에서는 실시간으로 프레임을 인코딩하기 위해 하드웨어 인코더를 사용한다. 또한, 추가적으로 속도를 높이면, 본 연구의 비디오 스케일링 방법에 커다란 도움이 된다.

    구성하고 있는 하드웨어에 접속하기 위해서, 안드로이드는 하드웨어 미디어 코덱과 상호 작용하여 사용하도록 하는 IOMX 라는 OpenMAX 통합 계층으로의 접속기능을 제공한다. OpenMAX 통합 계층은, 하드웨어 및 소프트웨어 아키텍처의 최상단에 추상화 계층을 제공하도록 설계된 멀티미디어 컴포넌트 기반의 API이다. 또한, 일련의 디바이스 장치들에게 미디어 컴포넌트 이식성을 제공하도록 설계되었다. 그림 8은 OpenMAX 로 설계된 다양한 계층을 보여준다.

    그림 9의 Stagefright 미디어 프레임 워크 도입으로, 구글은 안드로이드 운영체제에 OpenMAX IL 기능을 추가함으로써, OEM들에게도 하드웨어에 대한 인터페이스로 동작하는 소프트웨어 후크를 개발자에게 제공할 수 있게 되었다. 더구나, 퀄컴은 IOMX를 이용하여 다양한 오디오 및 비디오 포맷으로 인코딩 및 디코딩하는 다양한 샘플 API 를 개발하여 제공하고 있다. 서버에서는 이 장치의 H.264 / AVC 하드웨어 인코더와 상호작용하는 API를 활용한다. 퀄컴의 구현에서는, 그림 10에 도시 된 바와 같이, 몇 개의 추상화 단계로 세분화하였다. 가장 낮은 단계는 하드웨어, OpenMAX IL 및 IOMX이다. 이러한 API는 IOMX를 감싸고 있는 C + + 클래스뿐만 아니라, C로 작성된 공용 인터페이스도 구성함으로써 상위 수준의 코드를 쉽게 사용할 수 있도록 한다. 이는 사용 가능한 코덱을 조회하여 활성화하고 세션을 초기화하며, 프레임을 인코딩 / 디코딩하고 세션이 종료되면 마무리를 실행한다.

    본 연구에서는, 안드로이드 응용 프로그램에서 API의 공용 인터페이스와의 상호 작용을 가능하게 하는 자바 네이티브 인터페이스 (JNI)를 통해, 퀄컴 API를 사용한다. 본 연구에서 개발된 응용 프로그램은 이러한 API를 활용하여 신속하고 효과적으로 비디오를 실시간으로 인코딩한다. 또한, 인코딩 세션의 활성화 및 종료가 아주 최소한의 지연시간으로 이루어진다.

    Ⅵ. 사용자 프로파일과 대역폭 최적화

    사용자 프로파일의 개발을 통하여, 클라이언트 사용자가 비디오를 어떻게 변경해야 하는지 지능적인 스케일 가변 결정을 하도록 한다. 이것은 변경된 환경조건에서 어떻게 비디오를 스케일 가변적으로 할 지 알아내는 부담을 해소해 주는데, 광범위하게 사용되는 시스템에서 이는 필수적이다. 본 연구에서 제안한 학습 및 예측 메커니즘은, 사용자의 선호도에 맞추어 동적으로 적응한 비디오 스트림을 제공하는 간단하지만 효과적인 방법을 제시한다.

       6.1. 사용자 선호도 및 프로파일

    사용자 프로파일은, 비디오가 전송 채널에 최적화 되어 있지 않을 때, 어떻게 비디오를 가변 스케일링해야 하는지를 결정하는 클라이언트 응용을 위해 개발되었다. 개발된 프로파일은, 사용자가 비디오 품질과 관련하여 자신의 선호도를 나타내는 네 개의 개별 클래스중 하나를 선택하도록 한다.

    이러한 사용자 선호도를 알면, 우선순위에 따라 비디오 해상도를 계량하여 비디오 대역폭을 최적화할 수 있다. 이것은, 새로운 인코딩 매개변수를 결정할 때, 낮은 우선순위의 매개변수를 더 가혹하게 처리하도록 클라이언트로 전달한다. 이 클래스를 바이너리 비트 형태로 변환함으로써, 첫 번째 비트는 시간 해상도 선호도를, 두 번째 비트는 공간 해상도 선호도를 전달하는 2 비트 값으로 나타낼 수 있다. 설정된 비트는 이 해상도에 주어진 높은 가중치의 필요를 나타내고, 미 설정 비트는 비트가 나타내는 해상도를 최적화하기 위한 욕구가 미지수라는 것을 나타낸다. 이러한 방법으로, 비디오 대역폭이 채널 대역폭에 맞추고, 품질의 관점에서 사용자의 욕구에 부합하는 시간 및 공간적 해상도로 변경할 수 있는 가장 효과적인 방법을 찾을 수 있다. 이러한 사용자 프로필은, 지원 벡터 머신을 이용하여 선호도 분류 문제를 해결함으로써, 기계학습을 통하여 생성될 수 있다.

       6.2. Creating User Profiles

    각 사용자에 대한 프로파일을 생성하기 위해서, 사용자의 행태에 기반을 둔 클래스 예측 결정 함수를 생성하는 학습 알고리즘을 사용한다. 결정 함수는, 방사형 기저커널[17]로 구현한 C 지원 벡터 머신인 LibSVM을 이용하여 계산할 수 있다. 기계 학습에서는, 일련의 트레이닝 샘플로 이루어진 트레이닝 세트가 학습 알고리즘의 입력으로 제공되고, 출력은 결정 함수의 계수 집합이 된다. 선호도 클래스 분류 문제에서, 트레이닝 샘플들은 출력과 관련된 기능 집합의 값이고, 어떤 클래스가 이 샘플에 부합하는지 알려주는 벡터에 대한 레이블이 된다. 이 연구에 사용된 특징적 기능은 채널 대역폭과 비디오의 콘텐츠 유형 (즉, 고품질의 의료 비디오, 대화하는 얼굴 비디오, 스포츠 이벤트 비디오 등)이다. 방사형 기저 커널로 구현된 2개의 C 지원 벡터 머신은 2개의 선호도를 학습하는데 이용된다. 본 연구에 사용된 C 지원 벡터 머신의 클래스 분류화 알고리즘은 [17]에 정의하였다.

    사용자 선호도를 학습하기 위한 지원 벡터 머신을 사용하기 위하여, 트레이닝 특징 벡터 xiRn, i = 1...l와 클래스 레이블 벡터 yi∈{1, - 1}를 정의한다. 여기서 1과 –1은 2개의 서로 다른 클래스를 의미한다. 그러면, w를 벡터 매개변수라고 할 때, 식 (1)에서의 원시 최적화 문제를 해결하여야 한다.

    image

    여기서, ξi는 최적화 변수이며, ϕ(xi)는 xi를 상위 차원 공간으로 매핑하고, C 는 구성 매개변수(C > 0)이다. 식 (2)에 표시된 이중 문제는 벡터 매개변수 w의 가능한 상위 차원을 고려하기 위하여 해를 구하여야 한다.

    image

    여기서, e는 원소가 모두 1인 종 벡터이고, Q(i,j) = yiyjK(xi,xj)와 K(xi,xj) ≡ ϕ(xi)Tϕ(xj) 는 방사형 기초함수 (RBF)인데 Ql × l 매트릭스 이다. RBF K는 식 (3)에서와 같은 가우시안 분포이다.

    image

    여기서 γ는 사용자에 의하여 지정되는 매개변수이다. 마지막으로 최적의 w는 식 (4)을 이용하여 계산되어지고, 이에 의한 결정 함수는 식 (5)와 같다. 여기서 αi는 웨이트 벡터이다.

    image
    image

    xiyi의 그래픽 표현을 고려할 때, x로 부터 각 벡터와 연관된 다차원 입력 공간과 클래스 레이블이 존재한다. 지원 벡터 머신은, 비선형적 분리를 지원하기 위한 커널을 사용하여, 최대폭의 여유도를 갖고 2개의 클래스를 분리할 수 있는 초평면을 찾으려고 시도한다. 이 초평면에는 새로운 입력 벡터에 대한 클래스 레이블을 추정하는 데 사용되는 식 (5)의 결정 함수가 나타난다. 본 연구에서는, 지원 벡터 머신을 훈련하여, 암시적 및 명시적 피드백의 조합을 통하여 사용자의 선호도를 예측한다.

    새로운 사용자가 시스템과 상호 작용을 시작하면, “학습 모드”로 초기화 된다. 학습 모드에서는, 채널 대역폭의 변화가, 시스템에 의하여 공간 및 시간적 해상도는 불변으로 두고, 비디오의 품질 해상도를 간단히 바꾸는 “반사적” 반응을 가져온다. 명시적 피드백은 사용자로부터 얻어진다. 사용자와 시스템의 상호 작용을 기록하고, 지원 벡터 머신에 대한 트레이닝 데이터 세트를 형성한다.

    트레이닝 세트가 지원 벡터 머신을 정확하게 트레이닝 할 만큼 충분히 크다면, 식 (1)의 C와 식(3)의 γ가 정확하게 선택될 수 있도록 3중 교차 검증이 수행된다[17]. 이로부터 추정하는데 사용되는 결정 함수가 생성된다. 명시 적 피드백 처리과정은 그림 11과 같다.

       6.3. 비디오 대역폭의 결정

    비디오 대역폭을 재계산하는 시점은 채널 조건이 비디오 스케일을 가변할 만큼 충분히 크게 변할 때라고 할 수 있다. DiChirp [16]과 같은 방법들은 통하여 높은 정확도로 채널의 대역폭을 추정할 수 있다. 제안된 시스템에서 다양한 비디오 해상도를 변경하는 것이 어떻게 비디오 대역폭에 영향을 미치는지 보고자 한다. 비디오의 화소 품질을 변경하기 위하여 비디오의 비트 압축률을 변경한다. 최대 비트율은 알고 있는 채널 대역폭과 최적화 상수의 함수로 간단하게 계산 될 수 있다:

    image

    여기서, Bitratemax는 허용 가능한 최대 비트율이고, Bandwidthchannel은 채널 대역폭이며, K는 가용 대역폭의 비율을 결정하는 최적화 상수이다. 현재 사용하는 인코더의 제약으로 인해, 최대 비트율은 프레임율의 함수로서 계산되어야 한다. 다음과 같은 계산이 사용된다.

    image

    여기서, T는 비디오의 프레임율이다. 주어진 공간적 해상도에 대한 최적화 비트율은 비디오 크기와 최적화 상수의 함수로 구할 수 있다.

    image

    여기서, width과 height는 영상의 크기이며, Qmax는 정해진 공간 해상도의 비디오 품질을 제공하기 위해 필요한 비트율을 구성할 수 있는 최적화 상수이다. 채널 대역폭에 대해 변경되는 출력 비트율은 Bitratemax 가 된다. 이 경우, 비트율의 최선의 선택은, 최대 허용 비트율을 선택하거나, 또는 주어진 채널, 공간 해상도 및 시간 해상도에 대해 필요한 최대 비트율을 선택하는 것이다. 그러므로 출력 비트율은 다음 두 방정식 (9) 또는 (10)로부터 선택될 수 있다.

    image
    image

    클라이언트에게 최상의 품질을 제공하기 위해 필요한 가장 높은 비트율은 식 (10)으로 주어진다. 시간과 공간 해상도를 결정하는 것은, 일단 비트율이 Bitratemax에 도달하게 되면, 더 높은 값을 선택하면 품질 저하가 생기므로 품질 해상도에 영향을 미친다.

    이러한 2개의 매개변수를 설정하기 위해서 사용자 클래스를 검사하는데, 사용자 클래스를 통하여 시간적 / 공간적 해상도가 최적화 되었는지 또는 비디오 화소 품질이 최적화 되었는지 알 수 있다.

    본 연구에서는, 가능한 시간 해상도 값을 30fps(frame per second:초당 전송 프레임수)과 15fps로 제한하였다. 시간 해상도 비트가 사용자 클래스에 설정된 경우에는 프레임율은 단순히 30 fps가 되고, 설정되지 않은 경우에는 프레임율은 15fps로 한다. 공간 해상도 비트가 설정되면, 공간 해상도를 최대값으로 변경한다. 비트가 설정되지 않았으면, 시스템은 우선 Bitratemax를 계산하고, 다음의 조건이 될 때까지 공간 해상도를 감소시킨다.

    image

    이를 통하여, 최적 품질의 비디오를 제공하기에 충분한 공간 해상도를 얻을 수 있다.

       6.4. 비디오 스케일의 결정

    비디오 대역폭의 최적화 방법은, 설정된 기능에 대해 사용자가 Tk 시간에 (비디오의 k 번째 세그먼트의 인코딩 매개변수를 선택한 순간) 속한 사용자 클래스에 의해 결정된다. 채널 대역폭이 크게 변경되면, 먼저 취하는 동작은 이미 생성된 2개의 결정 함수를 사용하여 사용자의 선호도를 예측하는 것이다. 이는 사용자 클래스로 제공되는 비트마스크를 따른다.; 이 클래스의 주된 목적은 인코딩 매개변수를 가변하는 순서를 지정하는 것이다. 이러한 순서는 비디오 대역폭의 증가 또는 감소 여부에 달려있다. 그림 12에 주어진 도표는 비디오 대역폭을 결정하는 대역폭 설정 메커니즘을 나타낸 것이다.

    클라이언트 응용에서는 채널 대역폭의 변경에 적응하여, 사용자 욕구 를 성공적으로 충족하도록 인코딩 매개변수를 변경한다.

    Ⅶ. 실험 결과 및 고찰

       7.1. 가변 대역폭에 따른 스트리밍 영상의 해상도 선택

    상황인지 비디오 스케일 가변 솔루션을 검증하기 위하여 그림 13에 나타낸 것과 같이 테스트베드를 개발하였다.

    임의의 서브넷 상에서 클라이언트 장치를 DHCP 서버로 설정하고, 임베디드 비디오 서버에 직접 접속하여 IP 주소를 할당하도록 세팅함으로써, 클라이언트와 서버 간의 점 대 점 연결을 생성하였다. 실험실 환경에서 인터넷의 동작 상태를 모의실험하기 위하여, 네트워크 에뮬레이터인 DummyNet을 사용하였다. DummyNet에서는 대역폭을 제한하거나, 패킷 손실을 삽입하고, 지연시간을 삽입함으로써 설정한 채널에서의 트래픽을 모의적으로 제어할 수 있다. 대역폭의 변화를 모의실험하기 위하여, 클라이언트는 채널 대역폭 정보를 포함한 파일로부터 대역폭 정보를 읽어오도록 하였다.

    이 테스트베드에서는, DummyNet을 사용하여 임의의 간격으로 변화하는 값으로 채널 대역폭을 설정하는 동시에, 클라이언트가 읽을 수있는 파일에 이 대역폭을 기록하는 테스트 응용 프로그램을 개발하였다. 이를 통하여, 실제 네트워크 조건의 일부를 구현하고, 클라이언트 응용 프로그램에서 대역폭을 알 수 있도록 하였다.

    실험에 사용된 영상 데이터는 실험실에서 디지털 카메라를 이용하여 촬영한 후 후처리 공정을 통하여 해상도와 프레임율을 가변할 수 있도록 하였다. 실시간으로 촬영된 영상을 처리할 수 있도록 카메라 제어장치를 통하여 영상의 해상도와 프레임율을 제어할 수 있도록 비디오 영상 변환 라이브러리를 활용 하였다.

    첫 번째 실험에서는, 공간 해상도를 변경함으로써 비디오 대역폭을 제어할 수 있는 시스템의 능력을 테스트 하였다. 채널 대역폭은 일정하게 유지하고, 프레임율은 초당 30 프레임으로 유지하였다. 공간 해상도를 800x480에서 320×240으로 그리고 480X320의 해상도로 변경하였다. 비디오를 캡처하고 비디오 대역폭을 표시하기 위하여 Wireshark를 사용하였으며 그림 14의 결과를 얻었다.

    공간 해상도를 변경하면, 비디오 대역폭은 그에 따라 변경된다. 이러한 변경은 직접적으로 해상도변화에 비례적이라는 것을 쉽게 알 수 있다. 예를 들어, 공간 해상도를 800×480에서 480X320으로 변경하였을 때, 각 해상도에 대한 전체 화소 비율과 비디오 대역폭 비율은 동일하다:

    image

    이러한 결과로 볼 때, 비디오의 공간 해상도를 변경함으로써 비디오 대역폭을 성공적으로 제어할 수 있다는 것을 입증하였다. 다음의 테스트에서는, 비디오 압축량(픽셀 당 비트 수)를 변화시킴으로써 비디오 비트율을 제어 할 수 있고, 비디오 화소 품질의 변화를 결과로 얻을 수 있었다. 채널 대역폭을 1600Kbps부터 400kbps로 그리고 800Kbps로 변경함으로써 채널 대역폭의 변화에 대한 이 시스템의 반응을 시험하였다. 공간 해상도는 800x400으로 일정하게 유지하고, 시간 해상도는 30fps로 일정하게 유지 하였다. 비디오 비트율 뿐만 아니라, 재생 품질의 변화 결과는 그림 15에 표시하였다.

    그림 15에서와 같이 시스템은, 비디오의 화소 품질 해상도를 감소시킴으로써, 성공적으로 즉각 채널 대역폭의 변화에 대응하였다. 또한, 사용 가능한 채널 대역폭의 감소에 대해 비디오 비트율은 직접적으로 비례하여 감소하였다. 마지막으로, 채널 대역폭이 변동되었을 때, 사용자의 선호도를 결정하여 적절히 비디오를 스케일 가변하는 기능을 시험하였다.

       7.2. 사용자 선호도 학습 및 프로파일 생성

    연구 목적에 따라, 시스템이 적절히 학습하고 예측하는 시스템 기능을 입증하기 위하여, 임의의 트레이닝 세트로 진행하는 학습 메커니즘을 구현하였다. 이미 알고 있는 미리 정의 된 트레이닝 세트를 사용하여, 기대값과 실험 예측 값을 비교함으로써, 상황 인지 메커니즘의 정확도를 검증하였다. 사용 된 트레이닝 세트는 표 1에 제시하였으며, 이 트레이닝 세트의 클래스 분포는 그림 16의 그래프로 표시하였다.

    [표 1.] 학습 트레이닝 세트

    label

    학습 트레이닝 세트

    “콘텐츠 형식”이라는 기능은 실제 시나리오에 의해서 전송되는 서로 다른 장면을 분류하는 데 사용된다. 예를 들어, 유형 2의 콘텐츠 유형은 매우 높은 대역폭과 높은 비디오 품질을 요구하는 “의료 영상” 기준 장면이 될 수 있고, 유형 0의 콘텐츠 유형은 “말하는 얼굴” 기준 장면으로 비디오 화상 회의의 유형이 될 수 있다. 이 실험에서는 3가지 서로 다른 콘텐츠 유형이 사용되었으며, 표 2에 근사 예상 예측 값을 나타내었다.

    [표 2.] 컨텐츠 유형별 예측 기댓값

    label

    컨텐츠 유형별 예측 기댓값

    지원 벡터 머신을 훈련시키고, 콘텐츠 유형 0, 1 및 2의 비디오 스트림을 보는 동안 대역폭을 1600Kbps, 800Kbps 및 400Kbps로 설정함으로써 학습 메커니즘을 테스트하였다. 식 (6)으로 K 매개변수를 0.85로 선택하고, 식 (8)에 의해 Qmax 매개 변수를 3.5로 선택하였다. 모든 실험에서의 출력 비트율은 식 (9)에 의하여 선택하였다. 대역폭 변경, 인코딩 매개변수 변경 및 클래스의 예측 결과는 그림 17, 그림 18, 그림 19에 표시하였다.

    모든 경우에서, 채널 대역폭이 변경될 때, 비디오 대역폭은 잘 적응되었다. 또한, 비디오 대역폭은 K의 선택 결과에 따라, 일관되게 채널 대역폭의 85%를 유지하였다.

    예측의 정확성을 검증하기 위해, 표 3에서 예상 클래스 값과 각 시각 T0, T1 및 T2에 추정된 클래스 값을 비교하였고. 여기서 T0는 채널 대역폭이 1600Kbps로 변경되는 순간이다.

    [표 3.] 예측 기대 클래스 대비 예측된 클래스

    label

    예측 기대 클래스 대비 예측된 클래스

    표에서 보는 바와 같이, 지원 벡터 머신은 올바른 클래스를 100 %의 정확도로 예측하였다. 또한, 인코딩 매개변수에 대한 변경 결과는 그림 12에 정의된 비디오 변경 메커니즘을 따르고 있다. 클래스 0로 예측되었을 때, 픽셀 당 비트수를 적게 취함으로써 공간 및 시간적 해상도를 고해상도로 유지할 수 있었다. 클래스 1이 예측되면, 시간적 해상도는 높은 상태를 유지하고, 공간해상도가 감소되었다.

    클래스 2의 예측에서는, 공간 해상도를 높게 유지한 상태로 시간적 해상도의 손실이 초래되었다. 마지막으로, 클래스 3이 예측되었을 때에는, 공간 및 시간 해상도가 모두 축소된 반면, 픽셀 당 더 많은 비트를 갖는 높은 화소 품질의 결과를 얻을 수 있었다.

    Ⅷ. 결 론

    비디오 스트리밍 관련된 인터넷 트래픽 량이 증가함에 따라, 비상한 비트율 적응기법의 중요성이 대두되고 있다. 또한, 이러한 방식은 채널 대역폭뿐만 아니라 스트리밍되는 비디오의 이용 환경 상황을 알고 있어야만 한다. 이 상황정보는 비디오의 컨텐츠 유형으로 캡슐화될 수 있고, 동영상의 움직임의 양이나 지리적 공간위치 등과 같은 다른 차원으로 확장할 수 있다.

    본 연구에서는, 채널 대역폭이 제한되었을 때, 단순히 비디오 화소 품질에 해당하는 화소 당 비트수를 변경하는 것을 넘어, 다양한 종류의 비디오 스트림 전송률을 적응적으로 변경하는 해결책을 제시하였다. 개발된 시스템에서는, 비디오 품질에 대한 사용자의 선호도를 예측, 결정함으로써, 사용자가 비디오 화소 품질 해상도에 비해 시간적 또는 공간적 해상도의 저하를 선호하는 경우도 고려할 수 있도록 하였다. 이와 같이 시간 및 공간적 해상도를 변경함으로써 채널 대역폭의 변경에 적응하는 것을 입증하였다. 또한, 지원 벡터 머신을 이용하여 사용자 선호도를 학습하고, 이에 따라 성공적으로 비디오 대역폭을 조정하는 것을 보여 주었다. 이러한 시스템은, 원격 의료 진단 시스템과 같이 비디오의 상황 정보에 따라, 비디오 스케일을 가변할 필요가 있는 응용 및 비디오 제공자에게 적합하며, 급증하는 비디오 소비자의 다양한 소비 패턴에 대해 상황 인지 기법을 적용한 솔루션이 될 수 있을 것으로 기대한다.

    본 연구에서는 가변적 채널 대역폭에 적응하여 화소 품질 해상도, 시간적 또는 공간적 해상도를 가변함으로써 사용자의 응용에 따라 선택할 수 있도록 하였다. 그러나 이러한 적응적 가변성을 적용할 수 있는 응용 분야의 개발이 필요하며 이러한 응용에 적합한 사용자 선호도 모델링 기법의 개발이 필요할 것으로 사료된다.

참고문헌
  • 1. Oyman O., Singh S. (2012) Quality of experience for http adaptive streaming services [IEEE Communications Magazine] Vol.50 P.20-27 google cross ref
  • 2. Schulzrinne H. Real time streaming protocol (rtsp). google
  • 3. Http live streaming overview google
  • 4. Zambelli A. Iis smooth streaming technical overview google
  • 5. Adhikari V. K., Guo Y., Hao F., Varvello M., Hilt V., Steiner M., Zhang Z.-L. 2012 Unreeling netflix: Understanding and improving multi-cdn movie delivery [in: 2012 Proceedings IEEE INFOCOM, IEEE] P.1620-1628 google
  • 6. De Cicco L., Mascolo S., Palmisano V. Feedback control for adaptive live video streaming [in: Proceedings of the second annual ACM conference on Multimedia systems, ACM, 2011] P.145-156 google
  • 7. Ohm J.-R. (2005) Advances in scalable video coding [Proceedings of the IEEE] Vol.93 P.42-56 google
  • 8. Schwarz H., Marpe D., Wiegand T. (2007) Overview of the scalable video coding extension of the h. 264/avc standard [IEEE Transactions on Circuits and Systems for Video Technology] Vol.17 P.1103-1120 google cross ref
  • 9. Unane I., Urteaga I., Husemann R., Del Ser J., Roseler V., Rodriguez A., Sanchez P. 2011 A tutorial on h.264/svc scalable video coding and its tradeoff between quality, coding, effi ciency, and performance, in: J. D. S. Lorente (Ed.), Recent Advances on Video Coding google
  • 10. Lohmar T., Einarsson T., Frojdh P., Gabin F., Kampmann M. 2011 Dynamic adaptive http streaming of live content [in: 2011 IEEE International Symposium on a World of Wireless, Mobile and Multimedia Networks (WoWMoM), IEEE] P.1-8 google
  • 11. Wiegand T., Sullivan G. J., Bjontegaard G., Luthra A. (2003) Overview of the h. 264/avc video coding standard [IEEE Transactions on Circuits and Systems for Video Technology] Vol.13 P.560-576 google cross ref
  • 12. Wenger S., Stockhammer T. Rtp payload format for h. 264 video. google
  • 13. Wenger S. (2003) H. 264/avc over ip [IEEE Transactions on Circuits and Systems for Video Technology] Vol.13 P.645-656 google cross ref
  • 14. Stockhammer T., Hannuksela M.M., Wiegand T. (2003) H.264/AVC in wireless environments [IEEE Transactions on Circuits and Systems for Video Technology] Vol.13 P.657-673 google cross ref
  • 15. H. ITU-T RECOMMENDATION, 264 advanced video coding for generic audio visual services, ISO/IEC 14496. google
  • 16. Ozturk Y., Kulkarni M. (2008) DiChirp: direct injection bandwidth estimation [International Journal of Network Management] Vol.18 P.377-394 google cross ref
  • 17. Chang C.-C., Lin C.-J. (2011) Libsvm: a library for support vector machines [ACM Transactions on Intelligent Systems and Technology (TIST)] Vol.2 P.27 google
OAK XML 통계
이미지 / 테이블
  • [ 그림 1. ]  H.264/AVC 인코더 구조 [11]
    H.264/AVC 인코더 구조 [11]
  • [ 그림 2. ]  NAL 유닛 헤더 구조
    NAL 유닛 헤더 구조
  • [ 그림 3. ]  H.264 패킷 형식
    H.264 패킷 형식
  • [ 그림 4. ]  H.264/SVC의 시간적 스케일 가변 [4]
    H.264/SVC의 시간적 스케일 가변 [4]
  • [ 그림 5. ]  단일 계층 인코딩 매개변수 스위칭
    단일 계층 인코딩 매개변수 스위칭
  • [ 그림 6. ]  수신기 구조
    수신기 구조
  • [ 그림 7. ]  시스템 구조
    시스템 구조
  • [ ] 
  • [ ] 
  • [ 그림 8. ]  OpenMAX 계층
    OpenMAX 계층
  • [ 그림 9. ]  Stagefright 미디어 프레임워크
    Stagefright 미디어 프레임워크
  • [ 그림 10. ]  인코더의 하드웨어 구조
    인코더의 하드웨어 구조
  • [ ] 
  • [ ] 
  • [ ] 
  • [ ] 
  • [ ] 
  • [ 그림 11. ]  피드백 궤한 과정
    피드백 궤한 과정
  • [ ] 
  • [ ] 
  • [ ] 
  • [ ] 
  • [ ] 
  • [ ] 
  • [ 그림 12. ]  대역폭 결정
    대역폭 결정
  • [ 그림 13. ]  비디오 시스템 테스트 베드
    비디오 시스템 테스트 베드
  • [ 그림 14. ]  공간적 해상도 실험 결과
    공간적 해상도 실험 결과
  • [ ] 
  • [ 그림 15. ]  화소 품질 해상도 실험 결과
    화소 품질 해상도 실험 결과
  • [ 표 1. ]  학습 트레이닝 세트
    학습 트레이닝 세트
  • [ 그림 16. ]  클래스 분포
    클래스 분포
  • [ 표 2. ]  컨텐츠 유형별 예측 기댓값
    컨텐츠 유형별 예측 기댓값
  • [ 그림 17. ]  컨텐츠 유형 0의 예측 결과
    컨텐츠 유형 0의 예측 결과
  • [ 그림 18. ]  컨텐츠 유형 1의 예측 결과
    컨텐츠 유형 1의 예측 결과
  • [ 그림 19. ]  컨텐츠 유형 2의 예측 결과
    컨텐츠 유형 2의 예측 결과
  • [ 표 3. ]  예측 기대 클래스 대비 예측된 클래스
    예측 기대 클래스 대비 예측된 클래스
(우)06579 서울시 서초구 반포대로 201(반포동)
Tel. 02-537-6389 | Fax. 02-590-0571 | 문의 : oak2014@korea.kr
Copyright(c) National Library of Korea. All rights reserved.