상술한 목적을 달성하기 위한 본 발명은 단말 간 실시간 스트리밍 서비스 제공 시스템에 있어서, 미디어 데이터에서 헤더를 파싱하여 별도로 저장하고, 미디어 데이터에 포함된 비디오, 오디오 데이터를 각각 디코딩 한 후 출력하고, 재생 중인 미디어 데이터에 대한 공유 요청에 따라 헤더 정보 및 현재 재생되는 미디어 데이터를 제공하는 서버 단말기와, 상기 서버 단말기에서 재생 중인 미디어 데이터에 대한 공유 요청에 따라 상기 서버 단말기로부터 수신되는 헤더 정보를 이용하여 디코더를 생성한 후, 상기 서버 단말기로부터 제공되는 미디어 데이터를 상기 생성한 디코더를 이용하여 디코딩한 후 출력하는 클라이언트 단말기를 포함하여 구성된 것을 특징으로 한다.
또한, 본 발명은 스트리밍 서비스 제공 시스템에서 상기 단말 간 실시간 스트리밍 서비스를 제공하기 위한 방법에 있어서, 서버 단말기는 미디어 데이터에서 헤더를 파싱하여 별도로 저장하고, 미디어 데이터에 포함된 비디오, 오디오 데이터를 각각 디코딩 한 후 출력하는 과정과, 클라이언트 단말기는 상기 서버 단말기의 미디어 데이터에 대한 공유 요청 입력이 있으면, 상기 서버 단말기로 재생 중인 미디어 데이터에 대한 공유 요청 메시지를 전송하는 과정과, 상기 서버 단말기가 상기 미디어 데이터에 대한 공유 요청 메시지를 수신하면 재생 중인 미디어 데이터에 대한 헤더 정보 및 현재 재생되는 미디어 데이터를 전송하는 과정과, 상기 클라이언트 단말기가 상기 수신되는 헤더 정보를 이용하여 디코더를 생성한 후, 상기 서버 단말기로부터 제공되는 미디어 데이터를 상기 생성한 디코더를 이용하여 디코딩한 후 출력하는 과정을 포함하여 이루어진 것을 특징으로 한다.
이하, 본 발명의 바람직한 실시 예들을 첨부한 도면을 참조하여 상세히 설명한다. 도면들 중 동일한 구성요소들은 가능한 한 어느 곳에서든지 동일한 부호들로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
본 발명은 적절한 유무선 통신채널을 통해서 휴대 단말기 간 실시간 스트리밍 기능을 구현하여 미디어를 공유할 수 있도록 하기 위한 방안을 제안하도록 한다. 그러면, 도 1을 참조하여 본 발명의 실시 예에 따라 단말기 간 실시간 스트리밍 서비스를 제공하기 위한 시스템 구성에 대하여 살펴보도록 한다.
먼저, 서버 단말기(100)는 소정의 비디오, 오디오 데이터를 가지는 미디어 데이터를 재생하고, 클라이언트 단말기(110)로 재생 중인 미디어 데이터를 실시간으로 전송하는 단말기이다. 또한, 클라이언트 단말기(110)는 사용자에 의해 서버 단말기(100)에서 재생중인 미디어 데이터에 대해 공유하기를 원하는 선택이 있으면, 서버 단말기(100)에게 미디어 데이터 공유를 요청한다. 이후, 클라이언트 단말기(110)는 수신되는 헤더 정보에 따라 디코더 환경을 셋팅한 후 서버 단말기(100)로부터 제공되는 미디어 데이터를 재생할 수 있는 단말기이다. 또한, 서버 단말기(100)와 미디어 단말기(110) 간에는 유무선 통신이 가능함을 가정한다. 또한, 서버 단말기(100)와 클라이언트 단말기(110)는 미디어 데이터 재생을 위한 디코더를 구비하고, 이때 각 단말기에 디코더는 처리 가능한 파일 포맷이 동일하고, 최대 초당 처리 프레임 성능이 비슷한 디코더인 것을 가정한다.
먼저, 서버 단말기(100)는 제어부(10), 헤더 파싱부(14)와 디코더(16)를 포함하는 미디어 처리부(12), 키 입력부(15), 표시부(18), 멀티플렉서(17), 데이터 송수신부(24), 큐 버퍼(22), 메모리부(20)를 포함하여 구성된다.
제어부(10)는 서버 단말기(100)를 구성하는 구성요소를 제어한다. 이러한 제어부(10)는 스트리밍 서비스 또는 DMB와 DVB-H와 같은 방송 서비스 제공을 위해 수신한 미디어 데이터 소스를 미디어 처리부(12)로 입력한다. 또한, 이러한 미디어 데이터 소스는 특정 서비스 제공에 따라 수신한 미디어 데이터일 수도 있고, 단말기(100)에서 자체적으로 생성한 미디어 데이터일 수도 있다. 단말기(100)에서 자체적으로 생성한 미디어 데이터의 예로는 동영상 데이터 또는 화상 통화 수행 중 통화중인 음성 데이터와 화상 데이터를 포함하는 미디어 데이터일 수도 있다.
미디어 처리부(12)는 헤더 파싱부(14)와 디코더(16)로 구성되고, 상기와 같이 입력된 미디어 데이터 소스는 헤더 파싱부(14)를 통해 미디어 데이터 소스에서 헤더 부분만 파싱한다. 이후, 파싱된 헤더 정보는 큐 버퍼(22)와 메모리부(20)에 저장된다. 이때, 큐 버퍼(22)에 저장된 헤더 정보는 클라이언트 단말기(110)로부터 미디어 데이터 공유를 위한 요청이 있는 경우 제공하기 위한 헤더 정보를 저장하기 위한 버퍼이다. 또한, 메모리부(20)에 저장되는 헤더 정보는 서버 단말기(100)에서 미디어 데이터를 재생하기 위한 정보로서 저장된다. 이때, 헤더 정보는 파일의 코덱 타입, 프레임 사이즈, 프레임 레이트, 픽셀당 비트수, 양자화 정밀도와 같은 디코더 생성 정보들을 포함한다.
이후, 제어부(10)는 파싱된 헤더 정보에 포함된 디코더 생성 정보를 이용하여 해당 데이터를 재생할 수 있도록 디코더(16) 환경을 셋팅한다. 이후, 디코더(16)는 입력되는 각각의 비디오, 오디오, 텍스트 데이터 각각에 대한 디코딩 과정을 수행한다. 이때, 디코더(16)를 구성하는 각 디코더는 인코딩 된 미디어 데이 터로부터 하나의 인코딩 프레임을 추출하여 추출한 프레임을 디코딩한 후 멀티플렉서(17)로 출력한다. 그러면, 멀티플렉서(17)는 각 디코더들로부터 입력되는 디코딩 된 데이터를 동기를 맞춰 하나의 영상으로 멀티플렉싱시켜 표시부(18)로 출력함으로써 미디어 데이터를 재생한다.
이러한 표시부(18)는 제어부(10)의 제어에 따라 서버 단말기(100)의 현재상태 및 서버 단말기(100)의 동작상태를 표시하며, 일반적으로 LCD(Liquid Crystal Display)와 OLED(Organic Light Emitting Diodes)로 구성할 수 있다.
또한, 서버 단말기(100)가 클라이언트 단말기(110)로부터 현재 재생 중인 미디어 데이터 공유 요청을 위한 헤더 정보 요청 메시지를 데이터 송수신부(24)를 통해 수신하면, 제어부(10)는 큐 버퍼(22)에 저장된 헤더 정보를 데이터 송수신부(24)를 통해 클라이언트 단말기(110)로 전송한다.
이때, 데이터 송수신부(24)는 헤더 정보 및 미디어 데이터를 디지털 무선 변조하여 안테나를 통해 송출하며, 안테나를 통해 수신되는 신호를 복조하여 제어부(10)로 전달한다.
또한, 서버 단말기(100)가 클라이언트 단말기(110)로부터 현재 재생되는 미디어 데이터 제공 요청 메시지를 수신하면, 현재 재생중인 프레임 정보를 추출한 후 추출한 프레임 정보와 함께 재생중인 미디어 데이터를 클라이언트 단말기(110)로 전송한다. 이때, 전송되는 미디어 데이터는 인코딩 된 프레임 단위로 전달된다.
그러면, 서버 단말기(100)로부터 전송되는 헤더 정보 및 미디어 데이터를 이용하여 서버 단말기(100)와 동일한 미디어 데이터를 재생할 수 있는 클라이언트 단 말기(110)의 내부 구성에 대하여 살펴보도록 한다. 이러한 클라이언트 단말기(110)는 제어부(30), 데이터 송수신부(32), 큐 버퍼(34), 메모리부(36), 디코더(38), 표시부(40)를 포함하여 구성된다.
먼저, 제어부(30)는 클라이언트 단말기(110)를 구성하는 구성요소를 제어한다. 이러한 제어부(30)는 사용자에 의해 서버 단말기(100)로 미디어 데이터 공유 요청을 위한 입력이 있으면 데이터 송수신부(32)를 통해 서버 단말기(100)로 현재 재생중인 미디어 데이터에 대한 헤더 정보를 요청하기 위한 메시지를 전송한다.
이후, 제어부(30)는 데이터 송수신부(32)로부터 헤더 정보가 수신되면 큐 버퍼(34)에 저장하고, 헤더 정보에 포함된 디코더 생성정보를 확인한 후, 상기 확인된 디코더 생성정보에 따라 디코더 환경을 셋팅한다. 즉, 이때 클라이언트 단말기(110)는 서버 단말기(100)로부터 수신한 디코더 생성정보를 이용하여 디코더 환경을 셋팅하는 것이다. 이와 같이 함으로써 클라이언트 단말기(110)는 서버 단말기(100)와 동일한 디코딩 환경을 가지고, 서버 단말기(100)와 동일한 미디어 데이터를 재생할 수 있는 환경을 가지는 것이다.또한, 제어부(30)는 디코더 환경이 셋팅되면 해당 서버 단말기(100)로 현재 재생되는 미디어 데이터 제공을 요청하기 위한 메시지를 데이터 송수신부(32)를 통해 전송한다.
또한, 제어부(30)는 데이터 송수신부(32)로부터 인코딩 된 미디어 데이터와 현재 프레임 위치 정보가 수신되면, 우선 수신된 미디어 데이터를 큐 버퍼(34)에 저장한다. 이때, 제어부(30)는 서버 단말기(100)와의 미디어 데이터 공유를 수행하는 중에는 서버 단말기(100)로부터 계속하여 미디어 데이터를 데이터 송수신부(32) 를 통해 수신한다. 이때, 서버 단말기(100)로부터 전송되는 미디어 데이터는 프레임 단위로 전송되므로 클라이언트 단말기(110)는 수신한 미디어 데이터를 프레임 단위로 큐 버퍼(34)에 저장한다.
이후, 제어부(30)는 수신한 현재 프레임 위치 정보를 확인하여 큐 버퍼(34)에 저장되는 수신된 미디어 데이터에서 해당 위치의 프레임부터 독출하여 디코더(38)로 입력되도록 한다. 그러면, 디코더(38)는 각각의 비디오, 오디오, 텍스트 데이터 각각에 대한 디코딩 과정을 수행한다. 이때, 디코더(38)를 구성하는 각 디코더는 인코딩 된 미디어 데이터로부터 하나의 인코딩 프레임을 추출하여 추출한 프레임을 디코딩한 후 멀티플렉서(39)로 출력한다. 그러면, 멀티플렉서(39)는 각 디코더들로부터 입력되는 디코딩 된 데이터를 동기를 맞춰 하나의 영상으로 멀티플렉싱 시켜 표시부(40)로 출력함으로써 미디어 데이터를 재생한다.
그러면, 이제 도 2를 참조하여 상기의 도 1과 같이 구성되는 서버 단말기(100)와 클라이언트 단말기(110)간에 미디어 데이터를 공유하기 위해 송수신되는 신호에 대하여 살펴보도록 한다. 도 2는 본 발명의 실시 예에 따라 서버 단말기에서 클라이언트 단말기로 실시간 스트리밍 서비스를 제공하기 위한 과정을 도시하는 신호 흐름도이다.
먼저, 200단계에서 서버 단말기(100)는 스트리밍 서비스 또는 DMB와 DVB-H와 같은 방송 서비스 제공을 위해 수신하거나, 단말기(100)에서 자체적으로 생성한 미디어 데이터에서 헤더 정보를 파싱한다.
이후, 202단계에서 서버 단말기(100)는 파싱된 헤더 정보를 큐 버퍼(22)에 저장한 후, 204단계로 진행하여 미디어 데이터에 포함되는 비디오, 오디오, 텍스트 데이터를 각각 디코딩 한다. 이때, 서버 단말기(100)는 각각의 데이터를 디코딩 하기 위해 상기에서 파싱한 헤더 정보 내에 포함된 디코더 생성정보를 확인한 후, 어떤 디코딩 방식으로 비디오, 오디오, 텍스트 데이터를 디코딩 해야 할 지를 결정한다. 이후, 서버 단말기(100)는 이와 같이 결정된 디코딩 방식으로 디코더의 환경을 셋팅한 후 상기 각 데이터를 디코딩한다.
204단계에서 206단계로 진행하면 서버 단말기(100)는 디코딩 된 각 데이터를 멀티플렉싱 시켜 하나의 영상으로 생성한 후 화면으로 출력함으로써 미디어 데이터를 재생한다.
한편, 클라이언트 단말기(110)는 208단계에서 사용자에 의해 서버 단말기(100)에서 재생되는 미디어 데이터를 공유하기 위한 선택이 있으면, 210단계로 진행하여 헤더 정보 요청을 위한 메시지를 서버 단말기(100)로 전송한다.
이후, 서버 단말기(100)는 212단계에서 헤더 정보를 요청하는 메시지를 수신하면, 213단계에서 현재 재생중인 미디어 데이터에 대한 헤더 정보를 큐 버퍼(22)를 통해 확인한다. 이후, 214단계에서 서버 단말기(100)는 확인된 현재 재생되는 미디어 데이터에 대한 헤더 정보를 해당 클라이언트 단말기(110)로 전송한다.
그러면, 클라이언트 단말기(110)는 216단계에서 수신한 헤더 정보를 이용하여 재생할 미디어 데이터인 비디오 데이터, 오디오 데이터, 텍스트 데이터 각각의 디코딩 방식을 확인한다. 이후, 클라이언트 단말기(110)는 확인된 디코딩 방식으로 각각의 데이터를 디코딩하기 위한 디코더 환경을 셋팅한다.
상기와 같이 디코딩 환경 셋팅이 완료되면, 클라이언트 단말기(110)는 218단계에서 서버 단말기(100)로 현재 재생되는 미디어 데이터에 대한 제공을 요청하는 메시지를 전송한다.
한편, 서버 단말기(100)가 현재 재생되는 미디어 데이터에 대한 제공을 요청하는 메시지를 수신하면, 220단계에서 큐 버퍼(22)에서 현재 재생되는 프레임 위치 정보를 추출한다. 이후, 서버 단말기(100)는 추출한 프레임 위치 정보 및 미디어 데이터를 해당 클라이언트 단말기(110)로 전송한다. 이때, 전송되는 미디어 데이터는 프레임 단위로 전송된다.
그러면, 223단계에서 클라이언트 단말기(110)는 수신한 현재 재생 중인 프레임 위치 정보와 프레임 단위로 수신되는 미디어 데이터를 큐 버퍼(34)에 저장한다. 이후, 클라이언트 단말기(110)는 224단계로 진행하여 프레임 위치 정보를 확인하여 큐 버퍼(34)에 저장되는 수신된 미디어 데이터에서 해당 위치의 프레임부터 독출하여 각각의 비디오, 오디오, 텍스트 데이터에 대한 디코딩 과정을 수행한다. 이후, 클라이언트 단말기(110)는 디코딩 된 데이터를 동기를 맞춰 하나의 영상으로 멀티플렉싱시켜 화면으로 출력함으로써 서버 단말기(100)와 동일한 미디어 데이터를 동시에 재생할 수 있다.
상술한 본 발명의 실시 예에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시할 수 있다. 본 발명의 실시 예에서는 서버 단말기(100)와 클라이언트 단말기(110)간에 무선으로 데이터 송수신되는 예를 들었지만, 서로 간에 유선으로 통신하여 데이터를 송수신할 수도 있 다. 이와 같은 경우에는 각 단말기에 통신을 위한 인터페이스를 구비하여야 한다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위와 특허청구범위의 균등한 것에 의해 정해져야 한다.