KR20180122267A - 실시간 통신을 수행하는 장치, 시스템, 및 방법 - Google Patents

실시간 통신을 수행하는 장치, 시스템, 및 방법 Download PDF

Info

Publication number
KR20180122267A
KR20180122267A KR1020170134168A KR20170134168A KR20180122267A KR 20180122267 A KR20180122267 A KR 20180122267A KR 1020170134168 A KR1020170134168 A KR 1020170134168A KR 20170134168 A KR20170134168 A KR 20170134168A KR 20180122267 A KR20180122267 A KR 20180122267A
Authority
KR
South Korea
Prior art keywords
real
media data
media
time
web
Prior art date
Application number
KR1020170134168A
Other languages
English (en)
Other versions
KR102064284B1 (ko
Inventor
장정환
이종호
Original Assignee
한화테크윈 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한화테크윈 주식회사 filed Critical 한화테크윈 주식회사
Publication of KR20180122267A publication Critical patent/KR20180122267A/ko
Application granted granted Critical
Publication of KR102064284B1 publication Critical patent/KR102064284B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/607
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • H04L65/1003
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/608
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명의 실시 예에 따른 외부의 웹 브라우저와 실시간 통신을 수행하는 방법은, 네트워크를 통해 웹 브라우저와 시그널링하여 실시간 통신을 개시하는 단계, 시그널링이 수행된 후에 인코딩된 미디어 데이터를 소정의 실시간 네트워크 프로토콜에 기반하여 패킷화하는 단계, 패킷화된 미디어 데이터를 디패킷화하여 인코딩된 미디어 데이터를 획득하는 단계, 그리고 네트워크를 통해 인코딩된 미디어 데이터를 웹 브라우저에 전송함으로써 실시간 통신을 수행하는 단계를 포함한다.

Description

실시간 통신을 수행하는 장치, 시스템, 및 방법{DEVICE, SYSTEM, AND METHOD TO PERFORM REAL-TIME COMMUNICATION}
본 발명은 인코딩된 멀티미디어를 네트워크를 통해 제공하기 위한 장치들 및 방법들에 관한 것으로, 좀 더 구체적으로는 실시간으로, 예를 들면 웹 실시간 통신으로 인코딩된 미디어 데이터를 통신하는 경우 향상된 인코딩 효율을 제공하는 소스 장치, 네트워크 시스템, 및 방법에 관한 것이다.
통신 서비스 제공자들 및 기업들은 웹 실시간 통신(Web Real-Time Communication: WebRTC)이라고 알려진 프로토콜에 기반한 실시간 통신들을 사용할 수 있다. 웹 실시간 통신은 웹 브라우저에 실시간 멀티미디어 통신 기능들(예를 들면, 음성 전화, 영상 채팅, 단대단 파일 공유 등)을 실장하기 위한 오픈 인터넷 규격이며, 소스 장치와 싱크 장치의 브라우저들 간 실시간 통신을 가능하게 한다. 웹 브라우저를 지원하는 장치에서, 웹 실시간 통신은 API(Application Programming Interface)들을 사용함으로써 사용자가 플러그인 소프트웨어를 다운로드하는 것 없이도 해당 장치가 실시간 통신 기능들을 갖추게 할 수 있다. 웹 실시간 통신은 두 웹 브라우저들 사이의 연결을 개설하고, 해당 단들(peers) 사이의 데이터 교환을 위한 채널을 생성한다.
웹 실시간 통신을 수행할 때, 싱크 장치는 소스 장치로부터 수신하는 미디어 데이터를 처리하기 위한 충분한 하드웨어 자원들을 가질 수 있다. 예를 들면, 포터블 컴퓨터(portable computer), PDA(personal digital assistant), 및 스마트 폰과 같은 높은 성능의 프로세서를 갖는 싱크 장치는, 설사 그 싱크 장치가 소프트웨어를 통해 미디어 데이터를 디코딩한다 하더라도, 충분한 하드웨어 자원들을 가지고 있으므로 미디어 데이터를 원활하게 재생할 수 있다. 반면, 소스 장치는 미디어 데이터를 처리하는 데에 충분하지 않은 하드웨어 자원들을 가질 수 있다. 예를 들면, 만약 소스 장치가 소프트웨어를 통해 미디어 데이터를 인코딩한다면, 낮은 성능의 프로세서는 전송될 미디어 데이터를 원활하게 혹은 효율적으로 인코딩하지 못할 수 있다. 이러한 경우, 소스 장치, 그리고 웹 실시간 통신의 전반적인 동작 및/또는 성능은 저하되며, 이에 따라 실시간 통신에 요구되는 품질과 효율은 감소할 수 있다.
위 기재된 내용은 오직 본 발명의 기술적 사상들에 대한 배경 기술의 이해를 돕기 위한 것이며, 따라서 그것은 본 발명의 기술 분야의 당업자에게 알려진 선행 기술에 해당하는 내용으로 이해될 수 없다.
본 발명의 실시 예에 따른 소스 장치들과 네트워크 시스템들은 웹 실시간 통신과 같은 실시간 통신들의 효율과 품질을 향상시키기 위한 것이다. 나아가, 본 발명의 실시 예에 따른 장치들 및 시스템들은 싱크 장치의 사용자가 플러그인 소프트웨어를 다운로드하는 것 없이 단대단 웹 실시간 통신을 가능하게 하기 위한 것이다.
실시간 통신의 효율과 품질은 향상된 인코딩 효율을 갖는 소스 장치들을 통해 달성될 수 있다. 예를 들면, 소스 장치의 웹 실시간 통신기는 스트리밍 서버를 통해 인코딩된 미디어를 수신한다.
본 발명의 실시 예에 따른 외부의 웹 브라우저와 실시간 통신을 수행하는 방법에 있어서: 네트워크를 통해 상기 웹 브라우저와 시그널링하여 상기 실시간 통신을 개시하는 단계; 상기 시그널링이 수행된 후에, 인코딩된 미디어 데이터를 소정의 실시간 네트워크 프로토콜에 기반하여 패킷화하는 단계; 상기 패킷화된 미디어 데이터를 디패킷화하여 상기 인코딩된 미디어 데이터를 획득하는 단계; 및 상기 네트워크를 통해 상기 인코딩된 미디어 데이터를 상기 웹 브라우저에 전송함으로써 상기 실시간 통신을 수행하는 단계를 포함한다.
상기 패킷화된 미디어 데이터를 디패킷화하는 단계는 상기 패킷화된 미디어 데이터의 페이로드로부터 상기 인코딩된 미디어 데이터를 획득하는 단계를 포함할 수 있다.
상기 방법은 내부 스토리지에 저장된 설정 정보를 읽어 상기 소정의 실시간 네트워크 프로토콜을 판별하는 단계를 더 포함하되, 상기 패킷화된 미디어 데이터의 상기 페이 로드는 상기 판별된 실시간 네트워크 프로토콜에 따라 식별될 수 있다.
상기 실시간 통신을 수행하는 단계는, 상기 인코딩된 미디어 데이터를 다시 패킷화하는 단계; 및 상기 다시 패킷화된 미디어 데이터를 상기 웹 브라우저로 전송하는 단계를 포함할 수 있다.
상기 방법은 하드웨어 미디어 인코더를 이용하여 상기 미디어 소스를 인코딩함으로써, 상기 인코딩된 미디어 데이터를 생성하는 단계를 더 포함할 수 있다.
상기 실시간 통신은 웹 실시간 통신을 포함할 수 있다.
상기 소정의 실시간 네트워크 프로토콜은 RTP(Real-Time transport Protocol), RTSP(Real-Time Streaming Protocol), 및 RTMP(Real-Time Messaging Protocol) 중 하나일 수 있다.
상기 인코딩된 미디어 데이터는 영상 압축 표준들인 H.263, H.264, H.265, VP8, VP9, 및 AV1(AOMedia Video 1) 중 하나에 기반할 수 있다.
본 발명의 다른 실시 예에 따른 외부의 웹 브라우저와 웹 실시간 통신을 수행하는 방법은, 상기 웹 브라우저와 시그널링하여 상기 웹 실시간 통신을 개시하는 단계; 상기 시그널링의 결과에 따라 스트리밍 서버에 패킷화된 미디어 데이터를 요청하되, 상기 패킷화된 미디어 데이터는 소정의 미디어 압축 표준에 기반하여 인코딩된 미디어 데이터를 포함하는, 단계; 및 상기 패킷화된 미디어 데이터로부터 획득되는 상기 인코딩된 미디어 데이터를 상기 웹 브라우저에 전송함으로써 상기 웹 실시간 통신을 수행하는 단계를 포함한다.
상기 방법은 상기 스트리밍 서버에 대응하는 실시간 네트워크 프로토콜 정보를 상기 스트리밍 서버와 연관된 소스 장치로부터 수신하는 단계를 더 포함하되, 상기 인코딩된 미디어 데이터는 상기 패킷화된 미디어 데이터의 페이로드로부터 획득되고, 상기 패킷화된 미디어 데이터의 상기 페이로드는 상기 수신된 실시간 네트워크 프로토콜 정보에 기반하여 식별될 수 있다.
상기 방법은 내부 스토리지에 저장된 설정 정보를 읽어 상기 스트리밍 서버에 대응하는 실시간 네트워크 프로토콜을 판별하는 단계를 더 포함하되, 상기 인코딩된 미디어 데이터는 상기 패킷화된 미디어 데이터의 페이로드로부터 획득되고, 상기 패킷화된 미디어 데이터의 상기 페이로드는 상기 판별된 실시간 네트워크 프로토콜에 기반하여 식별될 수 있다.
상기 패킷화된 미디어 데이터는 상기 시그널링의 결과 상기 웹 브라우저가 상기 소정의 미디어 압축 표준을 지원할 때 요청될 수 있다.
상기 소정의 미디어 압축 표준은 영상 압축 표준들 H.263, H.264, 및 H.265 중 하나일 수 있다.
상기 방법은 상기 시그널링의 결과 상기 웹 브라우저가 상기 소정의 미디어 압축 표준과 상이한 미디어 압축 표준을 지원할 때, 미디어 소스를 수신하는 단계를 더 포함할 수 있다.
상기 방법은 상기 상이한 미디어 압축 표준에 기반하여 상기 미디어 소스를 인코딩하는 단계; 및 상기 상이한 미디어 압축 표준에 기반하여 인코딩된 미디어 소스를 전송함으로써 상기 웹 실시간 통신을 수행하는 단계를 더 포함할 수 있다.
본 발명의 다른 일면은 외부의 웹 브라우저와 웹 실시간 통신을 수행하는 소스 장치에 관한 것이다. 본 발명의 실시 예에 따른 소스 장치는 미디어 소스를 처리하여 인코딩된 미디어 데이터를 생성하도록 구성되는 미디어 인코더; 소정의 실시간 네트워크 프로토콜에 기반한 상기 인코딩된 미디어 데이터의 패킷화를 지원하도록 구성되는 스트리밍 서버; 및 상기 웹 브라우저와 시그널링하여 상기 웹 실시간 통신을 개시하고, 상기 시그널링의 결과에 따라 상기 스트리밍 서버에 상기 패킷화된 미디어 데이터를 요청하도록 구성되는 웹 실시간 통신기를 포함하되, 상기 웹 실시간 통신기는 상기 패킷화된 미디어 데이터를 이용하여 상기 웹 실시간 통신을 수행하도록 구성된다.
상기 미디어 인코더는 제 1 미디어 압축 표준에 기반하여 상기 인코딩된 미디어 데이터를 생성하며, 상기 웹 실시간 통신기는 상기 시그널링의 결과 상기 웹 브라우저가 상기 제 1 미디어 압축 표준을 지원할 때, 상기 스트리밍 서버에 상기 패킷화된 미디어 데이터를 요청할 수 있다.
상기 미디어 인코더는 제 1 미디어 압축 표준에 기반하여 상기 인코딩된 미디어 데이터를 생성하며, 상기 웹 실시간 통신기는 상기 시그널링의 결과 상기 웹 브라우저가 상기 제 1 미디어 압축 표준과 상이한 제 2 미디어 압축 표준을 지원할 때 상기 미디어 소스를 수신하여 상기 웹 실시간 통신을 수행하도록 구성될 수 있다.
상기 웹 실시간 통신기는, 상기 수신된 미디어 소스를 상기 제 2 미디어 압축 표준에 기반하여 인코딩하고, 상기 제 2 미디어 압축 표준에 기반하여 인코딩된 미디어 소스를 이용하여 상기 웹 실시간 통신을 수행하도록 구성될 수 있다.
상기 웹 실시간 통신기는, 상기 패킷화된 미디어 데이터의 페이로드로부터 상기 인코딩된 미디어 데이터를 추출하고, 상기 인코딩된 미디어 데이터를 상기 웹 브라우저에 전송하여 상기 웹 실시간 통신을 수행하도록 구성될 수 있다.
본 발명의 다른 실시 예에 따른 외부의 웹 브라우저와 웹 실시간 통신을 수행하는 소스 장치는, 미디어 소스를 처리하여 인코딩된 미디어 데이터를 생성하도록 구성되는 미디어 인코더; 및 적어도 하나의 프로세서를 포함하되, 상기 적어도 하나의 프로세서는, 상기 웹 브라우저와 시그널링을 수행하고; 상기 시그널링의 결과에 따라, 상기 인코딩된 미디어 데이터를 소정의 실시간 네트워크 프로토콜에 기반하여 패킷화하고; 상기 패킷화된 미디어 데이터를 디패킷화하여 상기 웹 실시간 통신을 위한 상기 인코딩된 미디어 데이터를 획득하도록 구성된다.
본 발명의 실시 예에 따른 소스 장치들과 네트워크 시스템들은 웹 실시간 통신과 같은 실시간 통신들의 효율과 품질을 향상시킨다. 나아가, 본 발명의 실시 예에 따른 장치들 및 시스템들은 싱크 장치의 사용자가 플러그인 소프트웨어를 다운로드하는 것 없이 단대단 웹 실시간 통신을 가능하게 한다.
도 1은 본 발명의 실시 예에 따른 소스 장치와 싱크 장치 사이에서 웹 실시간 통신을 실행하기 위한 네트워크 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 소스 장치를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 소스 장치를 동작하는 방법을 보여주는 순서도이다.
도 4는 본 발명의 실시 예에 따른 웹 실시간 통신기의 동작 방법을 보여주는 순서도이다.
도 5는 단대단 웹 실시간 통신을 위한 시그널링의 일 실시 예를 보여주는 순서도이다.
도 6은 패킷화된 미디어 데이터를 수신 및 처리하기 위한 준비 동작의 실시 예를 보여주는 순서도이다.
도 7은 소스 장치의 실시 예들을 구현하기 위한 컴퓨터 시스템의 실시 예를 보여주는 블록도이다.
도 8은 본 발명의 다른 실시 예에 따른 소스 장치를 보여주는 블록도이다.
도 9는 본 발명의 다른 실시 예에 따른 웹 실시간 통신기의 동작 방법을 보여주는 순서도이다.
도 10은 본 발명의 또 다른 실시 예에 따른 소스 장치를 보여주는 블록도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 웹 실시간 통신기의 동작 방법을 보여주는 순서도이다.
도 12는 소스 시스템을 포함하는 네트워크 시스템을 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 소스 시스템을 보여주는 블록도이다.
도 14는 도 13의 소스 시스템의 변형 실시 예를 보여주는 블록도이다.
아래의 서술에서, 설명의 목적으로, 다양한 실시예들의 이해를 돕기 위해 다수의 구체적 세부 내용들이 제시된다. 그러나, 다양한 실시예들이 이러한 구체적인 세부 내용들 없이 또는 하나 이상의 동등한 방식으로 실시될 수 있다는 것은 명백하다. 다른 예시들에서, 잘 알려진 구조들과 장치들은 다양한 실시예들을 불필요하게 이해하기 어렵게 하는 것을 피하기 위해 블록도로 표시된다.
어떤 소자가 다른 소자와 "연결되어 있다”고 서술되어 있으면, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 간접적으로 연결되어 있는 경우도 포함한다. 그러나, 만약 어떤 부분이 다른 부분과 "직접적으로 연결되어 있다”고 서술되어 있으면, 이는 해당 부분과 다른 부분 사이에 다른 소자가 없음을 의미한다. "X, Y, 및 Z 중 적어도 어느 하나", 그리고 "X, Y, 및 Z로 구성된 그룹으로부터 선택된 적어도 어느 하나"는 X 하나, Y 하나, Z 하나, 또는 X, Y, 및 Z 중 둘 또는 그 이상의 어떤 조합 (예를 들면, XYZ, XYY, YZ, ZZ) 으로 해석될 수 있다. 여기에서, "및/또는"은 해당 구성들 중 하나 또는 그 이상의 모든 조합을 포함한다.
여기에서, 제 1, 제 2 등과 같은 용어가 다양한 소자들, 구성들, 지역들, 레이어들, 및/또는 섹션들을 설명하기 위해 사용될 수 있지만, 이러한 소자들, 구성들, 지역들, 레이어들, 및/또는 섹션들은 이러한 용어들에 한정되지 않는다. 이러한 용어들은 하나의 소자, 구성, 지역, 레이어, 및/또는 섹션을 다른 소자, 구성, 지역, 레이어, 및 또는 섹션과 구별하기 위해 사용된다. 따라서, 일 실시예에서의 제 1 소자, 구성, 지역, 레이어, 및/또는 섹션은 다른 실시예에서 제 2 소자, 구성, 지역, 레이어, 및/또는 섹션이라 칭할 수 있다.
여기에서 사용된 용어는 특정한 실시예들을 설명하기 위한 것이며 한정하기 위한 것이 아니다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함한다” 고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 다른 정의가 없는 한, 여기에 사용된 용어들은 본 발명이 속하는 분야에서 통상적인 지식을 가진 자에게 일반적으로 이해되는 것과 같은 의미를 갖는다.
도 1은 본 발명의 실시 예에 따른 소스 장치(110)와 싱크 장치(120) 사이에서 웹 실시간 통신을 실행하기 위한 네트워크 시스템(100)을 보여주는 블록도이다. 네트워크 시스템(100)은 여기에 설명된 실시 예들에 따른 방법들을 수행하도록 동작하는 복수의 장치들, 서버들, 및/또는 소프트웨어 구성 요소들을 포함할 수 있다. 도 1에 도시된 장치들 및 서버들은 다른 방식으로 배치될 수 있고, 그러한 장치들 및/또는 서버들에 의해 제공되는 동작들 및 서비스들은 여기에 설명된 실시 예들을 수행하기 위해 결합되거나 분리될 수 있으며, 더 많은 수 혹은 더 적은 수의 장치들 및 서버들에 의해 수행될 수도 있다. 하나 또는 그 이상의 장치들 및/또는 서버들은 동일한 혹은 다른 독립체들(entities), 예를 들면 기업들에 의해 구동될 수 있다.
도 1을 참조하면, 네트워크 시스템(100)은 네트워크(105, Network), 소스 장치(110, SOURCE DEVICE), 싱크 장치(120, SINK DEVICE), 및 시그널링 서버(130, SIGNALING SERVER)를 포함한다. 소스 장치(110) 및 싱크 장치(120) 각각은 하나 또는 그 이상의 프로세서들, 메모리들, 다른 적절한 구성 요소들을 포함함으로써 컴퓨터에 의해 판독 가능한 매체들에 저장된 프로그램 코드들 및/또는 데이터와 같은 명령어들을 수행할 수 있으며, 이에 따라 여기에 설명된 다양한 애플리케이션들 및 단계들을 수행한다. 예를 들면, 명령어들은 네트워크 시스템(100)의 다양한 구성 요소들의 내부 및/또는 외부의 하나 또는 그 이상의 컴퓨터에 의해 판독 가능한 매체에 저장될 수 있다.
소스 장치(110)와 싱크 장치(120)는 네트워크(105)에 연결된다. 네트워크(105)는 공용 네트워크(public network), 하나 또는 그 이상의 사설 네트워크(private network)들, 유선 네트워크, 무선 네트워크, 다른 적합한 타입들의 네트워크들, 그것들의 조합들 중 적어도 하나를 포함하며, 이러한 네트워크들은 소스 장치(110), 싱크 장치(120), 및 시그널링 서버(130)에 의해 액세스 가능할 수 있다. 소스 장치(110) 및 싱크 장치(120)는 유선 통신 기능들 및 무선 통신 기능들 중 어느 하나를 포함할 수 있고, 네트워크(105)를 통해 서로 통신할 수 있다.
소스 장치(110)와 싱크 장치(120)는 웹 실시간 통신과 같은 실시간 통신으로 단대단 통신을 수행한다. 소스 장치(110)는 음성 데이터 및 영상 데이터 중 적어도 하나를 포함하는 미디어 데이터를 특정 미디어 공유 세션(media share session)에 참여한 싱크 장치(120)로 전송한다. 이때, 미디어 데이터는 멀티미디어(multimedia) 데이터를 포함할 수 있으나, 여기에 한정되지 않는다. 미디어 데이터는 싱크 장치(120)의 디스플레이에 디스플레이될 수 있다. 즉, 싱크 장치(120)는 수신된 미디어 데이터를 그것의 디스플레이 및 음성 장비에 랜더링(render)할 수 있다.
예를 들면, 소스 장치(110)는 인터넷 프로토콜(Internet Protocol, 이하 IP라 한다) 카메라, 네트워크 비디오 녹화기, 웹 카메라 등 중 적어도 하나를 포함할 수 있으며, 이들은 미디어 데이터를 네트워크(105)를 통해 싱크 장치(120)로 전송할 수 있다. 예를 들면, 싱크 장치(120)는 포터블 컴퓨터, PDA, 스마트폰, 테블릿 PC, 비디오 게임 장치, 텔레비전, 데스크탑 컴퓨터, 모니터, 프로젝터 등을 포함하며, 이들은 수신된 미디어 데이터를 그것의 디스플레이 및 음성 장비에서 재생할 수 있다.
소스 장치(110)는 싱크 장치(120)의 웹 브라우저(125, Web Browser)와 웹 실시간 통신을 수행하는 웹 실시간 통신기(115, Web Real-time Communicator)를 포함한다. 웹 실시간 통신기(115)는 시그널링 서버(130)를 통해 웹 브라우저(125)와 시그널링을 수행하여 웹 실시간 통신을 개시(initiate)할 수 있다. 예를 들면, 웹 실시간 통신기(115)는 웹 브라우저(125)와의 시그널링을 통해 웹 실시간 통신의 단대단 연결을 위한 미디어 공유 세션을 정의할 수 있다. 도 5를 참조하여 이후 설명되는 바와 같이, 시그널링 동안 시그널링 서버(130)는 소스 장치(110)로부터의 메시지들을 싱크 장치(120)로 중계(relay)하고, 싱크 장치(120)로부터의 메시지들을 소스 장치(110)로 중계할 수 있다. 시그널링 동안, 웹 실시간 통신기(115)와 웹 브라우저(125)는 지원 가능한 미디어 압축 표준들, 미디어 데이터를 인코딩 및 디코딩하기 위한 비트 레이트(bit rate)들, 미디어 데이터의 해상도 등과 같은 미디어 관련 능력들(media capabilities)을 교환할 수 있다. 나아가, 시그널링 동안 웹 실시간 통신기(115)와 웹 브라우저(125)는 IP 어드레스들 및 포트들과 같은 네트워크(105) 내에서 웹 실시간 통신기(115)와 웹 브라우저(125)를 식별하기 위한 후보자들(candidates)을 교환할 수 있다.
시그널링이 성공적으로 수행된 후에, 웹 실시간 통신기(115)는 소스 장치(110)의 내부 구성 요소들에 의해 생성된 미디어 데이터를 캡쳐하고, 미디어 데이터를 실시간으로 싱크 장치(120)의 웹 브라우저(125)에 전송하여 웹 실시간 통신을 수행할 수 있다. 웹 브라우저(125)는 수신된 미디어 데이터를 싱크 장치(120)의 디스플레이와 음성 장비에 랜더링할 수 있다.
도 2는 본 발명의 실시 예에 따른 소스 장치(110)를 보여주는 블록도이다.
도 2를 참조하면, 소스 장치(110)는 메모리(111, Memory), 미디어 인코더(112, Media Encoder), 스트리밍 서버(113, Streaming Server), 및 웹 실시간 통신기(115, Web Real-time Communicator)를 포함한다.
메모리(111)는 이 분야에서 알려지거나 개발되는 메모리 장치 또는 시스템의 형태일 수 있고, 영상 소스 및 음성 소스 중 어느 하나를 포함하는 미디어 소스를 저장할 수 있다. 소스 장치(110)는 영상 데이터를 제공하는 적어도 하나의 카메라 및 음성 데이터를 제공하는 적어도 하나의 마이크로폰을 더 포함할 수 있다. 예를 들면, 카메라는 렌즈를 통해 입력되는 광 신호들을 전기 신호들로 변환하여 영상 데이터를 생성하는 이미지 센서를 포함할 수 있다. 이미지 센서는 광 신호들을 전기 신호들로 변환할 수 있는 이 분야에서 알려지거나 개발되는, 전하 결합 소자(Charge-Coupled Device: CCD), 금속 산화물 반도체(Complementary Metal Oxide Semiconductor: CMOS) 등과 같은 반도체 장치일 수 있다. 예를 들면, 마이크로폰은 음성을 전기 신호들로 변환하여 음성 데이터를 생성할 수 있다. 생성된 영상 데이터와 음성 데이터는 소스 장치(110)의 하나 또는 그 이상의 프로세서들에 의해 처리되어 영상 소스 및 음성 소스를 제공할 수 있다.
미디어 인코더(112)는 미디어 소스를 인코딩하고, 소정의 미디어 압축 표준에 기반하여 인코딩된 미디어 데이터(ECMD)를 생성한다. 실시 예들에서, 미디어 인코더(112)는 영상 압축 표준들인 H.263, H.264, H.265, VP8, VP9, AOMedia Video 1 (AV1) 등 중 하나에 기반하여 미디어 소스를 인코딩할 수 있다. 예를 들면, 미디어 인코더(112)는 메모리(111)와 함께 시스템 온 칩(System on Chip)에 통합될 수 있으며, 메모리(111)에 저장된 미디어 소스를 인코딩하여 인코딩된 미디어 데이터(ECMD)를 생성할 수 있다.
스트리밍 서버(113)는 인코딩된 미디어 데이터(ECMD)를 수신하고, 웹 실시간 통신기(115)의 요청에 응답하여 인코딩된 미디어 데이터(ECMD)를 패킷화(packetize)한다. 스트리밍 서버(113)는 미디어 캡쳐 드라이버(Media Capture Driver: MCD)(113a)를 포함할 수 있다. 미디어 캡쳐 드라이버(113a)는 미디어 인코더(112)에 미디어 소스를 인코딩할 것을 요청하고, 인코딩된 미디어 데이터(ECMD)를 캡쳐할 수 있다. 스트리밍 서버(113)는 RTP(Real-Time transport Protocol), RTSP(Real-Time Streaming Protocol), RTMP(Real-Time Messaging Protocol) 등과 같은 실시간 네트워크 프로토콜에 기반하여 인코딩된 미디어 데이터(ECMD)를 패킷화할 수 있다. 그러므로, 패킷화된 미디어 데이터(PKMD)는 실시간 네트워크 프로토콜에 대응하는 특정 포멧(format)을 가질 수 있다. 이에 따라, 패킷화된 미디어 데이터(PKMD)는 인코딩된 미디어 데이터(ECMD)뿐만 아니라 실시간 네트워크 프로토콜에 대응하는 헤더를 포함할 수 있다.
스트리밍 서버(113)는 도 1의 네트워크(105)에 연결된 스트리밍 클라이언트 서버들, 예를 들면 클라우드 서버들과 통신할 수 있다. 스트리밍 서버(113)는 앞서 설명된 바와 같이 인코딩된 미디어 데이터(ECMD)를 패킷화하고, 패킷화된 미디어 데이터(PKMD)를 스트리밍 클라이언트 서버로 전송하여 해당 영상을 스트리밍 클라이언트 서버에 업로드할 수 있다.
소스 장치(110)는 웹 실시간 통신기(115)를 더 포함한다. 웹 실시간 통신기(115)는 소스 장치(110)가 싱크 장치(120)의 웹 브라우저(125)와 단대단 통신을 수행할 수 있도록 하는 웹 실시간 통신 기능을 제공한다. 싱크 장치(120)의 웹 브라우저(125) 또한, 싱크 장치(120)가 플러그인 소프트웨어를 다운로드 및 설치하는 것 없이 웹 실시간 통신기(115)와 단대단 통신을 수행할 수 있게 하는 웹 실시간 통신 기능을 제공한다.
본 발명의 실시 예에 따르면, 웹 실시간 통신기(115)는 스트리밍 서버(113)로부터 패킷화된 미디어 데이터(PKMD)를 수신하고, 패킷화된 미디어 데이터(PKMD)를 이용하여 웹 실시간 통신을 수행한다. 도 1을 참조하여 설명된 바와 같이, 웹 실시간 통신기(115)는 웹 브라우저(125)와의 시그널링이 성공적으로 수행된 후에 웹 실시간 통신을 수행할 수 있다.
웹 실시간 통신기(115)는 스트리밍 클라이언트(Streaming Client: STRC)(115a)를 포함한다. 스트리밍 클라이언트(115a)는 스트리밍 서버(113)에 패킷화된 미디어 데이터(PKMD)를 요청할 수 있다. 요청에 응답하여, 스트리밍 서버(113)는 미디어 캡처 드라이버(113a)를 이용하여 인코딩된 미디어 데이터(ECMD)를 캡쳐하고 패킷화된 미디어 데이터(PKMD)를 생성할 수 있다. 이와 같이, 스트리밍 클라이언트(115a)는 스트리밍 서버(113)로부터 패킷화된 미디어 데이터(PKMD)를 수신할 수 있다.
웹 실시간 통신기(115)는 패킷화된 미디어 데이터(PKMD)를 디패킷화하여 인코딩된 미디어 데이터(ECMD)를 획득할 수 있다. 실시 예들에서, 웹 실시간 통신기(115)는 설정 정보, 예를 들면 메모리(111) 또는 소스 장치(110)의 다른 내부 스토리지에 저장된 구성 파일(configuration file)들을 읽고, 어떤 실시간 네트워크 프로토콜을 사용하여 패킷화된 미디어 데이터(PKMD)가 생성되었는지 여부를 결정할 수 있다. 설정 정보에 기반하여, 웹 실시간 통신기(115)는 패킷화된 미디어 데이터(PKMD)의 페이로드(payload)를 파싱(또는, 식별)할 수 있다. 웹 실시간 통신기(115)는 패킷화된 미디어 데이터(PKMD)의 헤더를 드롭하고, 패킷화된 미디어 데이터(PKMD)의 페이로드로부터 인코딩된 미디어 데이터(ECMD)를 획득할 수 있다.
웹 실시간 통신기(115)는 인코딩된 미디어 데이터(ECMD)를 싱크 장치(120)의 웹 브라우저(125)로 전송하여 웹 실시간 통신을 수행한다. 웹 브라우저(125)는 예를 들면 시그널링에서 결정된 미디어 압축 표준에 기반하여 인코딩된 미디어 데이터(ECMD)를 디코딩하고, 디코딩된 미디어 데이터를 싱크 장치(120)의 디스플레이 및 음성 장비에 랜더링할 수 있다.
미디어 인코더(112)는 하드웨어 인코더일 수 있다. 예를 들면, 메모리(111) 및 미디어 인코더(112)는 하드웨어 계층에 포함되고, 스트리밍 서버(113) 및 웹 실시간 통신기(115)는 소프트웨어 계층에 포함될 수 있다. 그러나, 소스 장치(110)의 실시 예들은 여기에 한정되지 않는다. 예를 들면, 미디어 인코더(112)는 소프트웨어, 펌웨어, 또는 그것들의 조합을 통해 구현될 수 있다. 이러한 경우, 해당 프로그램 코드들(또는 소프트웨어)은 메모리(111) 또는 소스 장치(110)의 또 다른 내부 메모리에 로딩되고, 인코딩에 최적화된 하나 또는 그 이상의 프로세서들은 프로그램 코드들의 명령어들을 실행하여 미디어 인코더(112)를 구현할 수 있다.
하나 또는 그 이상의 프로세서들(도 7의 1200 참조)에 의해 실행되는 소프트웨어를 통해 웹 실시간 통신기(115)가 구현될 수 있다. 웹 실시간 통신기(115)가 웹 실시간 통신을 위해 직접 미디어 소스를 인코딩한다고 가정하면, 미디어 소스를 인코딩하는 데에 상대적으로 많은 하드웨어 자원들이 요구된다. 예를 들면, 소스 장치(110)가 상대적으로 낮은 구동 성능을 가지는 프로세서를 포함하며 그 프로세서가 프로그램 코드들(또는 소프트웨어)을 실행하여 웹 실시간 통신기(115)를 구현하는 경우, 프로세서의 하드웨어 자원들 중 많은 부분들이 미디어 소스를 인코딩하는 데에 사용될 수 있다. 이러한 경우, 웹 실시간 통신은 원활하게 혹은 효율적으로 수행되지 못할 수 있으며, 이에 따라 소스 장치(110)의 전반적인 동작 성능들도 저하될 수 있다. 예를 들면, 소스 장치(110)는 상대적으로 낮은 동작 성능을 갖는 프로세서를 포함하는 IP 카메라, 네트워크 비디오 녹화기, 웹 카메라 등 중 하나일 수 있다.
한편, 미디어 인코더(112)는 하드웨어 인코더이거나 인코딩에 최적화된 하나 또는 그 이상의 프로세서들에 의해 실행되는 소프트웨어를 통해 구현되어 향상된 인코딩 성능을 제공할 수 있다. 예를 들면, 미디어 인코더(112)는 시스템 온 칩 내에 통합되어 미디어 소스들을 인코딩하는 기능들을 제공하되, 그러한 시스템 온 칩이 소스 장치(110)에 실장될 수 있다. 본 발명의 실시 예에 따르면, 웹 실시간 통신기(115)는 미디어 인코더(112)로부터 스트리밍 서버(113)를 통해 인코딩된 미디어 데이터(ECMD)를 수신한다. 이에 따라, 웹 실시간 통신기(115)는 미디어를 인코딩하는 데에 필요한 기능들을 수행하지 않으면서도, 인코딩된 미디어 데이터(ECMD)가 효율적인 전달을 위해 패킷화된 것을 전제로, 인코딩된 미디어 데이터(ECMD)를 획득할 수 있다. 따라서, 설사 웹 실시간 통신기(115)가 소프트웨어를 통해 구현되며 그 소프트웨어를 실행하는 프로세서가 상대적으로 낮은 동작 성능(또는, 상대적으로 적은 하드웨어 자원들)을 갖는다 하더라도, 웹 실시간 통신기(115)는 획득된 인코딩된 미디어 데이터(ECMD)를 이용하여 웹 실시간 통신을 효율적으로 수행할 수 있다. 따라서, 소스 장치(110)는 향상된 인코딩 효율을 가질 수 있다.
미디어 인코더(112)는 다양한 방식들로 구현되어 소스 장치(110)에 실장될 수 있다. 예를 들면, 위 설명된 바와 같이, 미디어 인코더(112)는 다양한 하드웨어 인코더들 중 어느 하나이거나, 하나 또는 그 이상의 프로세서들에 의해 실행되는 소프트웨어를 통해 구현될 수 있다. 이러한 점을 고려할 때, 만약 웹 실시간 통신기(115)가 스트리밍 서버(113)가 아닌 미디어 인코더(112)로부터 인코딩된 미디어 데이터(ECMD)를 직접 수신한다면, 웹 실시간 통신기(115)는 다양한 타입들의 미디어 인코더(112)와 호환될 수 있도록 적절하게 디자인되어 인코딩된 미디어 데이터(ECMD)를 미디어 인코더(112)에 직접적으로 요청하고 수신할 수 있어야 한다(그러한 시스템의 예가 도 10에 도시되어 있다).
소스 장치(110)는 미디어 인코더(112)로부터의 인코딩된 미디어 데이터(ECMD)를 클라우더 서버들과 같은 스트리밍 클라이언트 서버로 업로드할 수 있는 스트리밍 서버(113)를 포함하므로, 스트리밍 서버(113)는 웹 실시간 통신 시 사용될 인코딩된 미디어 데이터(ECMD)를 획득하기 위해 사용될 수도 있다. 본 발명의 실시 예에 따르면, 웹 실시간 통신기(115)는 패킷화된 미디어 데이터(PKMD)를 스트리밍 서버(113)에 요청하고, 패킷화된 미디어 데이터(PKDM)를 처리하여 인코딩된 미디어 데이터(ECMD)를 획득한다. 스트리밍 서버(113)가 미리 결정된 RTP, RTSP, 및 RTMP와 같은 실시간 네트워크 프로토콜들 중 하나에 기반하여 인코딩된 미디어 데이터(ECMD)를 패킷화하는 것으로 고려하면, 웹 실시간 통신기(115)는 몇몇 실시간 네트워크 프로토콜들만 고려하여 설계될 수 있고, 그에 따라 웹 실시간 통신기(115)의 호환성을 향상시킬 수 있으며, 이는 웹 실시간 통신기(115)가 다양한 타입들의 소스 장치들에 채용될 수 있음을 의미할 수 있다. 나아가, 웹 실시간 통신기(115)의 향상된 호환성에 의해, 웹 실시간 통신기(115) 및 그것을 포함하는 소스 장치(110)의 개발 비용은 감소할 수 있다.
도 3은 본 발명의 실시 예에 따른 소스 장치(110)를 동작하는 방법을 보여주는 순서도이다.
도 2 및 도 3을 참조하면, S110단계에서, 싱크 장치(120)의 웹 브라우저(125)와 웹 실시간 통신을 위한 시그널링을 수행한다. 시그널링 동안, 웹 실시간 통신기(115)는 웹 브라우저(125)에 전송될 미디어 데이터에 적용될 미디어 압축 표준을 싱크 장치(120)의 웹 브라우저(125)와 협상한다. 웹 실시간 통신기(115)는 미디어 인코더(112)가 지원하는 미디어 압축 표준이 선택되도록 웹 브라우저(125)와 협상할 수 있다.
S120단계에서, 미디어 인코더(112)에서, 소정의 미디어 압축 표준에 기반하여 미디어 소스가 인코딩된다. 이때 소정의 미디어 압축 표준은 시그널링 동안 협상되는 미디어 압축 표준일 수 있다.
S130단계에서, 스트리밍 서버(113)에서, 실시간 네트워크 프로토콜에 기반하여 인코딩된 미디어 데이터(ECMD)가 패킷화된다. 스트리밍 서버(113)는 미디어 인코더(112)에 의해 생성되는 인코딩된 미디어 데이터(ECMD)를 캡쳐하고, RTP, RTSP, 및 RTMP와 같은 실시간 네트워크 프로토콜들 중 하나의 실시간 네트워크 프로토콜에 기반하여 인코딩된 미디어 데이터(ECMD)를 패킷화할 수 있다.
S140단계에서, 패킷화된 미디어 데이터(PKMD)를 디패킷화하여 인코딩된 미디어 데이터(ECMD)를 획득한다. 웹 실시간 통신기(115)는 스트리밍 서버(113)에 대응하는 실시간 네트워크 프로토콜에 기반하여 디패킷화(또는 packet fragmentation)를 수행할 수 있다. 웹 실시간 통신기(115)는 패킷화된 미디어 데이터(PKMD)의 페이로드로부터 인코딩된 미디어 데이터(ECMD)를 획득할 수 있다.
S150단계에서, 인코딩된 미디어 데이터(ECMD)를 이용하여 싱크 장치(120)의 웹 브라우저(125)와 웹 실시간 통신을 수행한다. 웹 실시간 통신기(115)는 인코딩된 미디어 데이터(ECMD)를 웹 실시간 통신의 특정 포멧으로 다시 패킷화하고, 다시 패킷화된 미디어 데이터를 싱크 장치(120)의 웹 브라우저(125)에 전송할 수 있다.
싱크 장치(120)의 웹 브라우저(125)는 다시 패킷화된 미디어 데이터를 디패킷화하여 인코딩된 미디어 데이터(ECMD)를 획득할 수 있다. 웹 브라우저(125)는 인코딩된 미디어 데이터(ECMD)를 디코딩하여 미디어를 재생할 것이다.
도 4는 본 발명의 실시 예에 따른 웹 실시간 통신기(115)의 동작 방법을 보여주는 순서도이다. 도 5는 단대단 웹 실시간 통신을 위한 시그널링의 일 실시 예를 보여주는 순서도이다. 도 6은 패킷화된 미디어 데이터를 수신 및 처리하기 위한 준비 동작의 실시 예를 보여주는 순서도이다.
도 2 및 도 4를 참조하면, S210단계에서, 싱크 장치(120)의 웹 브라우저(125)와 웹 실시간 통신을 위한 시그널링을 수행한다. 시그널링에서, 웹 실시간 통신기(115)는 싱크 장치(120)의 웹 브라우저(125)와 세션 기술자 프로토콜(seesion description protocol)에 기반한 메시지들을 교환할 수 있다. 시그널링은 웹 실시간 통신기(115) 및 웹 브라우저(125) 모두가 시그널링 서버(130)에 액세스한 후에 수행될 수 있다.
시그널링은 웹 실시간 통신의 단대단 통신을 위한 미디어 공유 세션을 수립한다. 도 5를 참조하면, 시그널링은 S311단계 내지 S318단계를 포함할 수 있다. S311단계에서, 웹 브라우저(125)는 세션 기술자 프로토콜에 기반한 오퍼(offer)를 시그널링 서버(130)에 전송할 수 있으며, 이때 오퍼는 웹 브라우저(125)의 미디어 관련 능력들, 예를 들면 웹 브라우저(125)가 지원 가능한 미디어 압축 표준과 미디어 데이터의 해상도 등을 알린다. S312단계에서, 시그널링 서버(130)는 웹 브라우저(125)로부터의 오퍼를 웹 실시간 통신기(115)에 중계(relay)할 수 있다. S313단계에서, 웹 실시간 통신기(115)는 세션 기술자 프로토콜에 기반한 대답(answer)을 시그널링 서버(130)에 전송할 수 있으며, 이때 대답은 웹 실시간 통신기(115) 및/또는 소스 장치(110)의 미디어 관련 능력들, 예를 들면 웹 실시간 통신기(115) 및/또는 소스 장치(110)가 지원 가능한 미디어 압축 표준과 미디어 데이터의 해상도 등을 알린다. 이러한 대답에서 나타나는 미디어 압축 표준은 소스 장치(110)에 실장된 미디어 인코더(112)에 대응하는 미디어 압축 표준을 포함할 수 있다. S314단계에서, 시그널링 서버(130)는 대답을 웹 브라우저(125)에 중계할 수 있다. 즉, S311단계 내지 S314단계를 통해, 웹 실시간 통신기(115) 및 웹 브라우저(125)는 미디어 압축 표준을 포함한 미디어 관련 능력들을 협상할 수 있다.
S315단계에서, 웹 브라우저(125)는 네트워크(105) 내에서 웹 브라우저(125)를 식별하기 위한 후보자들(candidates), 예를 들면 웹 실시간 통신을 수행할 IP 어드레스 및 포트를 시그널링 서버(130)에 전송할 수 있다. S316단계에서, 시그널링 서버(130)는 웹 브라우저(125)의 후보자들을 웹 실시간 통신기(115)에 중계할 수 있다. S317단계에서, 웹 실시간 통신기(115) 또한 네트워크(105) 내에서 웹 실시간 통신기(115)를 식별하기 위한 후보자들을 전송할 수 있다. S318단계에서, 시그널링 서버(130)는 웹 실시간 통신기(115)의 후보자들을 웹 브라우저(125)에 중계할 수 있다. 실시 예들에서, 웹 실시간 통신기(115) 및 웹 브라우저(125) 각각은 STUN(Session Traversal Utilities for NAT) 서버들을 이용하여 후보자들을 결정할 수 있다. 예를 들면, STUN 서버들은 웹 실시간 통신기(115) 및 웹 브라우저(125)로부터의 요청들에 응답하여 후보자들을 리턴할 수 있다. S315단계 내지 S318단계를 통해, 웹 실시간 통신기(115) 및 웹 브라우저(125) 각각은 웹 실시간 통신이 수행될 IP 어드레스와 포트를 특정할 수 있다.
앞서 설명된 실시 예에서, 웹 브라우저(125)가 오퍼를 전송하고 그 후 웹 실시간 통신기(115)가 오퍼에 응답하여 대답을 전송한다. 그러나, 본 발명의 실시 예들은 여기에 한정되지 않으며, S311단계 내지 S318단계의 순서는 다양하게 변경될 수 있다. 예를 들면, 웹 실시간 통신기(115)가 먼저 오퍼를 전송하여 시그널링을 시작하고, 웹 브라우저(125)가 오퍼에 응답하여 대답을 전송할 수 있다.
S320단계에서, 시그널링이 성공적으로 수행된 후에, 웹 실시간 통신기(115) 및 웹 브라우저(125)는 웹 실시간 통신에 기반하여 단대단 통신을 수행할 수 있다.
다시 도 4를 참조하면, S220단계에서, 패킷화된 미디어 데이터(PKMD)를 스트리밍 서버(113)에 요청한다. 이에 따라 웹 실시간 통신기(115)는 인코딩된 미디어 데이터(ECMD)를 포함하는 패킷화된 미디어 데이터(PKMD)를 스트리밍 서버로부터 수신한다.
S230단계에서, 패킷화된 미디어 데이터를 디패킷화하여 인코딩된 미디어 데이터(ECMD)를 획득한다. 웹 실시간 통신기(115)는 스트리밍 서버(113)의 실시간 네트워크 프로토콜에 기반하여 패킷화된 미디어 데이터(PKMD)의 페이로드를 파싱하고, 페이로드로부터 인코딩된 미디어 데이터(ECMD)를 추출할 수 있다.
S220단계 또는 S230단계를 수행하기 전에, 도 6을 참조하면, 웹 실시간 통신기(115)는 스트리밍 서버(113)의 실시간 네트워크 프로토콜을 판별할 수 있다(S410단계). 판별된 실시간 네트워크 프로토콜에 기초하여, 웹 실시간 통신기(115)는 패킷화된 미디어 데이터(PKMD)의 페이로드를 식별할 수 있다. 실시 예들에서, 웹 실시간 통신기(115)는 구성 파일(configuration file)과 같은 설정 정보를 소스 장치(110) 내 임의의 종류들의 내부 스토리지들(도 7의 1300 및 1600 참조) 또는 소스 장치(110)와 연관된 임의의 종류들의 외부 스토리지들로부터 읽을 수 있으며, 읽어진 설정 정보에 기반하여 스트리밍 서버(113)의 실시간 네트워크 프로토콜을 판별할 수 있다. 다른 실시 예에서, 웹 실시간 통신기(115)는 다수의 실시간 네트워크 프로토콜들에 따르는 스트리밍 서버들을 순차적으로 호출(call)할 수 있으며, 그에 따른 응답이 수신되는지 여부에 따라 스트리밍 서버(113)의 실시간 네트워크 프로토콜을 판별할 수 있다.
다시 도 4를 참조하면, S240단계에서, 인코딩된 미디어 데이터(ECMD)를 이용하여 웹 실시간 통신을 수행한다. 웹 실시간 통신기(115)는 인코딩된 미디어 데이터(ECMD)를 싱크 장치(120)의 웹 브라우저(125)에 전송할 수 있다.
본 발명의 실시 예에 따른 웹 실시간 통신기(115)를 포함하는 소스 장치(110)는 미디어 인코더(112)에 의해 인코딩된 미디어 데이터(ECMD)를 웹 실시간 통신에 사용함으로써 향상된 인코딩 효율을 가질 수 있다. 나아가, 스트리밍 서버(113)를 통해 인코딩된 미디어 데이터(ECMD)를 제공함으로써, 웹 실시간 통신기(115)의 호환성은 향상될 수 있다.
도 7은 소스 장치(110)의 실시 예들을 구현하기 위한 컴퓨터 시스템(1000)의 실시 예를 보여주는 블록도이다.
도 7을 참조하면, 컴퓨터 시스템(1000)는 버스(1100), 프로세서(1200, Processor), 시스템 메모리(1300, System Memory), 반도체 칩(1400), 미디어 녹화기(1500, Media Recorder), 저장 매체(1600, Storage Medium), 및 네트워크 인터페이스(1700, Network Interface)를 포함할 수 있다.
버스(1100) 혹은 그 밖의 통신 메커니즘은 데이터, 신호들, 및 정보의 통신을 위해 컴퓨터 시스템(1000)의 다양한 구성 요소들을 연결한다. 프로세서(1200)는 범용 프로세서 혹은 전용 프로세서 중 적어도 하나일 수 있으며, 컴퓨터 시스템(1000)의 제반 동작들을 제어할 수 있다. 시스템 메모리(1300)는 프로세서(1200)에 의해 실행될 정보 및 명령어들을 저장할 수 있다. 시스템 메모리(1300)는 RAM(Random Access Memory), ROM(Read Only Memory), 및 다양한 타입들의 컴퓨터에 의해 판독 가능한 매체들 중 적어도 하나의 임의의 조합일 수 있다.
반도체 칩(1400)은 버스(1100)에 연결되어 인코딩된 미디어 데이터(도 2의 ECMD 참조)를 제공할 수 있다. 반도체 칩(1400)은 미디어 소스를 인코딩하는 미디어 인코더(1410)를 포함할 수 있다. 미디어 소스 및/또는 인코딩된 미디어 데이터는 반도체 칩(1400)의 내부 메모리(1420) 또는 컴퓨터 시스템(1000)의 시스템 메모리(1300) 내에 저장될 수 있다. 내부 메모리(1420) 및/또는 시스템 메모리(1300)는 도 2에 도시된 메모리(111)로서 제공될 수 있다.
실시 예들에서, 미디어 인코더(1410)는 하드웨어 인코더일 수 있다. 다른 실시 예에서, 반도체 칩(1400)은 미디어 인코더(1410)에 대응하는 프로그램 코드들을 실행하는 하나 또는 그 이상의 프로세서들을 포함할 수 있다. 이러한 경우, 내부 메모리(1420)는 그러한 프로세서들의 워킹 메모리로서 제공될 수 있다.
시스템 메모리(1300)는 프로세서(1200)에 의해 실행될 때 특정 기능들을 제공하는 프로그램 코드들을 저장할 수 있다. 그러한 프로그램 코드들은 패킷화된 미디어 데이터(도 2의 PKMD 참조)를 처리하여 인코딩된 미디어 데이터(도 2의 ECMD 참조)를 생성하고, 인코딩된 미디어 데이터를 외부의 웹 브라우저(도 2의 120 참조)에 전송하여 웹 실시간 통신을 수행하는 기능들, 그리고 여기에 기재된 다른 기능들을 제공하기 위한 웹 실시간 통신 모듈(1310, WebRTC Module)을 포함할 수 있다. 즉, 웹 실시간 통신 모듈(1310)은 프로세서(1200)에 의해 실행될 때 도 2에 도시된 웹 실시간 통신기(1150)의 기능들을 제공할 수 있다. 시스템 메모리(1300)에 저장된 프로그램 코드들은 프로세서(1200)에 의해 실행될 때 도 2에 도시된 스트리밍 서버(1320)의 기능들을 제공하기 위한 스트리밍 모듈(1320, Streaming Module)을 더 포함할 수 있다. 또한, 시스템 메모리(1300)에 저장된 프로그램 코드들은 다른 기능들을 제공하기 위한 하나 또는 그 이상의 추가적인 기능 모듈들(Additaional Functional Modules)을 더 포함할 수 있다. 예를 들면, 시스템 메모리(1300)에 저장된 프로그램 코드들은 컴퓨터 시스템(1000)에 대해 운영 체제(operating system)을 제공하는 운영 체제 모듈을 더 포함할 수 있다.
미디어 녹화기(1500)는 이미지들 및/또는 음성을 녹화하여 영상 데이터 및/또는 음성 데이터를 제공한다. 영상 데이터 및/또는 음성 데이터는 프로세서(1200)에 의해 처리되어 미디어 소스로 제공될 수 있다. 도 7에는 미디어 녹화기(1500)가 컴퓨터 시스템(1000)에 포함되는 것으로 도시되나, 본 발명의 실시 예들은 여기에 한정되지 않는다. 예를 들면, 미디어 녹화기(1500)는 컴퓨터 시스템(1000)과 분리될 수 있고, 네트워크를 통해 컴퓨터 시스템(1000)과 통신할 수 있다. 이러한 경우, 컴퓨터 시스템(1000)은 분리된 미디어 녹화기(1500)로부터의 영상 데이터 및/또는 음성 데이터를 네트워크 인터페이스(1700)를 통해 수신할 수 있다.
저장 매체(1600)는 프로세서(1200)에 의해 액세스 가능한 다양한 매체들 중 적어도 하나일 수 있다. 저장 매체(1600)는 메모리 카드와 같은 불휘발성 스토리지를 포함할 수 있다. 예를 들면, 저장 매체(1600)는 컴팩트 플래쉬(Compact Flash: CF) 카드, 스마트 미디어(Smart Media: SM) 카드, 메모리 스틱, 멀티 미디어 카드(Multi Media Card: MMC), 보안 디지털(Secure Digital: SD) 카드, 유니버셜 플래시 스토리지(Universal Flash Storage: UFS) 등 중 적어도 하나를 포함할 수 있다. 또한, 저장 매체(1600)는 탈착 가능하거나 탈착 불가한 스토리지들을 포함할 수 있다.
네트워크 인터페이스(1700)(또는 트랜시버)는 네트워크를 통해 컴퓨터 시스템(1000)과 다른 장치들 사이의 신호들을 송수신한다. 네트워크는 단일 네트워크 혹은 다수 네트워크들의 조합일 수 있다. 예를 들면, 네트워크는 공용 네트워크, 하나 또는 그 이상의 사설 네트워크들, 유선 네트워크, 무선 네트워크, 및/또는 컴퓨터 시스템(1000) 및 도 1에 도시된 네트워크 시스템(100)의 다양한 구성 요소들이 액세스 가능한 다른 적절한 타입들의 네트워크들을 포함할 수 있다.
실시 예들에서, 컴퓨터 시스템(1000)은 사용자 액션(user action), 예를 들면 키패드에서 키들을 선택하는 입력이나 버튼 및 이미지 등을 선택하는 입력을 처리하며, 해당 신호를 버스(1100)에 전송하는 입출력 구성 요소를 더 포함할 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 소스 장치(210)를 보여주는 블록도이다.
도 8을 참조하면, 소스 장치(210)는 메모리(211, Memory), 미디어 인코더(212, Media Encoder), 스트리밍 서버(213, Streaming Server), 및 웹 실시간 통신기(215, Web Real-time Communicator)를 포함한다. 메모리(211), 미디어 인코더(212), 및 스트리밍 서버(213)는 도 2를 참조하여 설명된 메모리(111), 미디어 인코더(112), 및 스트리밍 서버(113)와 마찬가지로 구성될 수 있다. 이하, 간결한 설명을 위해 이 구성 요소들에 대한 설명은 생략된다.
웹 실시간 통신기(215)가 싱크 장치(120)의 웹 브라우저(125)와 시그널링을 수행할 때, 미디어 인코더(212)에 대응하지 않는 미디어 압축 표준이 선택될 수 있다. 예를 들면, 싱크 장치(120)의 웹 브라우저(125)가 미디어 인코더(212)에서 지원되는 미디어 압축 표준을 지원하지 않는 경우, 미디어 인코더(212)에서 지원되는 미디어 압축 표준은 웹 브라우저(125)와의 협상에서 선택할 수 없다. 이러한 경우, 미디어 인코더(212)에 대응하지 않는 다른 미디어 압축 표준이 선택될 수 있다.
본 발명의 실시 예에 따르면, 웹 실시간 통신기(215)는 시그널링 결과에 따라 스트리밍 서버(213)에 패킷화된 미디어 데이터(PKMD)를 요청한다.
시그널링에서 미디어 인코더(212)에 대응하는 미디어 압축 표준이 선택될 때, 웹 실시간 통신기(215)의 스트리밍 클라이언트(215a)는 스트리밍 서버(213)에 패킷화된 미디어 데이터(PKMD)를 요청할 수 있다. 요청에 응답하여, 스트리밍 서버(213)는 미디어 캡쳐 드라이버(213a)를 이용하여 미디어 인코더(212)에 의해 제공되는 인코딩된 미디어 데이터(ECMD)를 캡쳐하고, 패킷화된 미디어 데이터(PKMD)를 생성한다. 웹 실시간 통신기(215)는 스트리밍 클라이언트(215a)를 통해 패킷화된 미디어 데이터(PKMD)를 수신하고 패킷화된 미디어 데이터(PKMD)를 이용하여 웹 실시간 통신을 수행할 수 있다.
시그널링에서 미디어 인코더(212)에 대응하지 않는 다른 미디어 압축 표준이 선택될 때, 웹 실시간 통신기(215)는 메모리(211)로부터 직접 미디어 소스(MS)를 수신할 수 있다. 웹 실시간 통신기(215)도 미디어 캡쳐 드라이버(215b)를 포함할 수 있다. 웹 실시간 통신기(215)의 미디어 캡쳐 드라이버(215b)는 메모리(211)로부터 미디어 소스(MS)를 캡쳐할 수 있다. 웹 실시간 통신기(215)는 캡쳐된 미디어 소스(MS)를 시그널링에서 선택된 미디어 압축 표준에 기반하여 인코딩할 수 있다. 웹 실시간 통신기(215)는 인코딩된 미디어 데이터를 이용하여 웹 실시간 통신을 수행할 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 웹 실시간 통신기(215)의 동작 방법을 보여주는 순서도이다.
도 8 및 도 9를 참조하면, S510단계에서, 싱크 장치(120)의 웹 브라우저(125)와 웹 실시간 통신을 위한 시그널링을 수행한다. 시그널링에서 미디어 데이터에 적용될 미디어 압축 표준이 선택된다.
S520단계에서, 시그널링에서 선택된 미디어 압축 표준이 미디어 인코더(212)에 대응하는지 여부를 판별한다. 만약 그렇다면, S530단계 및 S540단계가 수행된다. 시그널링에서 선택된 미디어 압축 표준이 미디어 인코더(212)에 대응할 때, 미디어 소스는 상대적으로 높은 처리 속도를 갖는 미디어 인코더(212)에 의해 인코딩될 수 있다. 실시 예들에서, 미디어 인코더(212)에 대응하는 미디어 압축 표준은 영상 압축 표준들 H.263, H.264, 및 H.265 중 적어도 하나일 수 있다. 이와 같이, S530단계 및 S540단계는 시그널링에서 선택된 미디어 압축 표준이 미디어 인코더(212)에 대응할 때 수행될 수 있다. S530단계 및 S540단계는 도 4의 S220단계 및 S230단계와 마찬가지로 설명되며, 그러므로 중복되는 설명은 생략된다.
S550단계에서, 시그널링에서 선택된 미디어 압축 표준이 미디어 인코더(212)에 대응하지 않을 때 미디어 소스를 캡쳐한다. S560단계에서, 선택된 미디어 압축 표준에 기반하여, 캡쳐된 미디어 소스를 인코딩한다. 예를 들면, 웹 실시간 통신기(215)에 의해 인코딩되는 미디어 압축 표준은 영상 압축 표준들 VP8, VP9, 및 AV1 중 적어도 하나일 수 있다.
S570단계에서, 인코딩된 미디어 데이터를 이용하여 웹 실시간 통신을 수행한다. 웹 실시간 통신기(215)는 싱크 장치(120)의 웹 브라우저(125)에 인코딩된 미디어 데이터를 전송할 수 있다.
본 발명의 실시 예에 따르면, 시그널링에서 선택되는 미디어 압축 표준이 미디어 인코더(212)에 대응하지 않을 때, 웹 실시간 통신기(215)는 웹 실시간 통신을 위해 미디어 소스를 직접 인코딩할 수 있다. 이에 따라, 싱크 장치들의 다양한 웹 브라우저들에 대해 상대적으로 높은 호환성을 갖는 소스 장치가 제공될 수 있다.
도 10은 본 발명의 또 다른 실시 예에 따른 소스 장치(310)를 보여주는 블록도이다.
도 10을 참조하면, 소스 장치(310)는 메모리(311, Memory), 미디어 인코더(312, Media Encoder), 스트리밍 서버(313, Streaming Server), 및 웹 실시간 통신기(315, Web Real-time Communicator)를 포함한다. 메모리(311), 미디어 인코더(312), 및 스트리밍 서버(313)는 도 2를 참조하여 설명된 메모리(111), 미디어 인코더(112), 및 스트리밍 서버(113)와 마찬가지로 구성될 수 있다. 이하, 간결한 설명을 위해 이 구성 요소들에 대한 설명은 생략된다.
미디어 인코더(312)로부터 인코딩된 미디어 데이터(ECMD)를 더 수신하는 것을 제외하면, 웹 실시간 통신기(315)는 도 8을 참조하여 설명된 웹 실시간 통신기(215)와 마찬가지로 구성된다. 웹 실시간 통신기(315)는 적어도 하나의 다양한 타입들의 미디어 인코더들에 액세스 가능하도록 설계될 수 있다. 웹 실시간 통신기(315)의 미디어 캡쳐 드라이버(315b)는 미디어 인코더(312)에 액세스 가능할 때 미디어 인코더(312)로부터 인코딩된 미디어 데이터(ECMD)를 캡쳐할 수 있다.
도 11은 본 발명의 또 다른 실시 예에 따른 웹 실시간 통신기(315)의 동작 방법을 보여주는 순서도이다.
도 10 및 도 11을 참조하면, S610단계에서, 싱크 장치(120)의 웹 브라우저(125)와 웹 실시간 통신을 위한 시그널링을 수행한다.
S620단계에서, 시그널링에서 선택된 미디어 압축 표준이 미디어 인코더(312)에 대응하는지 여부를 판별한다. 만약 그렇다면, S630단계가 수행된다. S630단계에서, 스트리밍 서버(313)가 존재하는지 여부를 판별한다. 예를 들면, 도 6을 참조하여 설명된 바와 같이, 웹 실시간 통신기(315)는 설정 정보를 읽거나 여러 실시간 네트워크 프로토콜들에 따른 스트리밍 서버들을 순차적으로 호출하여 스트리밍 서버(313)가 존재하는지 여부를 판별한다. S640단계 및 S650단계는 스트리밍 서버(313)가 존재할 때 수행된다. S640단계 및 S650단계는 도 4의 S220단계 및 S230단계와 마찬가지로 설명되며, 그러므로 중복되는 설명은 생략된다.
선택된 미디어 압축 표준이 미디어 인코더(312)에 대응하지 않을 때, S660단계 및 S670단계가 수행된다. S660단계 및 S670단계는 도 9의 S550단계 및 S560단계와 마찬가지로 설명되며, 이하 중복되는 설명은 생략된다.
S680단계에서, 미디어 인코더(312)가 액세스 가능한지 여부를 판별한다. S690단계에서, 미디어 인코더(312)가 액세스 가능할 때, 인코딩된 미디어 데이터(ECMD)를 미디어 인코더(312)로부터 캡쳐한다. 좀 더 상세하게, 웹 실시간 통신기(315)는 다양한 타입들의 미디어 인코더들 중 적어도 하나에 액세스 가능하도록 설계될 수 있다. 그리고, 스트리밍 서버(313)가 존재하지 않지만 소스 장치(310) 내 미디어 인코더(312)가 상기 다양한 타입들의 미디어 인코더들 중 적어도 하나에 포함될 때, 웹 실시간 통신기(315)는 인코딩된 미디어 데이터(ECMD)를 미디어 인코더(312)로부터 캡쳐할 수 있다. 예를 들면, 웹 실시간 통신기(315)는 소스 장치(310)의 내부 스토리지들로부터 혹은 소스 장치(310)와 연관된 외부 스토리지들로부터 설정 정보를 읽어 소스 장치(310)에 액세스 가능한 미디어 인코더가 포함되는지 여부를 판별할 수 있다. 또는, 웹 실시간 통신기(315)는 하나 또는 그 이상의 타입들의 미디어 인코더들을 순차적으로 호출하여 소스 장치(310)에 액세스 가능한 미디어 인코더가 포함되는지 여부를 판별할 수 있다.
S700단계에서, 인코딩된 미디어 데이터(ECMD)를 이용하여 웹 실시간 통신을 수행한다.
본 발명의 실시 예에 따르면, 웹 실시간 통신기(315)는 미디어 인코더(312)가 액세스 가능할 때 미디어 인코더(312)로부터 인코딩된 미디어 데이터(ECMD)를 캡쳐할 수 있다. 이에 따라, 비록 소스 장치(310)가 스트리밍 서버(312)를 포함하지 않는다 하더라도, 웹 실시간 통신기(315)를 포함하는 소스 장치(310)는 향상된 인코딩 효율을 가질 수 있고, 이에 따라 다양한 소스 장치들에 대한 웹 실시간 통신기(315)의 호환성은 향상된다.
도 12는 소스 시스템(410)을 포함하는 네트워크 시스템(400)을 보여주는 블록도이다.
도 12를 참조하면, 소스 시스템(410)은 네트워크(405)를 통해 싱크 장치(420)와 시그널링 서버(430)에 연결될 수 있다.
소스 시스템(410)은 미디어 소스들을 제공하는 하나 또는 그 이상의 소스 장치(SOURCE DEVICE)들(SD1~SDm) 및 그 소스 장치들(SD1~SDm)과 통신하는 웹 실시간 통신 장치(415, Web Real-time Communication Device)를 포함한다. 웹 실시간 통신 장치(415)는 제 1 내지 제 m 소스 장치들(SD1~SDm)에 웹 실시간 통신 기능을 제공한다. 웹 실시간 통신 장치(415)는 시그널링 서버(430, SIGNALING SERVER)를 통해 싱크 장치(420)의 웹 브라우저(425)와 시그널링을 수행한다.
웹 실시간 통신 장치(415)는, 예를 들면 라우터들 뒷단의 사설 네트워크를 통해 제 1 내지 제 m 소스 장치들(SD1~SDm)에 연결될 수 있다. 웹 실시간 통신 장치(415)는 시그널링을 수행한 후에 패킷화된 미디어 데이터를 제 1 내지 제 m 소스 장치들(SD1~SDm) 각각에 요청할 수 있다. 그러한 요청에 응답하여, 제 1 내지 제 m 소스 장치들(SD1~SDm) 각각은 인코딩된 미디어 데이터를 포함하는 패킷화된 미디어 데이터를 웹 실시간 통신 장치(415)에 제공할 수 있다.
도 13은 본 발명의 실시 예에 따른 소스 시스템(410)을 보여주는 블록도이다.
도 13을 참조하면, 제 1 내지 제 m 소스 장치들(SD1~SDm) 각각은 메모리, 미디어 인코더, 및 스트리밍 서버를 포함할 수 있다. 제 1 소스 장치(SD1)는 제 1 메모리(511, First Memory), 제 1 미디어 인코더(512, First Media Encoder), 및 제 1 스트리밍 서버(513, First Streaming Server)를 포함한다. 제 2 소스 장치(SD2)는 제 2 메모리(521, Second Memory), 제 2 미디어 인코더(522, Second Media Encoder), 및 제 2 스트리밍 서버(523, Second Streaming Server)를 포함한다. 제 m 소스 장치(SDm)는 제 m 메모리(5m1, m-th Memory), 제 m 미디어 인코더(5m2, m-th Media Encoder), 및 제 m 스트리밍 서버(5m3, m-th Streaming Server)를 포함한다.
웹 실시간 통신 장치(415)는 제 1 내지 제 m 채널들(CH1~CHm)을 통해 각각 제 1 내지 제 m 스트리밍 서버들(513~5m3)과 통신할 수 있다. 웹 실시간 통신 장치(415) 및 소스 장치들(SD1~SDm)은 제 1 내지 제 m 채널들(CH1~CHm)에 연결하기 위한 네트워크 포트들을 포함할 수 있다.
웹 실시간 통신 장치(415)는 시그널링을 수행한 후에 패킷화된 미디어 데이터를 해당 소스 장치의 스트리밍 서버에 요청할 수 있다. 요청을 수신한 소스 장치의 미디어 인코더는 메모리의 미디어 소스를 인코딩하고 인코딩된 미디어 데이터를 생성한다. 스트리밍 서버는 인코딩된 미디어 데이터를 패킷화하고 패킷화된 미디어 데이터를 웹 실시간 통신 장치(415)의 스트리밍 클라이언트(415a)에 전송한다. 도 13은 제 1 내지 제 m 미디어 인코더들(512~5m2)이 제 1 내지 제 m 인코딩된 미디어 데이터들(ECMD1~ECMDm)을 각각 제공하고, 제 1 내지 제 m 스트리밍 서버들(513~5m3)이 각각 제 1 내지 제 m 패킷화된 미디어 데이터들(PKMD1~PKMDm)을 웹 실시간 통신 장치(415)에 전송하는 것으로 도시된다. 웹 실시간 통신 장치(415)는 수신된 패킷화된 미디어 데이터를 처리하여 인코딩된 미디어 데이터를 생성하고, 인코딩된 미디어 데이터를 싱크 장치(420)의 웹 브라우저(425)에 전송하여 웹 실시간 통신을 수행할 수 있다.
실시 예들에서, 웹 실시간 통신 장치(415)는, 제 1 내지 제 m 패킷화된 미디어 데이터(PKMD1~PKMDm)를 수신하기 전에, 제 1 내지 제 m 소스 장치들(SD1~SDm)로부터 제 1 내지 제 m 스트리밍 서버들(513~5m3)의 실시간 네트워크 프로토콜들의 정보를 수신할 수 있다.
도 14는 도 13의 소스 시스템(410)의 변형 실시 예(600)를 보여주는 블록도이다.
도 14를 참조하면, 제 1 내지 제 m 소스 장치들(SD1’~SDm’) 각각은 메모리와 미디어 인코더를 포함할 수 있다. 제 1 소스 장치(SD1’)는 제 1 메모리(611, First Memory)와 제 1 미디어 인코더(612, First Media Encoder)를 포함하고, 제 2 소스 장치(SD2’)는 제 2 메모리(621, Second Memory) 및 제 2 미디어 인코더(622, Second Media Encoder)를 포함하고, 제 m 소스 장치(SDm’)는 제 m 메모리(6m1, m-th Memory)와 제 m 미디어 인코더(6m2, m-th Media Encoder)를 포함한다.
스트리밍 서버(713, Streaming Server)는 웹 실시간 통신 장치(700)에 통합될 수 있다. 웹 실시간 통신 장치(700)의 스트리밍 서버(713)는 제 1 내지 제 m 채널들(CH1~CHm)을 통해 제 1 내지 제 m 소스 장치들(SD1’~SDm’)과 각각 통신할 수 있다. 스트리밍 서버(713)는 제 1 내지 제 m 채널들(CH1~CHm)을 통해 제 1 내지 제 m 인코딩된 미디어 데이터들(ECMD1~ECMDm)을 각각 수신하고, 제 1 내지 제 m 패킷화된 미디어 데이터들(PKMD1~PKMDm)을 웹 실시간 통신 장치(700)의 웹 실시간 통신기(715, Web Real-time Communicator)에 제공한다.
실시 예들에서, 도 12 및 도 13에 도시된 소스 장치들(SD1~SDm, SD1’~SDm’)과 웹 실시간 통신 장치들(415, 700)은 도 7을 참조하여 설명된 컴퓨터 시스템(1000)을 통해 구현될 수 있다. 이러한 경우, 소스 장치들(SD1~SDm, SD1’~SDm’)은 도 12 및 도 13에 도시된 실시 예들에 따라 선택적으로 스트리밍 모듈(1320)을 포함할 수 있다. 웹 실시간 통신 장치(415, 700)는 반도체 칩(1400)을 포함하지 않으며, 도 12 및 도 13에 도시된 실시 예들에 따라 선택적으로 스트리밍 모듈(1320)을 포함할 수 있다. 실시 예들에서, 웹 실시간 통신 장치들(415, 700)의 기능들은 하드웨어 장치에 의해 제공될 수 있다.
비록 특정 실시 예들 및 적용 례들이 여기에 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정들 및 변형들이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 네트워크 시스템
105: 네트워크
110: 소스 장치
111: 메모리
112: 미디어 인코더
113: 스트리밍 서버
115: 웹 실시간 통신기
120: 싱크 장치
125: 웹 브라우저

Claims (21)

  1. 외부의 웹 브라우저와 실시간 통신을 수행하는 방법에 있어서:
    네트워크를 통해 상기 웹 브라우저와 시그널링하여 상기 실시간 통신을 개시하는 단계;
    상기 시그널링이 수행된 후에, 인코딩된 미디어 데이터를 소정의 실시간 네트워크 프로토콜에 기반하여 패킷화하는 단계;
    상기 패킷화된 미디어 데이터를 디패킷화하여 상기 인코딩된 미디어 데이터를 획득하는 단계; 및
    상기 네트워크를 통해 상기 인코딩된 미디어 데이터를 상기 웹 브라우저에 전송함으로써 상기 실시간 통신을 수행하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 패킷화된 미디어 데이터를 디패킷화하는 단계는 상기 패킷화된 미디어 데이터의 페이로드로부터 상기 인코딩된 미디어 데이터를 획득하는 단계를 포함하는 방법.
  3. 제 2 항에 있어서,
    내부 스토리지에 저장된 설정 정보를 읽어 상기 소정의 실시간 네트워크 프로토콜을 판별하는 단계를 더 포함하되,
    상기 패킷화된 미디어 데이터의 상기 페이 로드는 상기 판별된 실시간 네트워크 프로토콜에 따라 식별되는 방법.
  4. 제 1 항에 있어서,
    상기 실시간 통신을 수행하는 단계는,
    상기 인코딩된 미디어 데이터를 다시 패킷화하는 단계; 및
    상기 다시 패킷화된 미디어 데이터를 상기 웹 브라우저로 전송하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    하드웨어 미디어 인코더를 이용하여 상기 미디어 소스를 인코딩함으로써, 상기 인코딩된 미디어 데이터를 생성하는 단계를 더 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 실시간 통신은 웹 실시간 통신(web real-time communication)을 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 소정의 실시간 네트워크 프로토콜은 RTP(Real-Time transport Protocol), RTSP(Real-Time Streaming Protocol), 및 RTMP(Real-Time Messaging Protocol) 중 하나인 방법.
  8. 제 1 항에 있어서,
    상기 인코딩된 미디어 데이터는 영상 압축 표준들인 H.263, H.264, H.265, VP8, VP9, 및 AV1(AOMedia Video 1) 중 하나에 기반하는 방법.
  9. 외부의 웹 브라우저와 웹 실시간 통신을 수행하는 방법에 있어서:
    상기 웹 브라우저와 시그널링하여 상기 웹 실시간 통신을 개시하는 단계;
    상기 시그널링의 결과에 따라 스트리밍 서버에 패킷화된 미디어 데이터를 요청하되, 상기 패킷화된 미디어 데이터는 소정의 미디어 압축 표준에 기반하여 인코딩된 미디어 데이터를 포함하는, 단계; 및
    상기 패킷화된 미디어 데이터로부터 획득되는 상기 인코딩된 미디어 데이터를 상기 웹 브라우저에 전송함으로써 상기 웹 실시간 통신을 수행하는 단계를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 스트리밍 서버에 대응하는 실시간 네트워크 프로토콜 정보를 상기 스트리밍 서버와 연관된 소스 장치로부터 수신하는 단계를 더 포함하되,
    상기 인코딩된 미디어 데이터는 상기 패킷화된 미디어 데이터의 페이로드로부터 획득되고,
    상기 패킷화된 미디어 데이터의 상기 페이로드는 상기 수신된 실시간 네트워크 프로토콜 정보에 기반하여 식별되는 방법.
  11. 제 9 항에 있어서,
    내부 스토리지에 저장된 설정 정보를 읽어 상기 스트리밍 서버에 대응하는 실시간 네트워크 프로토콜을 판별하는 단계를 더 포함하되,
    상기 인코딩된 미디어 데이터는 상기 패킷화된 미디어 데이터의 페이로드로부터 획득되고,
    상기 패킷화된 미디어 데이터의 상기 페이로드는 상기 판별된 실시간 네트워크 프로토콜에 기반하여 식별되는 방법.
  12. 제 9 항에 있어서,
    상기 패킷화된 미디어 데이터는 상기 시그널링의 결과 상기 웹 브라우저가 상기 소정의 미디어 압축 표준을 지원할 때 요청되는 방법.
  13. 제 12 항에 있어서,
    상기 소정의 미디어 압축 표준은 영상 압축 표준들 H.263, H.264, 및 H.265 중 하나인 방법.
  14. 제 9 항에 있어서,
    상기 시그널링의 결과 상기 웹 브라우저가 상기 소정의 미디어 압축 표준과 상이한 미디어 압축 표준을 지원할 때, 미디어 소스를 수신하는 단계를 더 포함하는 방법.
  15. 제 14 항에 있어서,
    상기 상이한 미디어 압축 표준에 기반하여 상기 미디어 소스를 인코딩하는 단계; 및
    상기 상이한 미디어 압축 표준에 기반하여 인코딩된 미디어 소스를 전송함으로써 상기 웹 실시간 통신을 수행하는 단계를 더 포함하는 방법.
  16. 외부의 웹 브라우저와 웹 실시간 통신을 수행하는 소스 장치에 있어서:
    미디어 소스를 처리하여 인코딩된 미디어 데이터를 생성하도록 구성되는 미디어 인코더;
    소정의 실시간 네트워크 프로토콜에 기반한 상기 인코딩된 미디어 데이터의 패킷화를 지원하도록 구성되는 스트리밍 서버; 및
    상기 웹 브라우저와 시그널링하여 상기 웹 실시간 통신을 개시하고, 상기 시그널링의 결과에 따라 상기 스트리밍 서버에 상기 패킷화된 미디어 데이터를 요청하도록 구성되는 웹 실시간 통신기를 포함하되,
    상기 웹 실시간 통신기는 상기 패킷화된 미디어 데이터를 이용하여 상기 웹 실시간 통신을 수행하도록 구성되는 소스 장치.
  17. 제 16 항에 있어서,
    상기 미디어 인코더는 제 1 미디어 압축 표준에 기반하여 상기 인코딩된 미디어 데이터를 생성하며,
    상기 웹 실시간 통신기는 상기 시그널링의 결과 상기 웹 브라우저가 상기 제 1 미디어 압축 표준을 지원할 때, 상기 스트리밍 서버에 상기 패킷화된 미디어 데이터를 요청하는 소스 장치.
  18. 제 16 항에 있어서,
    상기 미디어 인코더는 제 1 미디어 압축 표준에 기반하여 상기 인코딩된 미디어 데이터를 생성하며,
    상기 웹 실시간 통신기는 상기 시그널링의 결과 상기 웹 브라우저가 상기 제 1 미디어 압축 표준과 상이한 제 2 미디어 압축 표준을 지원할 때 상기 미디어 소스를 수신하여 상기 웹 실시간 통신을 수행하도록 구성되는 소스 장치.
  19. 제 18 항에 있어서,
    상기 웹 실시간 통신기는,
    상기 수신된 미디어 소스를 상기 제 2 미디어 압축 표준에 기반하여 인코딩하고,
    상기 제 2 미디어 압축 표준에 기반하여 인코딩된 미디어 소스를 이용하여 상기 웹 실시간 통신을 수행하도록 구성되는 소스 장치.
  20. 제 16 항에 있어서,
    상기 웹 실시간 통신기는,
    상기 패킷화된 미디어 데이터의 페이로드로부터 상기 인코딩된 미디어 데이터를 추출하고,
    상기 인코딩된 미디어 데이터를 상기 웹 브라우저에 전송하여 상기 웹 실시간 통신을 수행하도록 구성되는 소스 장치.
  21. 외부의 웹 브라우저와 웹 실시간 통신을 수행하는 소스 장치에 있어서:
    미디어 소스를 처리하여 인코딩된 미디어 데이터를 생성하도록 구성되는 미디어 인코더; 및
    적어도 하나의 프로세서를 포함하되,
    상기 적어도 하나의 프로세서는,
    상기 웹 브라우저와 시그널링을 수행하고;
    상기 시그널링의 결과에 따라, 상기 인코딩된 미디어 데이터를 소정의 실시간 네트워크 프로토콜에 기반하여 패킷화하고;
    상기 패킷화된 미디어 데이터를 디패킷화하여 상기 웹 실시간 통신을 위한 상기 인코딩된 미디어 데이터를 획득하도록 구성되는 소스 장치.
KR1020170134168A 2017-05-02 2017-10-16 실시간 통신을 수행하는 장치, 시스템, 및 방법 KR102064284B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762500390P 2017-05-02 2017-05-02
US62/500,390 2017-05-02
US15/685,538 2017-08-24
US15/685,538 US10644928B2 (en) 2017-05-02 2017-08-24 Device, system, and method to perform real-time communication

Publications (2)

Publication Number Publication Date
KR20180122267A true KR20180122267A (ko) 2018-11-12
KR102064284B1 KR102064284B1 (ko) 2020-01-09

Family

ID=60051352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170134168A KR102064284B1 (ko) 2017-05-02 2017-10-16 실시간 통신을 수행하는 장치, 시스템, 및 방법

Country Status (4)

Country Link
US (1) US10644928B2 (ko)
EP (1) EP3399713B1 (ko)
KR (1) KR102064284B1 (ko)
CN (1) CN108809924B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6749281B2 (ja) * 2017-03-23 2020-09-02 エヌ・ティ・ティ・コミュニケーションズ株式会社 IoTデバイス、シグナリングサーバ、メッセージバス管理サーバ、コネクション形成方法、及びプログラム
CN113727113B (zh) * 2020-05-26 2024-06-21 网易(杭州)网络有限公司 视频解码方法、推流方法及系统
CN112073423A (zh) * 2020-09-15 2020-12-11 杭州二更网络科技有限公司 基于WebRTC进行浏览器推流的方法及系统
EP4352951A1 (en) * 2021-05-21 2024-04-17 Technologies Crewdle Inc. Peer-to-peer conferencing system and method

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676590B2 (en) 2004-05-03 2010-03-09 Microsoft Corporation Background transcoding
CN101056231A (zh) * 2006-05-18 2007-10-17 华为技术有限公司 基于流媒体的公众视讯系统及实现方法
CN101212452B (zh) * 2006-12-31 2012-06-06 中兴通讯股份有限公司 一种基于实时传输协议的多媒体数据传输控制方法
CN101257419B (zh) * 2007-02-27 2010-12-29 中国移动通信集团公司 无线voip语音帧组合方法及无线装置
US8923325B2 (en) 2009-10-06 2014-12-30 Adobe Systems Incorporated Client-server architecture for audio-video communications
WO2013127459A1 (en) * 2012-03-01 2013-09-06 Telefonaktiebolaget L M Ericsson (Publ) Mixer for providing media streams towards a plurality of endpoints whereby the media streams originating from one or more media source and method therefore
WO2015174894A1 (en) * 2014-05-13 2015-11-19 Telefonaktiebolaget L M Ericsson (Publ) Methods, source device, target device and analyser for managing video coding
US20150350288A1 (en) 2014-05-28 2015-12-03 Qualcomm Incorporated Media agnostic display for wi-fi display
US20160119399A1 (en) 2014-10-24 2016-04-28 Kevin J. Glass Extending browser support of real time media to any available codec
KR20160116493A (ko) 2015-03-30 2016-10-10 주식회사 넷시즌 WebRTC 기반의 다중접속 CCTV 시스템
US10110930B2 (en) * 2015-07-02 2018-10-23 Dialogic Corporation Robust packet loss handling in recording real-time video
US10911413B2 (en) 2015-09-16 2021-02-02 Oracle International Corporation Encapsulating and tunneling WebRTC traffic
EP3353964A4 (en) * 2015-09-25 2019-05-01 Telefonaktiebolaget LM Ericsson (publ) PROCEDURE AND COOPERATION OF NETWORK NODES TO ENABLE THE ADJUSTMENT OF BITRATES IN MEDIA STREAMING

Also Published As

Publication number Publication date
KR102064284B1 (ko) 2020-01-09
EP3399713B1 (en) 2020-07-08
US10644928B2 (en) 2020-05-05
CN108809924A (zh) 2018-11-13
EP3399713A1 (en) 2018-11-07
US20180324024A1 (en) 2018-11-08
CN108809924B (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN109981607B (zh) 媒体流处理方法及装置、电子设备和存储介质
KR102157634B1 (ko) 영상 획득 방법 및 로컬 엔드포인트 호스트 장치
KR101917174B1 (ko) 전자 장치 사이의 스트림 전송 방법 및 그 방법을 처리하는 전자 장치
KR102064284B1 (ko) 실시간 통신을 수행하는 장치, 시스템, 및 방법
US6278478B1 (en) End-to-end network encoding architecture
WO2011004886A1 (ja) 配信システムと方法とゲートウェイ装置とプログラム
CN113766317A (zh) 视频传输方法、装置、电子设备和存储介质
WO2017092338A1 (zh) 一种数据传输的方法和装置
JP6179179B2 (ja) 情報処理装置、情報処理方法およびプログラム
EP3059945A1 (en) Method and system for video surveillance content adaptation, and central server and device
WO2015176648A1 (zh) 将智能终端上的数据传输至电视终端的方法、装置
US20120017249A1 (en) Delivery system, delivery method, conversion apparatus, and program
KR101701742B1 (ko) 이동통신 단말기 간 실시간 스트리밍을 위한 장치 및 방법
US8456532B1 (en) Internet protocol camera transcode avoidance
CN110798651A (zh) 视频会议方法、装置、设备及存储介质
WO2014017455A1 (ja) 通信システムと方法とプログラム
US9241132B2 (en) Reception apparatus, reception method, and program thereof, image capturing apparatus, image capturing method, and program thereof, and transmission apparatus, transmission method, and program thereof
JP2013012833A (ja) 送信装置及び送信装置の制御方法
US9118803B2 (en) Video conferencing system
US20220321420A1 (en) System and method for sharing media resources for network based communication
US11265357B2 (en) AV1 codec for real-time video communication
WO2012103670A1 (zh) 一种基于云服务提供和处理多媒体数据的方法、装置及系统
CN113573004A (zh) 视频会议处理方法、装置、计算机设备及存储介质
CN112584134A (zh) 视频会议码流的测试方法、装置、计算机设备和存储介质
JP2006345095A (ja) 撮像装置および情報処理方法

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant