KR101832167B1 - Cloud streaming web server and client terminal using web protocol - Google Patents

Cloud streaming web server and client terminal using web protocol Download PDF

Info

Publication number
KR101832167B1
KR101832167B1 KR1020160103661A KR20160103661A KR101832167B1 KR 101832167 B1 KR101832167 B1 KR 101832167B1 KR 1020160103661 A KR1020160103661 A KR 1020160103661A KR 20160103661 A KR20160103661 A KR 20160103661A KR 101832167 B1 KR101832167 B1 KR 101832167B1
Authority
KR
South Korea
Prior art keywords
web
web server
client terminal
processor
client
Prior art date
Application number
KR1020160103661A
Other languages
Korean (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 김일수
Priority to KR1020160103661A priority Critical patent/KR101832167B1/en
Application granted granted Critical
Publication of KR101832167B1 publication Critical patent/KR101832167B1/en

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/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • H04L65/605
    • 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/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
    • 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)
  • Information Transfer Between Computers (AREA)

Abstract

Disclosed are a cloud streaming web server and a client terminal using a web protocol. According to an embodiment, the cloud streaming web server and the client terminal communicate by using a web protocol. The cloud streaming web server supports a standard web service and a web socket. The client terminal receives a streaming service through a web browser or a hybrid application installed in the client terminal. Therefore, the cloud streaming web server can increase performance of the client terminal.

Description

웹 프로토콜을 사용하는 클라우드 스트리밍 웹 서버 및 클라이언트 단말 {Cloud streaming web server and client terminal using web protocol}Cloud streaming web server and client terminal using web protocol [

본 발명은 클라우드 스트리밍 서비스 기술에 관한 것이다.The present invention relates to cloud streaming service technology.

이동통신망의 발달과 단말기 사양의 발전에 따라 단순한 통신장치 또는 정보 제공 장치의 범주를 벗어나 이동통신단말기와 같은 클라이언트 단말은 현대인의 필수 소지품이 되었고, 토탈 엔터테인먼트 기기로 진화해 가고 있는 추세다. 최근에는 성능이 낮은 클라이언트 단말이 대용량의 영상 등을 처리하는데 무리가 있으므로 원격지에 있는 클라우드 서버(Cloud Server)를 통해 해당 데이터를 처리하도록 하고, 그 처리된 결과 화면만을 클라이언트 단말에서 수신하여 디스플레이하는 클라우딩 컴퓨팅(Cloud Computing) 기술이 사용되고 있다.With the development of the mobile communication network and the development of the terminal specification, the client terminal such as the mobile communication terminal has become a necessity of the modern person and has evolved into the total entertainment device beyond the category of the simple communication device or the information providing device. In recent years, since a client terminal having a low performance is difficult to process a large-capacity image, it is necessary to process the corresponding data through a cloud server at a remote location, and to receive and display only the processed result screen on the client terminal, Cloud Computing technology is being used.

클라우드 컴퓨팅 환경에서는 개별 기술에 대한 전문성이 없이도 서비스를 이용하는 형태로 IT(Information Technology) 환경을 구축하고 이용할 수 있다. 클라우드 스트리밍 기술은 클라우드 컴퓨팅 기술에 데이터를 스트리밍 전송하는 방식이 적용된 것이다. 클라우드 스트리밍 기술은 네트워크 상태에 적응하는 스트리밍(adaptive streaming) 방식과 지연시간(latency)을 줄이는 입력 방식으로 인해 반드시 별도의 모바일 앱이나 동영상 플레이어와 같은 프로그램 등을 클라이언트 단말에 설치해야 하는 문제가 있다.In the cloud computing environment, information technology (IT) environment can be constructed and utilized in the form of using services without expertise in individual technologies. Cloud streaming technology is based on streaming data to cloud computing technology. The cloud streaming technology has a problem that a separate mobile application or a program such as a video player must be installed in the client terminal due to an adaptive streaming method adapted to the network state and an input method of reducing latency.

일 실시 예에 따라, 클라우드 스트리밍 전송 시에, 클라이언트 단말의 성능을 높이고 클라우드 스트리밍 서비스의 품질을 높이기 위해 웹 프로토콜을 사용하는 클라우드 스트리밍 웹 서버 및 클라이언트 단말을 제안한다.According to an exemplary embodiment, a cloud streaming web server and a client terminal using a web protocol are proposed to increase the performance of a client terminal and improve the quality of a cloud streaming service at the time of transmitting the cloud streaming.

일 실시 예에 따른 클라우드 스트리밍 웹 서버는 프로세서와, 프로세서를 통해 실행되는 명령을 포함한 데이터가 저장되는 메모리를 포함하며, 프로세서는 클라이언트 단말의 웹 클라이언트로부터 서버 접속을 위한 HTTP 요청을 수신하여 HTML 디폴트 파일을 포함한 HTTP 응답을 웹 클라이언트에 전송하는 HTTP 처리부와, 웹 클라이언트의 HTML 디폴트 파일의 요청에 따라 자바스크립트 파일을 전송하고, 웹 클라이언트에서 자바스크립트 파일을 실행하면 실행된 자바스크립트 파일로부터 웹 소켓을 통한 접속 요청을 수신하여 소프트웨어 실행 결과를 웹 소켓을 통해 웹 클라이언트에 스트리밍 전송하는 전송 처리부와, 실행된 자바스크립트 파일로부터 웹 소켓을 통해 사용자 입력을 수신하는 사용자 입력 수신 처리부와, 소프트웨어를 실행하고 소프트웨어 실행 결과를 전송 처리부에 전달하며 사용자 입력 수신 처리부로부터 사용자 입력을 전달받아 이를 실행 소프트웨어에 반영하는 소프트웨어 실행 처리부를 포함한다. 웹 클라이언트는 웹 브라우저 또는 하이브리드 앱일 수 있다.A cloud streaming web server according to an exemplary embodiment includes a processor and a memory in which data including instructions executed through a processor are stored. The processor receives an HTTP request for accessing a server from a client terminal's web client, And an HTTP processing unit for transmitting an HTTP response including the HTTP request to the web client. When a JavaScript file is transmitted according to a request of the HTML default file of the web client and a JavaScript file is executed by the web client, A transmission processing unit for receiving the connection request and streaming the software execution result to the web client through the web socket; a user input reception processing unit for receiving the user input through the web socket from the executed JavaScript file; And a software execution processing unit for transferring the execution result to the transmission processing unit and receiving the user input from the user input reception processing unit and reflecting it to the execution software. The web client may be a web browser or a hybrid application.

클라우드 스트리밍 웹 서버는, 클라이언트 단말로부터 디코딩 성능 정보를 수신하고 수신된 디코딩 성능 정보를 반영하여 서비스 품질을 조절하는 방식과, 클라이언트 단말에 서비스를 제공할 네트워크의 상태를 반영하여 서비스 품질을 조절하는 방식 중 적어도 하나를 통해 서비스 품질을 조절하는 서비스 품질 조절부를 더 포함할 수 있다.The cloud streaming web server includes a method of receiving decoding performance information from the client terminal and adjusting the service quality by reflecting the received decoding performance information and a method of adjusting the service quality by reflecting the state of the network to provide the client terminal with the service And a service quality control unit for controlling the quality of service through at least one of the service quality control unit and the service quality control unit.

이때, 프로세서는 실행 화면 및 오디오를 인코딩하는 인코딩부와, 인코딩된 실행 화면 및 오디오를 패킷 처리하는 패킷 처리부와, 패킷화된 실행 화면 및 오디오를 다중화하는 다중화부를 더 포함하며, 인코딩부는 클라이언트 단말과 통신하는 웹 소켓이 다수 개이면 실행 화면 및 오디오를 분리하여 각각 인코딩할 수 있다.The processor may further include an encoding unit for encoding an execution picture and audio, a packet processing unit for packet processing the encoded execution picture and audio, and a multiplexing unit for multiplexing the packetized execution picture and audio, If there are a number of web sockets to communicate, the execution screen and audio can be separately encoded.

다른 실시 예에 따른 클라이언트 단말은, 웹 클라이언트와, 웹 클라이언트를 실행하는 프로세서와, 프로세서를 통해 실행되는 명령을 포함한 데이터가 저장되는 메모리를 포함하며, 프로세서는 웹 클라이언트를 실행하고 클라우드 스트리밍 웹 서버에 웹 접속을 위한 HTTP 요청을 전송하여 클라우드 스트리밍 웹 서버로부터 HTML 디폴트 파일을 포함한 HTTP 응답을 수신하는 웹 클라이언트 실행부와, HTML 디폴트 파일에 의해 클라우드 스트리밍 웹 서버에 자바스크립트 파일을 요청하여 수신하고 수신한 자바스크립트 파일을 웹 클라이언트에서 실행하는 자바스크립트 실행부와, 실행된 자바스크립트 파일에 의해 웹 소켓을 이용하여 클라우드 스트리밍 웹 서버에 접속하여 소프트웨어 실행 결과를 스트리밍 수신하는 수신 처리부와, 실행된 자바스크립트 파일에 의해 사용자 입력을 클라우드 스트리밍 웹 서버에 전송하는 사용자 입력 전송 처리부를 포함한다.A client terminal according to another embodiment includes a web client, a processor that executes a web client, and a memory that stores data including instructions executed by the processor. The processor executes a web client and executes the web client to the cloud streaming web server A web client executing unit for receiving an HTTP response including an HTML default file from a cloud streaming web server by transmitting an HTTP request for accessing the web, and requesting a JavaScript file to the cloud streaming web server through an HTML default file, A reception processing unit for accessing a cloud streaming web server using a web socket by using the executed JavaScript file and streaming the result of the execution of the software by executing the JavaScript script in the web client; A user input in accordance with a user input and a transmission processing unit for transmitting to the cloud streaming web server.

이때, 프로세서는 클라우드 스트리밍 웹 서버로부터 수신된 화면 및 오디오를 디코딩하는 디코딩부와, 디코딩된 화면 및 오디오를 렌더링하는 렌더링부와, 렌더링된 화면 및 오디오를 역 다중화하는 역 다중화부와, 웹 소켓 처리를 위한 쓰레드 기능을 제공하는 웹 워커를 더 포함하며, 클라우드 스트리밍 웹 서버와 통신하는 웹 소켓이 다수 개이면, 디코딩부는 화면 및 오디오를 분리하여 각각 디코딩하고 렌더링부는 화면 및 오디오를 분리하여 각각 렌더링할 수 있다.At this time, the processor includes a decoding unit decoding the screen and audio received from the cloud streaming web server, a rendering unit rendering the decoded screen and audio, a demultiplexing unit demultiplexing the rendered screen and audio, If the number of web sockets communicating with the cloud streaming web server is large, the decoding unit decodes the screen and audio separately, and the rendering unit separates the screen and audio separately and renders them separately. .

일 실시 예에 따르면, 웹 프로토콜에 기반한 클라우드 스트리밍 기술을 통해 웹 브라우저 또는 하이브리드 앱이 기본 제공되거나 설치된 클라이언트 단말에서 클라우드 스트리밍 서비스를 이용함에 따라 클라이언트 단말에 별도의 모바일 앱이나 프로그램 등을 설치하지 않아도 된다.According to one embodiment, since a cloud streaming service is used in a client terminal in which a web browser or a hybrid application is provided or installed through a cloud streaming technology based on a web protocol, a separate mobile app or program is not installed in the client terminal .

또한, 단일의 웹 소켓을 이용하여 클라우드 스트리밍 웹 서버와 클라이언트 단말 간에 통신하면 클라이언트 단말의 성능을 향상시킬 수 있고, 다수 개의 웹 소켓을 이용하여 통신하는 경우에는 웹 브라우저 또는 하이브리드 앱이 실행하는 자바스크립트 구조를 단순화시킬 수 있다.In addition, when communication is performed between the cloud streaming web server and the client terminal using a single web socket, the performance of the client terminal can be improved. In the case of communication using a plurality of web sockets, The structure can be simplified.

나아가, 웹 브라우저 또는 하이브리드 앱이 사용하는 자바스크립트 구조를 워커로 사용함에 따라, 멀티 쓰레드를 사용하는 것과 같은 결과를 얻기 때문에 클라이언트 단말의 성능을 높이고, 클라이언트 단말이 전반적으로 더 매끄럽게 동작하게 할 수 있다.Furthermore, by using the JavaScript structure used by the web browser or the hybrid application as a worker, the same result as using the multi-thread can be obtained, thereby improving the performance of the client terminal and making the client terminal generally smoother .

도 1은 본 발명의 실시 예에 따른 클라우드 스트리밍 서비스 시스템의 구성도,
도 2는 본 발명의 일 실시 예에 따른 클라우드 스트리밍 웹 서버의 구성도,
도 3은 본 발명의 일 실시 예에 따른 도 2의 서버 프로세서의 세부 구성도,
도 4는 본 발명의 일 실시 예에 따른 클라이언트 단말의 구성도,
도 5는 본 발명의 일 실시 예에 따른 도 4의 단말 프로세서의 세부 구성도,
도 6은 본 발명의 일 실시 예에 따른 클라우드 스트리밍 웹 서버와 클라이언트 단말 간의 표준 웹 프로토콜 기반의 메시지 송수신 프로세스를 도시한 흐름도,
도 7은 본 발명의 일 실시 예에 따른 웹 소켓을 1개 사용하는 방식에서의 클라우드 스트리밍 웹 서버와 클라이언트 단말 간의 통신 프로세스를 도시한 흐름도,
도 8은 본 발명의 일 실시 예에 따른 웹 소켓을 다수 개 사용하는 방식에서의 클라우드 스트리밍 웹 서버와 클라이언트 단말 간의 통신 프로세스를 도시한 흐름도,
도 9는 본 발명의 일 실시 예에 따른 클라이언트 단말의 성능을 높이기 위해 워커 자바스크립트를 이용한 웹 소켓 처리 프로세스를 도시한 흐름도이다.
1 is a configuration diagram of a cloud streaming service system according to an embodiment of the present invention;
2 is a configuration diagram of a cloud streaming web server according to an embodiment of the present invention;
FIG. 3 is a detailed configuration diagram of the server processor of FIG. 2 according to an embodiment of the present invention;
4 is a configuration diagram of a client terminal according to an embodiment of the present invention;
FIG. 5 is a detailed configuration diagram of the terminal processor of FIG. 4 according to an embodiment of the present invention;
FIG. 6 is a flowchart illustrating a standard Web protocol message transmission / reception process between a cloud streaming web server and a client terminal according to an exemplary embodiment of the present invention;
FIG. 7 is a flowchart illustrating a communication process between a cloud streaming web server and a client terminal in a method using one web socket according to an embodiment of the present invention; FIG.
FIG. 8 is a flowchart illustrating a communication process between a cloud streaming web server and a client terminal in a method using a plurality of web sockets according to an exemplary embodiment of the present invention;
FIG. 9 is a flowchart illustrating a web socket processing process using Walker JavaScript to increase the performance of a client terminal according to an exemplary embodiment of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention, and the manner of achieving them, will be apparent from and elucidated with reference to the embodiments described hereinafter in conjunction with the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Is provided to fully convey the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout the specification.

본 발명의 실시 예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이며, 후술되는 용어들은 본 발명의 실시 예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS In the following description of the present invention, detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. , Which may vary depending on the intention or custom of the user, the operator, and the like. Therefore, the definition should be based on the contents throughout this specification.

첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램인스트럭션들(실행 엔진)에 의해 수행될 수도 있으며, 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다.Each block of the accompanying block diagrams and combinations of steps of the flowcharts may be performed by computer program instructions (execution engines), which may be stored in a general-purpose computer, special purpose computer, or other processor of a programmable data processing apparatus The instructions that are executed through the processor of the computer or other programmable data processing equipment will generate means for performing the functions described in each block or flowchart of the block diagram.

이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.These computer program instructions may also be stored in a computer usable or computer readable memory capable of directing a computer or other programmable data processing apparatus to implement the functionality in a particular manner so that the computer usable or computer readable memory It is also possible for the instructions stored in the block diagram to produce an article of manufacture containing instruction means for performing the functions described in each block or flowchart of the flowchart.

그리고 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명되는 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.And computer program instructions may be loaded onto a computer or other programmable data processing equipment so that a series of operating steps may be performed on a computer or other programmable data processing equipment to create a computer- It is also possible that the instructions that perform the data processing equipment provide the steps for executing the functions described in each block of the block diagram and at each step of the flowchart.

또한, 각 블록 또는 각 단계는 특정된 논리적 기능들을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있으며, 몇 가지 대체 실시 예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하며, 또한 그 블록들 또는 단계들이 필요에 따라 해당하는 기능의 역순으로 수행되는 것도 가능하다.Also, each block or step may represent a portion of a module, segment, or code that includes one or more executable instructions for executing the specified logical functions, and in some alternative embodiments, It should be noted that functions may occur out of order. For example, two successive blocks or steps may actually be performed substantially concurrently, and it is also possible that the blocks or steps are performed in the reverse order of the function as needed.

이하, 첨부 도면을 참조하여 본 발명의 실시 예를 상세하게 설명한다. 그러나 다음에 예시하는 본 발명의 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시 예에 한정되는 것은 아니다. 본 발명의 실시 예는 이 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공된다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the following embodiments of the present invention may be modified into various other forms, and the scope of the present invention is not limited to the embodiments described below. The embodiments of the present invention are provided to enable those skilled in the art to more fully understand the present invention.

도 1은 본 발명의 실시 예에 따른 클라우드 스트리밍 서비스 시스템의 구성도이다.1 is a configuration diagram of a cloud streaming service system according to an embodiment of the present invention.

도 1을 참조하면, 일 실시 예에 따른 클라우드 스트리밍 서비스 시스템은 네트워크(1), 클라우드 스트리밍 웹 서버(이하, '웹 서버'라 칭함)(2) 및 클라이언트 단말(3)을 포함한다.Referring to FIG. 1, a cloud streaming service system according to an embodiment includes a network 1, a cloud streaming web server 2, and a client terminal 3.

웹 서버(2)는 클라이언트 단말(3)에 클라우드 스트리밍 서비스를 제공한다. 클라우드 스트리밍 서비스는 소프트웨어를 웹 서버(2)에서 실행하고, 실행 결과를 클라이언트 단말(3)에 전송하는 것을 의미한다. 이때, 클라이언트 단말(3)이 사용자 입력을 다시 웹 서버(2)에 전송하여 웹 서버(2)의 소프트웨어에 반영하는 과정을 포함한다. 소프트웨어는 예를 들어, 애플리케이션일 수 있는데, 동영상 플레이어와 같은 멀티미디어 재생 플레이어처럼 웹 서버(2)에서 실행 가능한 프로그램이면 어느 것이든 가능하다.The web server 2 provides the client terminal 3 with a cloud streaming service. The cloud streaming service means that the software is executed in the web server 2 and the execution result is transmitted to the client terminal 3. At this time, the client terminal 3 transmits the user input again to the web server 2 and reflects it to the software of the web server 2. The software can be, for example, an application, and can be any program executable on the web server 2, such as a multimedia player, such as a video player.

웹 서버(2)는 네트워크(1)를 통해 클라이언트 단말(3)과 연결되어 클라우드 스트리밍 기반의 소프트웨어 실행을 위한 모든 데이터를 송수신한다. 웹 서버(2)는 클라이언트 단말(3)로부터 클라우드 스트리밍 기반의 소프트웨어 실행을 요청받는다. 그리고 클라이언트 단말(10)의 요청에 따라 해당하는 소프트웨어를 실행하며, 소프트웨어 실행 결과를 클라이언트 단말(3)에 전송한다. 실행 결과는 출력 화면을 캡쳐한 이미지일 수 있고, 오디오를 포함할 수도 있다.The web server 2 is connected to the client terminal 3 through the network 1 and transmits / receives all data for executing the software based on the cloud streaming. The web server 2 is requested to execute the software based on the cloud streaming from the client terminal 3. [ In response to a request from the client terminal (10), the corresponding software is executed, and the software execution result is transmitted to the client terminal (3). The execution result may be an image that captures the output screen, and may include audio.

클라우드 스트리밍을 위한 웹 서버(2)는 표준 웹 서비스를 지원한다. 웹 서비스는 예를 들어, 애플리케이션의 작성 시 HTTP, XML, SOAP와 같은 표준화된 표준 웹 프로토콜과 데이터 형식을 사용함으로써 운영 체계(OS) 등 특정 플랫폼과 상관없이 모든 컴퓨터 간 원활한 데이터의 흐름을 보장해 준다. 웹 서버(2)는 표준 웹 프로토콜을 지원한다. 표준 웹 프로토콜은 예를 들어 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol: HTTP, 이하 HTTP라 칭함), 웹 소켓(web socket) 등일 수 있다.The web server 2 for cloud streaming supports standard web services. Web services, for example, use standardized standard Web protocols and data formats such as HTTP, XML, and SOAP when creating applications, ensuring smooth data flow between all computers, regardless of the operating system (OS) . The Web server 2 supports a standard Web protocol. The standard web protocol may be, for example, a hypertext transfer protocol (HTTP), a web socket, or the like.

웹 서버(2)는 소프트웨어를 실행하고, 실행 결과를 클라이언트 단말(3)에 전송한다. 이를 위해, 실행 소프트웨어로부터 출력을 캡쳐할 수 있다. 웹 서버(2)는 웹 소켓을 통해 실행 결과를 스트리밍 전송할 수 있다. 또한, 웹 소켓을 통해 클라이언트 단말(3)로부터 사용자 입력을 수신할 수 있다. 이 경우, 사용자 입력을 실행 소프트웨어에 반영할 수 있다.The Web server 2 executes the software and transmits the execution result to the client terminal 3. To do this, you can capture the output from the execution software. The web server 2 can stream the execution result through the web socket. It is also possible to receive user input from the client terminal 3 via the web socket. In this case, the user input can be reflected in the execution software.

클라이언트 단말(3)은 네트워크(1)를 통해 웹 서버(2)와 연결되어 클라우드 스트리밍 기반의 소프트웨어 실행을 위한 데이터를 송수신한다. 클라이언트 단말(3)은 웹 서버(2)로 클라우드 스트리밍 기반의 소프트웨어에 대한 실행을 요청하여 그 실행 결과를 수신한다. 그리고 수신된 실행 결과를 출력할 수 있다.The client terminal 3 is connected to the web server 2 via the network 1 and transmits and receives data for executing software based on the cloud streaming. The client terminal 3 requests the web server 2 to execute the software based on the cloud streaming, and receives the execution result. Then, the received execution result can be output.

클라이언트 단말(3)은 웹 클라이언트가 설치 또는 다운로드 가능한 모든 사용자 단말을 포함한다. 웹 클라이언트는 웹 브라우저이거나 하이브리드 앱(hybrid app)일 수 있다. 하이브리드 앱은 인터넷 브라우저에서 실행되는 앱이다. 이하, 설명의 편의를 위해 웹 클라이언트를 웹 브라우저로 한정하여 설명하나, 이에 한정되는 것은 아니다. 클라이언트 단말(3)은 정보통신기기, 멀티미디어 단말기, 유선 단말기, 고정형 단말기 및 IP(Internet Protocol) 단말기 등의 다양한 단말기일 수 있다. 클라이언트 단말(3)은 휴대폰, PMP(Portable Multimedia Player), MID(Mobile Internet Device), 스마트폰(Smart Phone), 데스크톱(Desktop), 태블릿컴퓨터(Tablet PC), 노트북(Note book), 넷북(Net book) 및 정보통신 기기 등과 같은 다양한 이동통신 사양을 갖는 모바일(Mobile) 단말기일 수 있다.The client terminal 3 includes all the user terminals that the web client can install or download. The web client may be a web browser or a hybrid app. A hybrid app is an app that runs in an Internet browser. Hereinafter, for convenience of explanation, the web client is limited to a web browser, but the present invention is not limited thereto. The client terminal 3 may be various terminals such as an information communication device, a multimedia terminal, a wire terminal, a fixed terminal and an IP (Internet Protocol) terminal. The client terminal 3 may be a mobile terminal, a portable multimedia player (PMP), a mobile Internet device (MID), a smart phone, a desktop, a tablet PC, a notebook, book, and information communication devices, which have various mobile communication specifications.

네트워크(1)는 웹 서버(2) 및 클라이언트 단말(3) 간의 데이터 전송 및 정보 교환을 위한 송수신 동작을 수행한다. 네트워크(1)는 다양한 형태의 통신망이 이용될 수 있는데, 예를 들어, WLAN(Wireless LAN), 와이파이(Wi-Fi), 와이브로(Wibro), 와이맥스(Wimax), HSDPA(High Speed Downlink Packet Access) 등의 무선 통신방식 또는 이더넷(Ethernet), xDSL(ADSL, VDSL), HFC(Hybrid Fiber Coax), FTTC(Fiber to The Curb), FTTH(Fiber To The Home) 등의 유선 통신방식이 이용될 수 있다. 한편, 네트워크(1)는 전술한 통신방식에 한정되는 것은 아니며, 전술한 통신 방식 이외에도 기타 널리 공지되었거나 향후 개발될 모든 형태의 통신 방식을 포함할 수 있다.The network 1 performs a transmission / reception operation for data transmission and information exchange between the web server 2 and the client terminal 3. The network 1 may use various types of communication networks such as a wireless LAN (WLAN), a Wi-Fi, a Wibro, a Wimax, a High Speed Downlink Packet Access (HSDPA) Or a wired communication method such as Ethernet, xDSL (ADSL, VDSL), HFC (Hybrid Fiber Coax), FTTC (Fiber to the Curb) and FTTH (Fiber To The Home) . Meanwhile, the network 1 is not limited to the communication method described above, and may include any other known or later-developed communication methods in addition to the communication methods described above.

도 2는 본 발명의 일 실시 예에 따른 웹 서버의 구성도이다.2 is a configuration diagram of a web server according to an embodiment of the present invention.

도 2를 참조하면, 웹 서버(2)는 서버 프로세서(20)와 서버 메모리(22)를 포함한다.Referring to FIG. 2, the web server 2 includes a server processor 20 and a server memory 22.

서버 프로세서(20)는 프로그램 명령을 처리한다. 서버 메모리(22)에는 서버 프로세서(20)를 통해 실행되는 명령을 포함한 데이터가 저장된다. 특히, 서버 메모리(22)에는 웹 서버(2)를 통해 실행된 소프트웨어(220)와 소프트웨어 실행 결과가 저장될 수 있다.The server processor 20 processes program instructions. In the server memory 22, data including a command to be executed through the server processor 20 is stored. Particularly, the software 220 executed through the web server 2 and the software execution result can be stored in the server memory 22.

도 3은 본 발명의 일 실시 예에 따른 도 2의 서버 프로세서의 세부 구성도이다.3 is a detailed configuration diagram of the server processor of FIG. 2 according to an embodiment of the present invention.

도 1 내지 도 3을 참조하면, 서버 프로세서(20)는 HTTP 처리부(200), 전송 처리부(201), 사용자 입력 수신 처리부(202), 소프트웨어 실행 처리부(203), 인코딩부(205), 패킷 처리부(206), 다중화부(207) 및 서비스 품질 조절부(208)를 포함한다.1 to 3, the server processor 20 includes an HTTP processing unit 200, a transmission processing unit 201, a user input reception processing unit 202, a software execution processing unit 203, an encoding unit 205, A multiplexer 206, a multiplexer 207, and a quality of service adjuster 208.

HTTP 처리부(200)는 클라이언트 단말(3)의 웹 브라우저로부터 서버 접속을 위한 HTTP 요청을 수신하고, HTTP 요청에 따라 HTML 디폴트 파일을 포함한 HTTP 응답을 클라이언트 단말(3)에 전송한다. HTML 디폴트 파일은 예를 들어, index.html 파일이다.The HTTP processing unit 200 receives an HTTP request for connection to the server from the web browser of the client terminal 3 and transmits an HTTP response including the HTML default file to the client terminal 3 in accordance with the HTTP request. The HTML default file is, for example, the index.html file.

전송 처리부(201)는 웹 브라우저의 HTML 디폴트 파일에 자바스크립트 파일을 전송하고, 웹 브라우저가 자바스크립트 파일을 실행하면 실행된 자바스크립트 파일로부터 웹 소켓을 통한 접속 요청을 수신한다. 그러면, 웹 서버(2)에 실행된 소프트웨어 실행 결과를 웹 소켓을 통해 웹 브라우저의 자바스크립트 파일에 스트리밍 전송한다. 자바스크립트 파일은 예를 들어, cloud streaming client.js 이다.The transmission processing unit 201 transmits the JavaScript file to the HTML default file of the web browser, and when the web browser executes the JavaScript file, the transmission processing unit 201 receives the connection request through the web socket from the executed JavaScript file. Then, the execution result of the software executed in the web server 2 is streamed to the JavaScript file of the web browser through the web socket. The JavaScript file is, for example, cloud streaming client.js.

사용자 입력 수신 처리부(202)는 웹 브라우저에서 실행된 자바스크립트 파일로부터 웹 소켓을 통해 사용자 입력을 수신한다. 소프트웨어 실행 처리부(203)는 소프트웨어를 실행하고, 소프트웨어 실행 결과를 전송 처리부(201)에 전송하며 사용자 입력 수신 처리부(202)로부터 사용자 입력을 전달받아 이를 실행 소프트웨어에 반영한다.The user input reception processing unit 202 receives a user input through a web socket from a JavaScript file executed in the web browser. The software execution processing unit 203 executes the software, transfers the software execution result to the transfer processing unit 201, receives the user input from the user input reception processing unit 202, and reflects the input to the execution software.

인코딩부(205)는 웹 서버(2)에서의 실행 화면 및 오디오를 인코딩한다. 패킷 처리부(206)는 인코딩부(205)에서 인코딩된 실행 화면 및 오디오를 패킷 처리한다. 다중화부(207)는 패킷 처리부(206)에서 패킷화된 실행 화면 및 오디오를 다중화한다. 이때, 인코딩부(205)는 스트리밍 전송을 위해 사용하는 웹 소켓이 다수 개인 경우, 실행 화면 및 오디오를 분리하여 각각 인코딩할 수 있다.The encoding unit 205 encodes the execution screen and audio in the web server 2. The packet processing unit 206 packetizes the execution picture and audio encoded by the encoding unit 205. [ The multiplexing unit 207 multiplexes the packetized execution image and the audio in the packet processing unit 206. In this case, if there are a plurality of web sockets used for streaming transmission, the encoding unit 205 may encode the execution screen and audio separately.

도 4는 본 발명의 일 실시 예에 따른 클라이언트 단말의 구성도이다.4 is a configuration diagram of a client terminal according to an embodiment of the present invention.

도 1 및 도 4를 참조하면, 클라이언트 단말(3)은 단말 프로세서(30), 단말 메모리(32) 및 웹 클라이언트(34)를 포함한다.1 and 4, the client terminal 3 includes a terminal processor 30, a terminal memory 32, and a web client 34. [

웹 클라이언트(34)는 웹 브라우저 또는 하이브리드 앱일 수 있다. 단말 프로세서(30)는 웹 클라이언트(34)를 실행한다. 단말 메모리(32)는 단말 프로세서(30)를 통해 실행되는 명령을 포함한 데이터가 저장된다. 단말 프로세서(30)는 웹 서버(2)에 의해 제공되는 웹 페이지를 조회 및 디스플레이하기 위해 HTTP 프로토콜을 사용하여 웹 서버(2)와 상호 통신할 수 있다. 또한, 단말 프로세서(30)는 웹 소켓을 통해 웹 서버(2)와 통신한다. 이때, 웹 서버(2)로부터 소프트웨어 실행 결과를 웹 소켓을 통해 스트리밍 수신할 수 있고, 사용자 입력을 웹 소켓을 통해 웹 서버(2)에 전송할 수 있다. 단말 프로세서(30)에 대한 세부 구성은 도 5를 참조로 하여 후술한다.The web client 34 may be a web browser or a hybrid application. The terminal processor 30 executes the web client 34. [ The terminal memory 32 stores data including instructions executed through the terminal processor 30. [ The terminal processor 30 can communicate with the web server 2 using the HTTP protocol to inquire and display the web page provided by the web server 2. [ In addition, the terminal processor 30 communicates with the web server 2 via a web socket. At this time, the software execution result can be streamed from the web server 2 through the web socket, and the user input can be transmitted to the web server 2 via the web socket. The detailed configuration of the terminal processor 30 will be described later with reference to FIG.

단말 메모리(32)에는 코덱 자바스크립트(320), 렌더링 자바스크립트(322), 역 다중화 자바스크립트(324) 및 워커 자바스크립트(326)가 저장된다. 코덱 자바스크립트(320)는 웹 서버(2)로부터 수신된 화면 및 오디오를 디코딩하기 위한 자바스크립트 파일이다. 코덱 자바스크립트(320)는 SW 코덱 자바스크립트일 수 있다.렌더링 자바스크립트(322)는 디코딩된 화면 및 오디오를 렌더링하기 위한 자바스크립트 파일이다. 역 다중화 자바스크립트(324)는 렌더링된 화면 및 오디오를 역 다중화하기 위한 자바스크립트 파일이다. 워커 자바스크립트(326)는 웹 소켓 처리를 위한 쓰레드 기능을 제공하는 자바스크립트 파일이다.In the terminal memory 32, a codec JavaScript 320, a rendering JavaScript 322, a demultiplexing JavaScript 324, and a worker JavaScript 326 are stored. The codec JavaScript 320 is a JavaScript file for decoding the screen and audio received from the Web server 2. The codec JavaScript 320 may be an SW codec JavaScript. The Rendering JavaScript 322 is a JavaScript file for rendering the decoded picture and audio. The demultiplexing JavaScript 324 is a JavaScript file for demultiplexing the rendered screen and audio. The Walker JavaScript 326 is a JavaScript file that provides threading functionality for Web socket processing.

도 5는 본 발명의 일 실시 예에 따른 도 4의 단말 프로세서의 세부 구성도이다.5 is a detailed configuration diagram of the terminal processor of FIG. 4 according to an embodiment of the present invention.

도 5를 참조하면, 단말 프로세서(30)는 웹 클라이언트 실행부(300), 자바스크립트 실행부(301), 수신 처리부(302), 사용자 입력 전송 처리부(303), 디코딩부(305), 렌더링부(306), 역 다중화부(307) 및 웹 워커(308)를 포함한다.5, the terminal processor 30 includes a web client execution unit 300, a JavaScript execution unit 301, a reception processing unit 302, a user input transmission processing unit 303, a decoding unit 305, A demultiplexer 306, a demultiplexer 307, and a web walker 308.

웹 클라이언트 실행부(300)는 웹 브라우저를 실행하고 웹 서버(2)에 웹 접속을 위한 HTTP 요청을 전송하여 웹 서버(2)로부터 HTML 디폴트 파일을 포함한 HTTP 응답을 수신한다. 자바스크립트 실행부(301)는 웹 서버(2)로부터 수신한 HTML 디폴트 파일에 의해 웹 서버(2)에 자바스크립트 파일을 요청하여 수신하고 수신한 자바스크립트 파일을 웹 브라우저에서 실행한다. 수신 처리부(302)는 자바스크립트 실행부(301)에서 실행된 자바스크립트 파일에 의해 웹 소켓을 이용하여 웹 서버(2)에 접속하여 소프트웨어 실행 결과를 스트리밍 수신한다. 사용자 입력 전송 처리부(303)는 실행된 자바스크립트 파일에 의해 사용자 입력을 웹 서버(2)에 전송한다.The web client executing unit 300 executes a web browser and transmits an HTTP request for accessing the web to the web server 2 to receive an HTTP response including an HTML default file from the web server 2. [ The JavaScript execution unit 301 requests a JavaScript file to the Web server 2 based on the HTML default file received from the Web server 2, and executes the received JavaScript file in the web browser. The reception processing unit 302 accesses the Web server 2 using the Web socket by the JavaScript script executed in the JavaScript executing unit 301 and receives the streaming result of the software execution. The user input transmission processing unit 303 transmits the user input to the web server 2 by the executed JavaScript file.

디코딩부(305)는 웹 서버(2)로부터 수신된 화면 및 오디오를 디코딩한다. 디코딩을 위해 SW 코덱을 이용하여 디코딩할 수 있고, 가능한 경우 HW 코덱을 사용하거나 HW 가속을 사용할 수 있다. 그리고 코덱이 화면 코덱과 오디오 코덱으로 분리되면, 화면 및 오디오를 각각 디코딩할 수 있다.The decoding unit 305 decodes the screen and audio received from the web server 2. It can be decoded using SW codecs for decoding, and it can use HW codec or HW acceleration if possible. If the codec is separated into a screen codec and an audio codec, the screen and audio can be respectively decoded.

렌더링부(306)는 디코딩부(305)에서 디코딩된 화면 및 오디오를 렌더링한다. 렌더링을 위해 렌더링 자바스크립트를 이용할 수 있다. 역 다중화부(307)는 렌더링부(306)에서 렌더링된 화면 및 오디오를 역 다중화한다. 역 다중화를 위해 역 다중화 자바스크립트를 이용할 수 있다. 다수 개의 웹 소켓을 이용하여 웹 서버(2)와 클라이언트 단말(3) 간 통신하는 경우, 디코딩부(305)는 화면 디코딩 및 오디오 디코딩을 분리하여 수행하고, 렌더링부(306) 역시 화면 렌더링 및 오디오 렌더링을 분리하여 수행할 수 있다. 웹 워커(308)는 웹 소켓 처리를 위한 쓰레드 기능을 제공한다. 이를 위해 워커 자바스크립트를 이용할 수 있다.The rendering unit 306 renders the decoded picture and audio in the decoding unit 305. Rendering JavaScript is available for rendering. The demultiplexing unit 307 demultiplexes the screen and audio rendered by the rendering unit 306. Demultiplexing JavaScript can be used for demultiplexing. When communication is performed between the web server 2 and the client terminal 3 using a plurality of web sockets, the decoding unit 305 separates the screen decoding and audio decoding, and the rendering unit 306 also performs screen rendering and audio decoding Rendering can be done separately. The web walker 308 provides a thread function for web socket processing. You can use Walker JavaScript to do this.

도 6은 본 발명의 일 실시 예에 따른 웹 서버와 클라이언트 단말 간의 표준 웹 프로토콜 기반의 메시지 송수신 프로세스를 도시한 흐름도이다.6 is a flowchart illustrating a standard Web protocol message transmission / reception process between a web server and a client terminal according to an embodiment of the present invention.

도 6을 참조하면, 클라이언트 단말(3)의 웹 브라우저(610)가 웹 서버(2)에 서버 접속을 위한 HTTP 요청을 전송(630)하고, 웹 서버(2)로부터 HTML 디폴트 파일을 포함한 HTTP 응답을 수신한다(640). HTTP 요청 전송(630) 시에, 클라이언트 단말(3)은 사용자로부터 서버 주소 이름을 입력받아 전송하는데, 서버 주소 이름은 예를 들어, http//name:port/이다. HTML 디폴트 파일은 예를 들어, index.html 파일이다.6, the web browser 610 of the client terminal 3 transmits (630) an HTTP request for accessing the server to the web server 2, and receives an HTTP response including an HTML default file from the web server 2 (640). At the time of HTTP request transmission 630, the client terminal 3 receives and transmits a server address name from a user, and the server address name is, for example, http // name: port /. The HTML default file is, for example, the index.html file.

이어서, 수신한 HTML 디폴트 파일(6100)은 웹 서버(2)에 자바스크립트 파일(6120)을 요청(650)하여 웹 서버(2)로부터 자바스크립트 파일(6120)을 수신한다(660). 자바스크립트 파일(6120)은 예를 들어, cloud streaming client.js 이다. 자바스크립트 파일(6120)을 수신한 웹 브라우저(610)는 자바스크립트 파일(6120)을 실행한다.Subsequently, the received HTML default file 6100 requests a JavaScript file 6120 to the web server 2 and receives a JavaScript file 6120 from the web server 2 (660). The JavaScript file 6120 is, for example, cloud streaming client.js. Having received the JavaScript file 6120, the web browser 610 executes the JavaScript file 6120.

이어서, 웹 브라우저(610)는 자바스크립트 파일(6120)에 의해 웹 소켓(websocket)을 통해 웹 서버(2)에 접속한다(670). 웹 서버(2)는 웹 서버(2)에서 실행된 소프트웨어(220)를 대상으로 접속한 클라이언트 단말(3)의 자바스크립트 파일(6120)에 소프트웨어 실행 결과를 스트리밍 전송한다(680).Subsequently, the web browser 610 accesses the web server 2 through a websocket by the JavaScript file 6120 (670). The web server 2 streams the software execution result to the JavaScript file 6120 of the client terminal 3 connected to the software 220 executed in the web server 2 in operation 680.

이어서, 웹 브라우저(610)에서 실행된 자바스크립트 파일(6120)은 사용자 입력을 웹 소켓을 이용하여 웹 서버(2)의 소프트웨어(220)에 전송한다(690). 사용자 입력은 예를 들어, 마우스(mouse), 키보드(keyboard), 터치(touches), 제스처(gestures)일 수 있다. 사용자가 입력한 터치, 탭, 핀치, 줌, 스크롤, 틸트와 같은 제스처와 마우스, 키보드와 같은 입력 등은 클라이언트 단말(3)에 의해 웹 서버(2)에 전송되고 웹 서버(2)는 소프트웨어(220)에 사용자 입력을 반영한다. 사용자 입력 전송 시에, JSON 포맷을 사용하거나 16진수 값으로 변환하여 구조체에 넣어 웹 서버(2)로 전송할 수 있다. 키보드 입력은 type, state, key_code 구조로 down, up에 대해 웹 서버(2)에 전송한다. 마우스 입력은 type, state, x, y 구조로 down, move, up에 대해 웹 서버(2)로 전송한다. 터치 입력은 type, state, x, y 구조로 start, move, end에 대해 웹 서버(2)에 전송한다.Then, the JavaScript file 6120 executed in the web browser 610 transmits the user input to the software 220 of the web server 2 using the web socket (690). The user input may be, for example, a mouse, a keyboard, a touch, or gestures. Gestures such as touch, tab, pinch, zoom, scroll, and tilt input by the user and inputs such as mouse and keyboard are transmitted to the web server 2 by the client terminal 3 and the web server 2 transmits the software 220 to reflect the user input. At the time of user input transmission, the JSON format can be used or converted into a hexadecimal value, put into a structure, and transmitted to the web server 2. The keyboard input is transmitted to the web server 2 in the type, state, and key_code structure for down and up. The mouse input is transmitted to the web server 2 for down, move, and up in the type, state, x, y structure. The touch input transmits start, move, and end to the web server 2 in type, state, x, y structure.

한편, 클라이언트 단말(3)의 성능을 고려하여 클라이언트 단말(3)에 제공하는 서비스의 품질을 개선한다. 예를 들어, 클라이언트 단말(3)이 디코딩 가능한 프레임 수를 웹 서버(2)에 전송하고 웹 서버(2)가 클라이언트 단말(3)의 디코딩 성능을 반영하는 방식을 통해 서비스 품질을 개선한다. 다른 예로, 네트워크 대역폭, 속도 등의 네트워크 상태를 실시간으로 측정하고 측정된 네트워크 상태에 적응적으로 스트리밍 전송하는 어댑티브 스트리밍(adaptive streaming)을 통해 서비스 품질을 개선한다. 예를 들어, 웹 서버(2)가 네트워크 상태에 따라 인코딩 비트율(bitrates), 프레임 수를 조절할 수 있다.On the other hand, considering the performance of the client terminal 3, the quality of the service provided to the client terminal 3 is improved. For example, the client terminal 3 transmits the number of decodable frames to the web server 2, and the quality of service is improved by a method in which the web server 2 reflects the decoding performance of the client terminal 3. As another example, the quality of service is improved through adaptive streaming, which measures network conditions such as network bandwidth, speed, etc. in real time and adaptively streams the packets to the measured network conditions. For example, the web server 2 can adjust the encoding bit rate and the frame number according to the network conditions.

웹 서버(2)의 실행 결과 스트리밍 전송 및 클라이언트 단말(3)의 사용자 입력 전송을 위한 웹 소켓은 단일 개일 수 있고, 다수 개일 수 있다. 이하, 도 7 및 도 8을 참조로 하여 웹 소켓을 통한 스트리밍 전송 및 사용자 입력 수신 프로세스에 대해 후술한다.The web socket for streaming the execution result of the web server 2 and transmitting the user input of the client terminal 3 may be single or multiple. Hereinafter, the streaming transmission through the web socket and the user input receiving process will be described below with reference to FIGS. 7 and 8. FIG.

도 7은 본 발명의 일 실시 예에 따른 웹 소켓을 1개 사용하는 방식에서의 웹 서버와 클라이언트 단말 간의 통신 프로세스를 도시한 흐름도이다.7 is a flowchart illustrating a communication process between a web server and a client terminal in a method using one web socket according to an embodiment of the present invention.

도 7을 참조하면, 웹 소켓을 1개 연결하면, 클라이언트 단말(3)의 웹 브라우저(610)가 웹 서버(2)에 대한 최초 연결시간이 단축된다. 웹 브라우저(610)는 싱글 쓰레드(single thread)를 사용하는 이벤트 핸들링 방식이므로, 웹 소켓을 1개 사용하면 웹 소켓을 여러 개 사용하는 것에 비해 전체 이벤트 개수가 줄어들어 클라이언트 단말(3)의 성능을 높일 수 있다.Referring to FIG. 7, when one web socket is connected, the initial connection time of the web browser 610 of the client terminal 3 to the web server 2 is shortened. Since the web browser 610 is an event handling method using a single thread, when one web socket is used, the number of events is reduced compared to using multiple web sockets, thereby increasing the performance of the client terminal 3 .

웹 브라우저(610)는 코덱 자바스크립트(320)를 사용하여 이미지를 디코딩한다. 코덱 자바스크립트(320)는 SW 코덱용일 수 있고, HW 코덱용일 수 있다. 나아가, HW 가속을 사용할 수도 있다. 그리고 웹 브라우저(610)는 디코딩된 이미지를 렌더링 자바스크립트(322)를 사용하여 렌더링한다. 예를 들어, 웹 브라우저(610)는 디코딩된 이미지를, 웹 브라우저(610)가 제공하는 HTML5 규격에서 CANVAS 요소를 사용하여 렌더링한다. 가능한 경우 HW 가속을 사용한다. 웹 브라우저(610)가 GetUserMedia 스펙을 지원하는 경우에는 디코딩된 오디오를 렌더링할 수 있다.The web browser 610 uses the codec JavaScript 320 to decode the image. The codec JavaScript 320 may be for an SW codec, and may be for an HW codec. Further, HW acceleration may be used. The web browser 610 then renders the decoded image using the render JavaScript 322. For example, the web browser 610 renders the decoded image using the CANVAS element in the HTML5 standard provided by the web browser 610. [ If possible, use HW acceleration. If the Web browser 610 supports the GetUserMedia specification, it may render the decoded audio.

일 실시 예에 따른 웹 서버(2)는 1개의 웹 소켓(760)을 사용하여 비디오, 오디오 데이터를 웹 브라우저(610)로 스트리밍 전송한다(710). 이때, 네트워크 상태에 적응하는 어댑티브 스트리밍(adaptive streaming) 전송을 할 수 있다. 이어서, 웹 브라우저(610)는 1개의 웹 소켓(760)을 사용하여 사용자 입력을 웹 서버(2)로 전송한다(720). 따라서 1개의 웹 소켓(760)을 사용하는 경우, 웹 서버(2)는 출력 화면 및 오디오를 인코딩(770)하고 비디오 및 오디오 데이터에 대한 패킷 처리(Packetize) 및 다중화(Mux)(780)를 수행할 수 있다. 웹 서버(2)는 GPU 사용 또는 HW 가속(700)을 통해 출력 화면 및 오디오 인코딩(770)과 비디오 및 오디오 데이터에 대한 패킷 처리 및 다중화(780)를 수행할 수 있다.The web server 2 according to an exemplary embodiment of the present invention streams 710 the video and audio data to the web browser 610 using one web socket 760. At this time, adaptive streaming transmission adaptable to the network state can be performed. Subsequently, the web browser 610 transmits the user input to the web server 2 using one web socket 760 (720). Thus, when using one web socket 760, the web server 2 encodes the output screen and audio 770 and performs packet processing and multiplexing 780 on the video and audio data can do. The web server 2 may perform output screen and audio encoding 770 and packet processing and multiplexing 780 on video and audio data using the GPU or HW acceleration 700. [

웹 브라우저(610)는 역 다중화 자바스크립트(Demux javascript)(324)를 이용하여 역 다중화(Demux)를 통해 비디오 및 오디오 데이터를 분리한다.The web browser 610 demultiplexes video and audio data through demultiplexing using a demux javascript 324.

도 8은 본 발명의 일 실시 예에 따른 웹 소켓을 다수 개 사용하는 방식에서의 웹 서버와 클라이언트 단말 간의 통신 프로세스를 도시한 흐름도이다.FIG. 8 is a flowchart illustrating a communication process between a web server and a client terminal in a method using a plurality of web sockets according to an embodiment of the present invention.

도 8을 참조하면, 웹 소켓을 다수 개, 예를 들어 도 8에 도시된 바와 같이 2개(870-1, 870-2) 연결하는 것은 1개를 사용하는 것에 비해 전반적인 성능은 떨어지지만, 1개의 웹 소켓 #1(870-1)은 비디오 스트리밍 전송(850-1)을 수행하고 다른 1개의 웹 소켓 #2(870-2)은 오디오 스트리밍 전송(850-2)을 수행하면, 웹 브라우저(610)가 실행하는 자바스크립트 파일 구조를 단순화시킬 수 있다.Referring to FIG. 8, a plurality of web sockets, for example, two (870-1, 870-2) connections as shown in FIG. 8, When one web socket # 1 870-1 performs video streaming transmission 850-1 and the other one web socket # 2 870-2 performs audio streaming transmission 850-2, 610) can simplify the structure of the JavaScript file.

웹 서버(30)가 비디오를 인코딩(880)하여 웹 소켓 #1(870-1)을 통해 웹 브라우저(610)에 스트리밍 전송하면, 웹 브라우저(610)는 수신된 비디오를 코덱 자바스크립트 #1(320-1)를 이용하여 디코딩하고, 화면 렌더링 자바스크립트(322-1)를 이용하여 디코딩된 비디오를 렌더링한다. 마찬가지로 웹 서버(30)가 오디오를 인코딩(890)하여 웹 소켓 #2(870-2)을 통해 웹 브라우저(610)에 스트리밍 전송하면, 웹 브라우저(610)는 수신된 오디오를 코덱 자바스크립트 #2(320-2)를 이용하여 디코딩하고, 오디오 렌더링 자바스크립트(322-2)를 이용하여 디코딩된 오디오를 렌더링한다.When the web server 30 encodes the video 880 and streams the stream to the web browser 610 through the web socket # 1 870-1, the web browser 610 transmits the received video to the codec JavaScript # 1 320-1), and renders the decoded video using the screen rendering JavaScript 322-1. Similarly, when the web server 30 encodes audio stream 890 and streams the stream to the web browser 610 through the web socket # 2 870-2, the web browser 610 transmits the received audio to the codec javascript # 2 (320-2), and renders the decoded audio using the audio rendering JavaScript 322-2.

도 9는 본 발명의 일 실시 예에 따른 클라이언트 단말의 성능을 높이기 위해 워커 자바스크립트를 이용한 웹 소켓 처리 프로세스를 도시한 흐름도이다.FIG. 9 is a flowchart illustrating a web socket processing process using Walker JavaScript to increase the performance of a client terminal according to an exemplary embodiment of the present invention.

도 9를 참조하면, 웹 브라우저(610)가 실행하는 cloud streaming client.js 자바스크립트 파일은 HTML5가 제공하는 워커 자바스크립트(worker javascript)(326)를 사용한다. 워커 자바스크립트(326)는 웹 소켓 처리를 위한 쓰레드 기능을 제공하는데, 워커 자바스크립트(326)를 이용하여 프레임률(Framerates) 계산 및 타임아웃(Timeout) 처리가 가능하다. 이때, 웹 소켓(960) 연결마다 워커 자바스크립트(326)를 사용하여 웹 소켓 처리를 별개의 쓰레드로 분리하면. 클라이언트 단말(3)의 성능을 높일 수 있다. 또한, 웹 소켓(960)이 다수 개일 때 클라이언트 입력 이벤트로 인해 웹 소켓(960)이 비정상 종료하는 문제를 개선할 수 있다. 웹 브라우저(610)는 싱글 쓰레드를 사용하는 이벤트 핸들링 방식이므로, HTML5 규격에서 워커 자바스크립트(326)를 사용하면 멀티 쓰레드를 사용하는 것과 같은 결과를 얻기 때문에 클라이언트 단말(3)의 성능을 높일 수 있다. 또한, 클라이언트 단말(3)이 전반적으로 더 매끄럽게 동작하는 효과가 있다. 워커 자바스크립트(326)는 HTML5가 제공하는 것으로, 다른 표준 웹 프로토콜 또는 추후 등장하는 다른 표준 웹 프로토콜이라 할지라도 그 기능이 유사하면 대체 가능하다.Referring to FIG. 9, a cloud streaming client.js JavaScript file executed by the web browser 610 uses a worker javascript 326 provided by HTML5. The worker JavaScript 326 provides a thread function for web socket processing, which can calculate framerates and timeout processing using the worker JavaScript 326. At this time, if the web socket process is separated into separate threads using the worker javascript 326 for each connection of the web socket 960, The performance of the client terminal 3 can be enhanced. In addition, when there are a plurality of web sockets 960, the problem that the web socket 960 ends abnormally due to a client input event can be solved. Since the web browser 610 is an event handling method using a single thread, if the Walker JavaScript 326 is used in the HTML5 standard, the same result as using a multi-thread can be obtained, so that the performance of the client terminal 3 can be enhanced . In addition, there is an effect that the client terminal 3 operates more smoothly overall. The worker JavaScript 326 is provided by HTML5 and can be replaced if other standard web protocols or other standard web protocols appearing later are similar in function.

이제까지 본 발명에 대하여 그 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The embodiments of the present invention have been described above. It will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.

1: 네트워크 2: 클라우드 스트리밍 웹 서버
3: 클라이언트 단말 20: 서버 프로세서
22: 서버 메모리 30: 단말 프로세서
32: 단말 메모리 34: 웹 클라이언트
200: HTTP 처리부 201: 전송 처리부
202: 사용자 입력 수신 처리부 203: 소프트웨어 실행 처리부
205: 인코딩부 206: 패킷 처리부
207: 다중화부 208: 서비스 품질 조절부
220: 실행 소프트웨어 300: 웹 클라이언트 실행부
301: 자바스크립트 실행부 302: 수신 처리부
303: 사용자 입력 전송 처리부 305: 디코딩부
306: 렌더링부 307: 역 다중화부
308: 웹 워커 320: 코덱 자바스크립트
322: 렌더링 자바스크립트 324: 역 다중화 자바스크립트
326: 워커 자바스크립트
1: Network 2: Cloud Streaming Web Server
3: client terminal 20: server processor
22: server memory 30: terminal processor
32: terminal memory 34: web client
200: HTTP processing unit 201:
202: user input reception processing section 203: software execution processing section
205: encoding unit 206: packet processing unit
207: multiplexer 208: service quality controller
220: Execution software 300: Web client execution part
301: JavaScript execution unit 302: Reception processing unit
303: User input transmission processing unit 305:
306: Rendering unit 307: Demultiplexing unit
308: Web Walker 320: Codec JavaScript
322: Rendering JavaScript 324: Demultiplexing JavaScript
326: Walker JavaScript

Claims (6)

프로세서; 및
상기 프로세서를 통해 실행되는 명령을 포함한 데이터가 저장되는 메모리; 를 포함하며,
상기 프로세서는
클라이언트 단말에 모바일 앱이나 프로그램을 별도로 설치할 필요가 없이, 클라이언트 단말에서 기본으로 제공되거나 설치된 웹 브라우저 또는 하이브리드 앱인 웹 클라이언트로부터 서버 접속을 위한 HTTP 요청을 수신하여 HTML 디폴트 파일을 포함한 HTTP 응답을 웹 클라이언트에 전송하는 HTTP 처리부;
웹 클라이언트의 HTML 디폴트 파일의 요청에 따라 멀티 쓰레드를 위한 워커 자바스크립트 파일을 전송하고, 웹 클라이언트에서 워커 자바스크립트 파일을 실행하면 실행된 워커 자바스크립트 파일로부터 웹 소켓을 통한 접속 요청을 수신하여 소프트웨어 실행 결과를 웹 소켓을 통해 웹 클라이언트에 스트리밍 전송하는 전송 처리부;
실행된 워커 자바스크립트 파일로부터 웹 소켓을 통해 사용자 입력을 수신하는 사용자 입력 수신 처리부;
소프트웨어를 실행하고 소프트웨어 실행 결과를 상기 전송 처리부에 전달하며 사용자 입력 수신 처리부로부터 사용자 입력을 전달받아 이를 실행 소프트웨어에 반영하는 소프트웨어 실행 처리부; 및
다수의 웹 소켓을 이용하여 클라이언트 단말과 통신하는 경우 실행 화면 및 오디오를 분리하여 각각 인코딩하는 인코딩부;
를 포함하는 것을 특징으로 하는 클라우드 스트리밍 웹 서버.
A processor; And
A memory for storing data including instructions executed by the processor; / RTI >
The processor
It is not necessary to install a mobile application or program separately on the client terminal, but it receives an HTTP request for accessing the server from a client terminal, which is provided as a basic or installed web browser or a hybrid application, and transmits an HTTP response including the HTML default file to the web client An HTTP processing unit for transmitting;
It sends a worker JavaScript file for multithread according to the request of the HTML default file of the web client. When the web client executes the worker javascript file, it receives the connection request through the web socket from the executed worker javascript file and executes the software A transmission processing unit for streaming the result to the web client through the web socket;
A user input receiving processing unit for receiving user input from a executed Walker JavaScript file via a web socket;
A software execution processor for executing the software and transferring the result of executing the software to the transmission processor, receiving the user input from the user input reception processor, and reflecting the user input to the execution software; And
An encoding unit for separately encoding an execution screen and audio when communicating with a client terminal using a plurality of web sockets;
The web server comprising:
삭제delete 제 1 항에 있어서, 상기 클라우드 스트리밍 웹 서버는
상기 클라이언트 단말로부터 디코딩 성능 정보를 수신하고 수신된 디코딩 성능 정보를 반영하여 서비스 품질을 조절하는 방식과, 상기 클라이언트 단말에 서비스를 제공할 네트워크의 상태를 반영하여 서비스 품질을 조절하는 방식 중 적어도 하나를 통해 서비스 품질을 조절하는 서비스 품질 조절부;
를 더 포함하는 것을 특징으로 하는 클라우드 스트리밍 웹 서버.
The method of claim 1, wherein the cloud streaming web server
A method of receiving decoding performance information from the client terminal and adjusting a service quality by reflecting received decoding performance information and a method of adjusting a service quality by reflecting a state of a network for providing a service to the client terminal, A service quality control unit for controlling the quality of service through the service quality control unit;
Further comprising: means for receiving a request from the web server;
제 1 항에 있어서, 상기 프로세서는
인코딩된 실행 화면 및 오디오를 패킷 처리하는 패킷 처리부; 및
패킷화된 실행 화면 및 오디오를 다중화하는 다중화부; 를 더 포함하는 것을 특징으로 하는 클라우드 스트리밍 웹 서버.
2. The apparatus of claim 1, wherein the processor
A packet processing unit for packet-processing the encoded execution picture and audio; And
A multiplexer for multiplexing the packetized execution picture and audio; Further comprising: means for receiving a request from the web server;
클라이언트 단말에서 기본으로 제공되거나 설치된 웹 브라우저 또는 하이브리드 앱인 웹 클라이언트;
상기 웹 클라이언트를 실행하는 프로세서; 및
상기 프로세서를 통해 실행되는 명령을 포함한 데이터가 저장되는 메모리; 를 포함하며,
상기 프로세서는
클라이언트 단말에 모바일 앱이나 프로그램을 별도로 설치할 필요가 없이, 상기 웹 클라이언트를 실행하고 클라우드 스트리밍 웹 서버에 웹 접속을 위한 HTTP 요청을 전송하여 상기 클라우드 스트리밍 웹 서버로부터 HTML 디폴트 파일을 포함한 HTTP 응답을 수신하는 웹 클라이언트 실행부;
HTML 디폴트 파일에 의해 클라우드 스트리밍 웹 서버에 멀티 쓰레드를 위한 워커 자바스크립트 파일을 요청하여 수신하고 수신한 워커 자바스크립트 파일을 웹 클라이언트에서 실행하는 자바스크립트 실행부;
실행된 워커 자바스크립트 파일에 의해 웹 소켓을 이용하여 클라우드 스트리밍 웹 서버에 접속하여 소프트웨어 실행 결과를 스트리밍 수신하는 수신 처리부;
실행된 워커 자바스크립트 파일에 의해 사용자 입력을 클라우드 스트리밍 웹 서버에 전송하는 사용자 입력 전송 처리부;
다수의 웹 소켓을 이용하여 클라우드 스트리밍 웹 서버와 통신하는 경우 클라우드 스트리밍 웹 서버로부터 수신된 실행 화면 및 오디오를 분리하여 각각 디코딩하는 디코딩부; 및
웹 소켓 처리를 위한 쓰레드 기능을 제공하는 웹 워커;
를 포함하는 것을 특징으로 하는 클라이언트 단말.
A web client that is a web browser or hybrid application installed or installed as a base in a client terminal;
A processor executing the web client; And
A memory for storing data including instructions executed by the processor; / RTI >
The processor
It is unnecessary to separately install a mobile app or a program on a client terminal, and the web client is executed and an HTTP request for accessing the web is transmitted to the cloud streaming web server, and an HTTP response including an HTML default file is received from the cloud streaming web server A web client execution unit;
A JavaScript execution unit for requesting a web browser for a multi-threaded web server to the cloud streaming web server by an HTML default file and executing the received worker javascript file on the web client;
A reception processor for accessing a cloud streaming web server using a web socket by an executed Walker Javascript file to stream the received software execution result;
A user input transmission processing unit for transmitting user input to a cloud streaming web server by an executed Walker JavaScript file;
A decoder for separating and decoding execution pictures and audio received from a cloud streaming web server when communicating with a cloud streaming web server using a plurality of web sockets; And
A web worker that provides threads for processing web sockets;
And a client terminal.
제 5 항에 있어서, 상기 프로세서는
디코딩된 화면 및 오디오를 렌더링하는 렌더링부; 및
렌더링된 화면 및 오디오를 역 다중화하는 역 다중화부; 를 더 포함하며,
클라우드 스트리밍 웹 서버와 통신하는 웹 소켓이 다수 개이면, 상기 렌더링부는 화면 및 오디오를 분리하여 각각 렌더링하는 것을 특징으로 하는 클라이언트 단말.
6. The apparatus of claim 5, wherein the processor
A rendering unit for rendering a decoded picture and audio; And
A demultiplexer for demultiplexing the rendered picture and audio; Further comprising:
Wherein the rendering unit separately separates the screen and the audio when the plurality of web sockets communicating with the cloud streaming web server are present.
KR1020160103661A 2016-08-16 2016-08-16 Cloud streaming web server and client terminal using web protocol KR101832167B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160103661A KR101832167B1 (en) 2016-08-16 2016-08-16 Cloud streaming web server and client terminal using web protocol

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160103661A KR101832167B1 (en) 2016-08-16 2016-08-16 Cloud streaming web server and client terminal using web protocol

Publications (1)

Publication Number Publication Date
KR101832167B1 true KR101832167B1 (en) 2018-02-26

Family

ID=61531353

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160103661A KR101832167B1 (en) 2016-08-16 2016-08-16 Cloud streaming web server and client terminal using web protocol

Country Status (1)

Country Link
KR (1) KR101832167B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102194513B1 (en) * 2019-06-20 2020-12-23 배재대학교 산학협력단 Web service system and method using gpgpu based task queue
KR102310219B1 (en) * 2021-04-06 2021-10-08 주식회사 위엔 Apparatus for enhancementing personal information security and method thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102194513B1 (en) * 2019-06-20 2020-12-23 배재대학교 산학협력단 Web service system and method using gpgpu based task queue
KR102310219B1 (en) * 2021-04-06 2021-10-08 주식회사 위엔 Apparatus for enhancementing personal information security and method thereof

Similar Documents

Publication Publication Date Title
JP6288594B2 (en) Desktop cloud-based media control method and device
CN108076364B (en) Adaptive media streaming apparatus and media service apparatus
US10165028B2 (en) Context-aware streaming of digital content
US20160029002A1 (en) Platform-agnostic Video Player For Mobile Computing Devices And Desktop Computers
US8656443B2 (en) Method and system for providing dynamic time slice encoding for complete internet anywhere
US11089349B2 (en) Apparatus and method for playing back and seeking media in web browser
US20140052846A1 (en) Adaptive video streaming over a content delivery network
US20180213301A1 (en) Media playback apparatus and method for synchronously reproducing video and audio on a web browser
US10791160B2 (en) Method and apparatus for cloud streaming service
CN102761603A (en) Webpage flash video redirection method in VDI environment
CA2843766A1 (en) Script-based video rendering
JP2010508734A (en) An architecture for delivering video content in response to remote interaction
CN104685873B (en) Encoding controller and coding control method
CN110324721B (en) Video data processing method and device and storage medium
WO2014139269A1 (en) Method and apparatus for playing and processing videos based on a virtual desktop
US10534852B2 (en) Display system and virtual web device in the cloud
WO2015176648A1 (en) Method and device for transmitting data in intelligent terminal to television terminal
EP2804143A1 (en) System and method for forwarding a graphics command stream
KR101931514B1 (en) Apparatus and method for simultaneous playback and backup of media in a web browser
CN104349177A (en) Method for turning to play multimedia file under desktop cloud, virtual machine and system
KR101832167B1 (en) Cloud streaming web server and client terminal using web protocol
CN108337248B (en) Media playback apparatus and media service apparatus
WO2017160404A1 (en) User input based adaptive streaming
CN112350979B (en) Data transmission method and device
WO2016107174A1 (en) Method and system for processing multimedia file data, player and client

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant