KR101821123B1 - Method and apparatus for playing media stream on web-browser - Google Patents

Method and apparatus for playing media stream on web-browser Download PDF

Info

Publication number
KR101821123B1
KR101821123B1 KR1020160069443A KR20160069443A KR101821123B1 KR 101821123 B1 KR101821123 B1 KR 101821123B1 KR 1020160069443 A KR1020160069443 A KR 1020160069443A KR 20160069443 A KR20160069443 A KR 20160069443A KR 101821123 B1 KR101821123 B1 KR 101821123B1
Authority
KR
South Korea
Prior art keywords
web
media
media stream
streaming
module
Prior art date
Application number
KR1020160069443A
Other languages
Korean (ko)
Other versions
KR20170114218A (en
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 US15/393,936 priority Critical patent/US10412130B2/en
Publication of KR20170114218A publication Critical patent/KR20170114218A/en
Application granted granted Critical
Publication of KR101821123B1 publication Critical patent/KR101821123B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2355Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving reformatting operations of additional data, e.g. HTML pages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/4223Cameras

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

미디어 서버로부터 전송되는 미디어 스트림을 수신하여 웹브라우저 상에서 재생하는 미디어 스트림 재생 장치는, 상기 미디어 서버와 전송 계층 레벨의 통신 연결을 수립하는 전송 모듈과, 상기 전송 계층 레벨의 연결을 기초로 상기 미디어 서버와 핸드쉐이크를 통해 웹소켓 연결을 수립한 후 상기 수립된 웹소켓 연결을 지속적으로 유지하면서, 상기 미디어 서버와 웹소켓 패킷을 송수신하는 웹소켓 모듈과, 상기 웹소켓 패킷에 의해 운반되는 실시간 전송 프로토콜 패킷을 수신하는 스트리밍 모듈과, 상기 실시간 전송 프로토콜 패킷으로부터 얻어지는 상기 미디어 스트림이 브라우저 내장 재생기에 의해 실행 가능하지 않으면, 상기 미디어 스트림을 상기 브라우저 내장 재생기에 의해 재생 가능한 포맷으로 변환하는 포맷 변환기와, 상기 변환된 미디어 스트림으로부터 영상을 복원하는 넌플러그인(non-plugin) 방식의 상기 브라우저 내장 재생기와, 상기 복원된 영상을 상기 웹브라우저에 임베드하여 화면 상에 표시하는 출력 장치로 이루어진다.A media stream reproducing apparatus for receiving a media stream transmitted from a media server and reproducing the received media stream on a web browser includes a transmission module for establishing a communication connection at a transmission layer level with the media server, A web socket module for establishing a web socket connection through a handshake and transmitting and receiving a web socket packet to and from the media server while continuing to maintain the established web socket connection; A format converter for converting the media stream into a format reproducible by the browser built-in player if the media stream obtained from the real time transmission protocol packet is not executable by a browser built-in player; Translated US You restoring an image from the air stream is made to the output device to embed the reconstructed image and the plug-in (non-plugin) the built-in browser of the regenerator system, the web browser displayed on the screen.

Description

웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치{Method and apparatus for playing media stream on web-browser}METHOD AND APPARATUS FOR PLAYING MEDIA STREAMS IN A WEB Browser [0001]

본 발명은 웹브라우저 상에서 미디어 스트림을 재생하는 방법 및 장치에 관한 것으로, 보다 자세하게는 카메라에서 획득된 영상과 음성을 플러그인 없이도 웹브라우저에서 직접 스트리밍하는 기술에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method and apparatus for playing a media stream on a web browser, and more particularly, to a technique for directly streaming video and audio obtained from a camera in a web browser without a plug-in.

미디어 컨텐츠는 인터넷을 통해 다양한 영상 소스와 연결된 복수의 사용자 기기들에 의해 억세스될 수 있다. 이를 위해, 상기 사용자 기기들에는 HTTP(hypertext transfer protocol)를 사용하여 서버 어플리케이션과 통신할 수 있도록 웹브라우저가 설치된다. 그런데 이러한 웹브라우저는 하프 듀플렉스(half-duplex) 방식이고 HTTP 요청 및 응답 메시지를 통한 반복적인 정보 교환으로 인해 오버헤드가 발생하기 때문에, 연속적인 미디어를 스트리밍 하기에는 적합하지 않다.The media content can be accessed by a plurality of user devices connected to various video sources via the Internet. To this end, a web browser is installed in the user equipments so as to be able to communicate with the server application using hypertext transfer protocol (HTTP). However, such a web browser is not suitable for streaming continuous media because it is a half-duplex method and overhead occurs due to repetitive information exchange through HTTP request and response messages.

도 1에 도시된 종래의 HTTP 연결 방식에 따르면, 웹브라우저(15)는 웹서버(25)에 연결 요청 메시지(Long-lived request)를 전송한 후, 웹서버(25)에 의해 요청 대기(request suspended) 상태로 전환되고 양자간의 접속이 수립된다. 이 상태에서 웹브라우저(15)가 특정 동작(action)을 수행하기 위한 명령(client action)을 웹서버(25)에 전송하면, 이에 대한 응답으로서 웹서버(25)는 응답 메시지를 웹브라우저(15)에 전송한다. 예를 들어, 상기 명령(client action)이 특정 영상에 관한 스트리밍 요구라면 상기 응답 메시지는 상기 영상의 패킷 데이터가 될 것이다. 이러한 연결은 지속적으로 이루어질 수는 없고 웹서버(25)가 완료 명령(Long-lived request completes)을 웹브라우저(15)에 전송하면서 양자간의 연결은 단절된다. 이후에 웹브라우저(15)가 추가적으로 상기 스트리밍을 요구하여야 한다면 위의 과정들을 재차 반복하여야 한다.1, the web browser 15 transmits a connection request message (a long-lived request) to the web server 25, and then the web server 25 transmits a connection request message suspended state and a connection between them is established. In this state, when the web browser 15 transmits a client action for performing a specific action to the web server 25, the web server 25 transmits a response message to the web browser 15 . For example, if the client action is a streaming request for a particular image, the response message will be packet data of the video. Such a connection can not be continuously performed, and the connection between the two is disconnected while the web server 25 transmits a long-lived request completes to the web browser 15. [ If the web browser 15 further requests the streaming, the above steps should be repeated.

즉, 종래의 HTTP 연결 방식으로 웹서버와 웹브라우저 간의 통신하는 방식은, 특정한 이벤트마다 웹서버와 웹브라우저간의 연결이 필요하고 그 이벤트가 끝나면 연결이 종료된다. 따라서, 상기 방식은 웹 페이지의 접속 등 비연속적인 이벤트의 처리에 적합하지만, 영상 및 음성 스트리밍과 같이 웹서버와 웹브라우저간에 지속적인 연결 유지가 필요한 분야에는 적합하지 않다.That is, in the conventional method of communicating between the web server and the web browser in the HTTP connection method, a connection between the web server and the web browser is required for each specific event, and the connection is terminated when the event ends. Accordingly, although the above method is suitable for handling non-continuous events such as connection of a web page, it is not suitable for a field where continuous connection between a web server and a web browser is required, such as video and voice streaming.

이러한 문제로 인해, 웹브라우저에 다양한 형태의 플러그인(ActiveX, NPAPI, PPAPI)의 설치를 통해 웹브라우저 및 웹서버 간의 네트워크 연결 기능, 수신한 영상을 디코딩하는 기능 및 디코딩된 영상을 출력하는 기능을 구현하는 방식이 많이 사용되고 있다. 특히, 네트워크 카메라에는 일반적으로 웹 뷰어라고 불리는 영상/음성을 수신하고 출력할 수 있는 기능이 제공되고 있다. 이러한 웹 뷰어라는 기능은 사용자가 원격지에서 CMS(Central Monitoring System)나 VMS(Video Management System)와 같은 소프트웨어를 설치하지 않고도, 카메라의 네트워크 주소의 입력을 통해 네트워크 카메라에 접속하면 플러그인이 자동으로 설치되고, 이렇게 설치된 플러그인을 통해서 영상 및 음성을 수신할 수 있게 한다. 그리고, 이러한 기능을 제공하기 위해서 상기 네트워크 카메라는 웹서비스를 제공할 수 있는 웹서버를 탑재한다. 따라서, 기존의 웹 서비스 방식은 웹브라우저를 탑재한 사용자 단말이 특정 URL을 통해 웹서버에 접속하면 자동으로 플러그인이 설치되고 영상 및 음성의 송수신 기능은 플러그인을 통해서 이루어지게 된다.Due to these problems, various plug-ins (ActiveX, NPAPI, PPAPI) are installed in the web browser, and network connection function between web browser and web server, decoding of received image and function of outputting decoded image are implemented Is widely used. Particularly, a network camera is provided with a function of receiving and outputting a video / audio generally called a web viewer. The function of this web viewer is that the plug-in is installed automatically when the user connects to the network camera through inputting the network address of the camera without installing the software such as CMS (Central Monitoring System) or VMS (Video Management System) , So that video and audio can be received through the plug-in thus installed. In order to provide such a function, the network camera mounts a web server capable of providing a web service. Therefore, in the conventional web service method, a plug-in is automatically installed when a user terminal equipped with a web browser accesses a web server through a specific URL, and a function of transmitting and receiving video and audio is performed through a plug-in.

그러나, 이와 같이 웹브라우저에 플러그인을 설치하는 방식은 보안의 취약성, 웹브라우저의 기능 제한, 지나친 리소스의 소모 등 많은 문제를 노출하면서 사용 빈도가 줄어들고 있는 추세이다. 또한, 영상 스트림을 전송하기 위한 또다른 표준화의 결과물의 예로서, HTML5에서는 비디오 태그(video tag)를 통해 원격 소스에 저장된 영상 파일을 수신하는 기능을 지원하고 있고, WebRTC, openWebRTC, MPEG-DASH 등에서는 실시간 영상 송수신을 위한 표준 규격을 제공하고 있다.However, the way of installing the plug-in in the web browser is decreasing the frequency of use while exposing many problems such as security vulnerability, limitation of the function of the web browser, and excessive consumption of resources. As another example of the result of standardization for transmitting a video stream, HTML5 supports a function of receiving an image file stored in a remote source through a video tag, and in WebRTC, openWebRTC, MPEG-DASH, etc. Provides a standard for real-time video transmission and reception.

이와 같이, 최근 플러그인 기술의 배제로 인해 영상 수신, 재생 및 표시 기능은 HTML5, WebRTC, open WebRTC, MPEG-DASH 등의 표준에서 지원하는 방식에 따라 구현할 수 있다. 그러나, 지금까지 영상 송수신 표준으로 많이 사용되었던 RTP/RTSP(Real Time Transport Protocol / Real Time Streaming Protocol)를 이용하여 웹브라우저 상에서 영상을 처리하기 위해서는 플러그인이 사용이 필요하며, 현재로서는 플러그인 없이 웹브라우저 상에서 RTP/RTSP에 따라 영상 처리하는 것은 가능하지 않다. 그렇다고 해서, 네트워크 카메라나 저장장치 등 시스템 리소스의 제약을 받는 임베디드 시스템(embedded system)에서 RTP/RTSP외에 다른 무거운 프로토콜을 추가로 탑재하는 것도 현실적인 선택이 될 수 없을 것이다.In this way, due to the recent exclusion of plug-in technology, image reception, playback and display functions can be implemented according to a method supported by standards such as HTML5, WebRTC, open WebRTC, and MPEG-DASH. However, in order to process images on a web browser using RTP / RTSP (Real Time Transport Protocol / Real Time Streaming Protocol), which has been widely used as a video transmission / reception standard, a plug-in must be used. Currently, It is not possible to process images according to RTP / RTSP. However, in addition to RTP / RTSP, it may not be a practical option to mount additional heavy protocols in an embedded system that is limited by system resources such as network cameras and storage devices.

따라서, 네트워크 카메라, NVR/DVR, 인코더/디코더, 비디오관리 소프트웨어 등의 기술 분야에 있어서, 별도의 플러그인 없이 RTP/RTSP 통신을 그대로 이용하여 웹브라우저 상에서 미디어(영상 및 음성)를 스트리밍할 수 있는 기술을 고안할 필요가 있다.Therefore, in the technical fields of network cameras, NVR / DVRs, encoders / decoders, video management software, etc., technology capable of streaming media (video and audio) on a web browser using RTP / RTSP communication without any additional plug- .

한국특허공개공보 2015-0119003호Korean Patent Laid-Open Publication No. 2015-0119003

본 발명이 이루고자 하는 기술적 과제는, 웹브라우저 상에서 영상 및 음성을 스트리밍함에 있어서, 플러그인의 설치 없이 최소한의 시스템 사양만으로도 지연없는 스트리밍을 가능하게 하는 것이다.SUMMARY OF THE INVENTION The present invention has been made in view of the above problems, and it is an object of the present invention to provide an apparatus and method for streaming video and audio on a web browser without delay, without requiring a plug-in.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical objects of the present invention are not limited to the technical matters mentioned above, and other technical subjects not mentioned can be clearly understood by those skilled in the art from the following description.

상기 기술적 과제를 달성하기 위한, 미디어 서버로부터 전송되는 미디어 스트림을 수신하여 웹브라우저 상에서 재생하는 미디어 스트림 재생 장치로서, 상기 미디어 서버와 전송 계층 레벨의 통신 연결을 수립하는 전송 모듈; 상기 전송 계층 레벨의 연결을 기초로 상기 미디어 서버와 핸드쉐이크를 통해 웹소켓 연결을 수립한 후 상기 수립된 웹소켓 연결을 지속적으로 유지하면서, 상기 미디어 서버와 웹소켓 패킷을 송수신하는 웹소켓 모듈; 상기 웹소켓 패킷에 의해 운반되는 실시간 전송 프로토콜 패킷을 수신하는 스트리밍 모듈; 상기 실시간 전송 프로토콜 패킷으로부터 얻어지는 상기 미디어 스트림이 브라우저 내장 재생기에 의해 실행 가능하지 않으면, 상기 미디어 스트림을 상기 브라우저 내장 재생기에 의해 재생 가능한 포맷으로 변환하는 포맷 변환기; 상기 변환된 미디어 스트림으로부터 영상을 복원하는 넌플러그인(non-plugin) 방식의 상기 브라우저 내장 재생기; 및 상기 복원된 영상을 상기 웹브라우저에 임베드하여 화면 상에 표시하는 출력 장치를 포함한다.According to an aspect of the present invention, there is provided a media stream reproducing apparatus for receiving a media stream transmitted from a media server and playing the media stream on a web browser, the apparatus comprising: a transmission module for establishing a communication layer- A web socket module that establishes a web socket connection with the media server based on the connection at the transport layer level and transmits and receives a web socket packet to and from the media server while maintaining the established web socket connection; A streaming module for receiving a real-time transport protocol packet carried by the web socket packet; A format converter for converting the media stream obtained from the real time transmission protocol packet into a format reproducible by the browser built-in player, if the media stream is not executable by a browser built-in player; A browser built-in player of a non-plugin type for restoring an image from the converted media stream; And an output device for embedding the restored image into the web browser and displaying the embedded image on the screen.

본 발명에 따르면, 플러그인 없이도 웹소켓을 이용하여 RTP/RTSP와 호환되고 영상 및 음성을 실시간으로 스트리밍할 수 있는 사용자 기기를 제공할 수 있다. 특히, 웹소켓을 통해 RTSTP/RTP를 제어하기 때문에 웹소켓을 지원하는 모든 브라우저에 의해 쉽게 지원될 수 있으며, 새로운 별도의 프로토콜을 고안할 필요가 없다는 장점이 있다.According to the present invention, it is possible to provide a user device compatible with RTP / RTSP using a web socket without a plug-in and capable of streaming video and audio in real time. In particular, because RTSTP / RTP is controlled via a web socket, it can be easily supported by any browser that supports a web socket, and there is no need to design a new protocol.

또한 본 발명에 따르면, 네트워크 카메라, 네트워크 비디오 레코더, 디지털 비디오 레코더 등 높은 시스템 사양을 구비하기 어려운 기기들에서도, 플러그인 없이 웹브라우저 상에서 미디어를 스트리밍할 수 있게 된다. 특히, 상기와 같은 기기들에서 탐색 및 백채널 오디오를 포함한 실시간 방식 및 재생 방식이 모두 지원될 수 있고 미디어 포맷에 관한 제약이 없다는 장점이 있다.Also, according to the present invention, it is possible to stream media on a web browser without a plug-in even in devices that do not have high system specifications such as a network camera, a network video recorder, and a digital video recorder. Particularly, there is an advantage that both the real-time method and the playback method including the search and back channel audio can be supported in the above-mentioned devices and there is no restriction on the media format.

도 1은 종래의 HTTP 연결 방식으로 웹서버와 웹브라우저 간의 통신하는 방식을 보여주는 도면이다.
도 2는 본 발명의 일 실시예에 따른 전체 시스템을 보여주는 도면이다.
도 3은 기기들 간의 통신을 위해 계층적으로 정의되는 OSI 7계층 모델과 TCP/IP 4계층 모델을 보여주는 도면이다.
도 4는 본 발명의 일 실시예에 따른 미디어 스트림 재생 장치의 구성을 도시한 블록도이다.
도 5는 웹소켓 연결을 통한 데이터의 송수신 과정의 일 예를 보여주는 시퀀스도이다.
도 6은 이와 같이 미디어 스트림 재생 장치와 스트림 서버 간에 송수신되는 웹소켓 패킷의 구체적인 구조도이다.
도 7은 RTP 프로토콜의 구체적인 구조도이다.
도 8은 도 4의 스트리밍 모듈의 세부 구성을 도시한 블록도이다.
도 9는 네트워크 인터페이스를 통해 스트림 서버와 통신하는 통신 패킷의 구조를 도시한 도면이다.
도 10은 도 3의 미디어 스트림 재생 장치와 통신하는 미디어 서버의 구성을 도시한 블록도이다.
도 11은 미디어 스트림 재생 장치 내의 스트리밍 모듈과 미디어 서버 간의 RTSP 셋업 과정을 나타낸 시퀀스도이다.
도 12는 도 11의 셋업 과정 이후에 상기 스트리밍 모듈이 상기 미디어 서버로부터 RTP 데이터를 수신하는 과정을 나타내는 시퀀스도이다.
도 13은 상기 스트리밍 모듈과 상기 미디어 서버간에 더 이상의 연결이 불필요한 경우에 접속 종료 과정를 보여주는 시퀀스도이다.
1 is a diagram illustrating a method of communicating between a web server and a web browser in a conventional HTTP connection method.
2 is a diagram illustrating an overall system according to an embodiment of the present invention.
3 is a diagram showing an OSI 7-layer model and a TCP / IP 4-layer model that are hierarchically defined for communication between devices.
4 is a block diagram illustrating a configuration of a media stream playback apparatus according to an embodiment of the present invention.
5 is a sequence diagram showing an example of a process of transmitting and receiving data through a web socket connection.
6 is a specific structural diagram of a web socket packet transmitted and received between the media stream reproducing apparatus and the stream server.
7 is a specific structural diagram of the RTP protocol.
8 is a block diagram showing a detailed configuration of the streaming module of FIG.
9 is a diagram showing the structure of a communication packet communicating with a stream server through a network interface.
10 is a block diagram showing the configuration of a media server that communicates with the media stream playback apparatus of FIG.
11 is a sequence diagram illustrating an RTSP setup process between a streaming module and a media server in a media stream playback apparatus.
FIG. 12 is a sequence diagram illustrating a process in which the streaming module receives RTP data from the media server after the setup process of FIG. 11;
13 is a sequence diagram illustrating a connection termination process when no further connection is required between the streaming module and the media server.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. 이하 첨부된 도면들을 참조하여 본 발명의 일 실시예를 상세히 설명한다.BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to 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. Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 2에 도시된 바와 같이, 본 발명에 따른 전체 시스템(10)은 다양한 사용자 기기들(106-114) 및 미디어 서버들(202, 204, 206) 간의 통신을 가능하게 하는 네트워크(50)를 포함한다. 상기 네트워크(50)는 직접적 또는 간접적 물리 통신 연결, 모바일 연결 네트워크, 인터넷, 인트라넷, LAN(Local Area Network), WAN(Wide Area Network), SAN(Storage Area Network) 및 2이상의 다른 시스템을 연결하는 다른 형태 등을 포함한다. 각각의 미디어 서버(202, 204, 206)는 하나 이상의 클라이언트 사용자 기기들 내지 미디어 스트림 재생 장치들에 대해 컴퓨팅 서비스를 제공할 수 있도록 적합한 컴퓨팅 또는 프로세싱 장치를 포함한다. 예를 들면, 미디어 서버(202, 204, 206)는 네트워크 카메라, 네트워크 비디오 레코더(NVR), 디지털 비디오 레코더(DVR) 등과 같이 미디어 스트림를 생성하거나 저장하며 상기 미디어 스트림을 클라이언트 사용자 기기들에 전송할 수 있는 장치를 포함한다. 각각의 클라이언트 사용자 기기(106-114)는 네트워크(50)를 통해 미디어 서버(202, 204, 206)나 다른 컴퓨팅 사용자 기기들과 상호작용할 수 있도록 적합한 컴퓨팅 또는 프로세싱 장치를 포함한다. 예를 들면, 클라이언트 사용자 기기들(106-114)은 데스크톱 컴퓨터(106), 모바일 전화 또는 스마트폰(108), PDA(personal digital assistant, 110), 랩톱 컴퓨터(112) 및 타블릿 컴퓨터(114)를 포함할 수 있다. 그렇지만, 추가적인 클라이언트 사용자 기기들이 도 1의 시스템(10)에 더 포함될 수 있음은 물론이다. 이러한 미디어 서버들(202, 204, 206) 또는 클라이언트 사용자 기기들(106-114)은 예를 들면, 명령을 처리하는 하나 이상의 컨트롤러, 명령 및 데이터를 저장하는 하나 이상의 메모리, 및 네트워크(50)를 통한 통신을 가능하게 하는 하나 이상의 네트워크 인터페이스를 포함할 수 있다.2, the overall system 10 in accordance with the present invention includes a network 50 that enables communication between the various user devices 106-114 and the media servers 202, 204, do. The network 50 may be a direct or indirect physical communication connection, a mobile connection network, the Internet, an intranet, a local area network (LAN), a wide area network (WAN), a storage area network (SAN) And the like. Each media server 202, 204, 206 includes a suitable computing or processing device to provide computing services for one or more client user devices or media stream playback devices. For example, the media servers 202, 204, and 206 may generate and store media streams such as network cameras, network video recorders (NVRs), digital video recorders (DVRs) Device. Each of the client user devices 106-114 includes a computing or processing device suitable for interacting with the media server 202, 204, 206 or other computing user devices via the network 50. [ For example, the client user devices 106-114 may be a desktop computer 106, a mobile phone or smartphone 108, a personal digital assistant 110, a laptop computer 112 and a tablet computer 114 . However, it goes without saying that additional client user devices may be further included in the system 10 of FIG. These media servers 202, 204, 206 or client user devices 106-114 may include, for example, one or more controllers for processing instructions, one or more memories for storing instructions and data, Lt; RTI ID = 0.0 > and / or < / RTI >

여기서, 몇몇 클라이언트 사용자 기기들(108-114)는 네트워크(50)와 간접적으로 통신한다. 예를 들면, 상기 클라이언트 사용자 기기들(108-110)는 셀 망에 기초한 하나 이상의 기지국(116)과 통신한다. 또한, 클라이언트 사용자 기기들(112-114)은 IEEE 802.11 무선 공유기와 같은 하나 이상의 무선 억세스 포인트들(118)을 통해 통신한다. 이상의 설명들은 예시적인 것이며 각각의 사용자 기기는 적절한 중간 사용자 기기들 또는 네트워크를 통하여, 네트워크(50)와 직접적 또는 간접적으로 통신할 수 있다. 본 발명에서 네트워크(50)는 효율적인 미디어 스트리밍을 가능하게 한다. 특히, 하나 이상의 미디어 서버들(202, 204, 206)은 미디어 스트리밍이 웹소켓 상에서 이루어지도록 지원한다. 하나 이상의 클라이언트 사용자 기기들(106-114)은 미디어 서버(202, 204, 206)가 웹소켓 상에서 미디어 스트림을 지원하는 때를 감지할 수 있다. 미디어 서버(202, 204, 206)가 웹소켓 상에서 미디어가 스트리밍되는 것을 지원할 때, 하나 이상의 클라이언트 사용자 기기들(106-114)은 상기 미디어 서버(202, 204, 206)에 웹소켓 연결을 수립하고 상기 선택된 미디어의 대상과 스트림 내의 위치를 나타내는 초기 요청을 전송할 수 있다. 각각의 클라이언트 사용자 기기들(106-114)은 미디어 서버(202, 204, 206)로부터 제공되는 미디어 스트림의 세그먼트들을 순차적으로 수신한다.Here, some client user devices 108-114 communicate with the network 50 indirectly. For example, the client user devices 108-110 communicate with one or more base stations 116 based on a cell network. In addition, the client user devices 112-114 communicate via one or more wireless access points 118, such as an IEEE 802.11 wireless router. The above description is exemplary and each user device may communicate directly or indirectly with the network 50, via suitable intermediate user equipments or networks. In the present invention, the network 50 enables efficient media streaming. In particular, one or more media servers 202, 204, 206 support media streaming to be performed on a web socket. One or more client user devices 106-114 may detect when the media server 202, 204, 206 supports a media stream on a web socket. One or more client user devices 106-114 establish a web socket connection to the media server 202,204, 206 and, when the media server 202,204, 206 supports media streaming on a web socket, An initial request may be sent indicating the object of the selected media and the location in the stream. Each of the client user devices 106-114 sequentially receives segments of the media stream provided by the media server 202, 204,

도 2와 같이 사용자 기기들(106-114)과 미디어 미디어 서버(202, 204, 206) 간의 통신을 위해서는 각각 네트워크 인터페이스를 구비하고, 기타 네트워크 인터페이스로의 데이터의 교환을 위한 추가적인 모듈들을 구비할 필요가 있다. 도 3은 기기들 간의 통신을 위해 계층적으로 정의되는 OSI(Open System Interconnection) 7계층 모델과 TCP/IP(transmission control protocol/Internet protocol) 4계층 모델을 나타낸다.As shown in FIG. 2, each of the user devices 106-114 and the media media servers 202, 204, and 206 is provided with a network interface and additional modules for exchanging data with other network interfaces . FIG. 3 shows an OSI (Open System Interconnection) 7-layer model and a TCP / IP 4-layer model that are hierarchically defined for communication between devices.

TCP/IP 모델은 네트워크 내에서 연결 처리를 설명하기 위한, 고전적인 OSI 모델(7개 계층)보다 간략화된 모델로서 연결 처리를 4개의 계층으로 분류한다. 상기 4개의 계층은 네트워크 인터페이스 계층(61), 인터넷 계층(62), 전송 계층(63) 및 어플리케이션 계층(64)이다. TCP/IP 모델에서의 각각의 계층은 유사한 기능과 역할의 측면에서 상기 OSI 모델과 연관된다. 예를 들어, 상기 네트워크 인터페이스 계층(61)은 OSI 모델에서는 물리층(41) 및 데이터 링크층(42)에 대응된다. 상기 인터넷 계층(62)은 OSI 모델의 네트워크층(43)에 대응되고, 상기 전송 계층(63)은 OSI 모델의 전송층(44)에 대응된다. 또한, 어플리케이션 계층(64)은 OSI 모델의 세션층(45), 표현층(46) 및 어플리케이션층(47)을 포함한 그룹에 대응된다. 이러한 TCP/IP 모델은 RFC 1122 문서에 구체적으로 정의되어 있다.The TCP / IP model is a simpler model than the classical OSI model (seven layers) for describing connection processing in a network, and classifies connection processing into four layers. The four layers are a network interface layer 61, an internet layer 62, a transport layer 63, and an application layer 64. Each layer in the TCP / IP model is associated with the OSI model in terms of similar functions and roles. For example, the network interface layer 61 corresponds to the physical layer 41 and the data link layer 42 in the OSI model. The Internet layer 62 corresponds to the network layer 43 of the OSI model and the transport layer 63 corresponds to the transport layer 44 of the OSI model. The application layer 64 also corresponds to a group comprising the session layer 45, the presentation layer 46 and the application layer 47 of the OSI model. These TCP / IP models are specifically defined in the RFC 1122 document.

상기 TCP/IP 모델에서, 네트워크 인터페이스 계층(61)은 물리 연결 매체와 인터페이스하고, LTE(Long-Term Evolution), 802.11(WLAN), 802.3(이더넷) 또는 다른 적절한 프로토롤을 구현한다. 상기 인터넷 계층(62)은 사용자 기기가 LAN이나 WAN 내에서 상기 인터넷 계층들을 연결하기 위한 서비스를 제공한다. 상기 인터넷 계층(62)은 IPv4, IPv6나 다른 적절한 프로토콜을 구현할 수 있다. 상기 전송 계층(63)은 사용자 기기들 간의 엔드-투-엔드 연결을 수립하기 위하여 사용된다. 전송 프로토콜의 대표적인 예는 TCP 및 UDP(user datagram protocol)이다. 또한, 상기 어플리케이션 계층(64)은 일반적으로 HTTP, RTP 및 FTP(File Transfer Protocol)와 같은 통신 프로토콜을 구현한다. 여기서, HTTP는 VOD와 같은 안정적 배포 컨텐츠를 위해 일반적으로 사용되고, RTP는 실시간 컨텐츠 스트리밍을 위하여 사용되며, FTP는 대용량 저장 데이터를 비동기적으로 전송하기 위하여 사용된다. 본 발명에서, "실시간"의 의미는 미디어 서버와 미디어 스트림 재생 장치간에 시차를 최소화한, 미디어 스트림 재생 장치에서의 미디어 재생을 의미한다.In the TCP / IP model, the network interface layer 61 interfaces with the physical connection medium and implements Long-Term Evolution (LTE), 802.11 (WLAN), 802.3 (Ethernet) The Internet layer 62 provides a service for the user equipment to connect the Internet layers within a LAN or WAN. The Internet layer 62 may implement IPv4, IPv6, or other suitable protocols. The transport layer 63 is used to establish an end-to-end connection between user devices. Typical examples of transport protocols are TCP and UDP (user datagram protocol). In addition, the application layer 64 generally implements communication protocols such as HTTP, RTP, and FTP (File Transfer Protocol). Here, HTTP is generally used for stable distribution contents such as VOD, RTP is used for real-time content streaming, and FTP is used for asynchronously transmitting mass storage data. In the present invention, the term "real time" means media reproduction in a media stream reproducing apparatus with minimized time difference between the media server and the media stream reproducing apparatus.

도 4는 본 발명의 일 실시예에 따른 미디어 스트림 재생 장치(100)의 구성을 도시한 블록도이다. 미디어 스트림 재생 장치(100)는 도 2에서 사용자 기기들 중에서 어느 하나로 구현될 수 있으며, 미디어 서버로부터 전송되는 미디어 스트림을 수신하여 웹브라우저 상에서 재생한다. 미디어 스트림 재생 장치(100)는 네트워크 인터페이스(120), 전송 모듈(130), 웹소켓 모듈(135), 스트리밍 모듈(140), 포맷 변환기(150), 브라우저 내장 재생기(160), 웹브라우저(170) 및 출력 장치(180)를 포함하여 구성될 수 있다. 여기서, 웹브라우저(170)는 미디어 스트림 재생 장치에 내장된 운영 체제(OS, operating system)(미도시됨)에 근접한 레벨의 어플리케이션일 수 있다. 또한, 스트리밍 모듈(140) 및 포맷 변환기(150)는 상기 웹브라우저(170) 및 운영 체제에 의해 호스팅되는, 예를 들어 자바 스크립트에 의해 구현되는 자바 어플리케이션이고, 브라우저 내장 재생기(160)는 바람직하게는 HTML5에서 지원하는 영상 및 음성의 표준 출력 기능을 갖는 모듈이다. 또한, 네트워크 인터페이스(120), 전송 모듈(130) 및 웹소켓 모듈(135)은 네트워크 통신을 위한 통신 모듈에 속하며, 장치 구현의 관점에서는 운영 체제(OS) 커널에 해당된다.FIG. 4 is a block diagram showing a configuration of a media stream reproducing apparatus 100 according to an embodiment of the present invention. The media stream playback apparatus 100 may be implemented as any one of the user devices in FIG. 2, and receives a media stream transmitted from the media server and plays the media stream on a web browser. The media stream playback apparatus 100 includes a network interface 120, a transmission module 130, a web socket module 135, a streaming module 140, a format converter 150, a browser built-in player 160, a web browser 170 And an output device 180. The output device 180 may be a display device. Here, the web browser 170 may be an application at a level close to an operating system (OS) (not shown) built in the media stream reproducing apparatus. In addition, streaming module 140 and format converter 150 are Java applications implemented by, for example, JavaScript, hosted by the web browser 170 and the operating system, and the browser-embedded player 160 is preferably Is a module having standard output function of video and audio supported by HTML5. Also, the network interface 120, the transmission module 130, and the web socket module 135 belong to a communication module for network communication and correspond to an operating system (OS) kernel in terms of device implementation.

도 4를 참조하면, 먼저 네트워크 인터페이스(120)는 미디어 스트림 재생 장치(100)와 미디어 서버(200)간의 데이터 송수신을 담당하기 위해 물리 연결 매체와 인터페이스를 담당한다. 네트워크 인터페이스(120)는 도 3의 TCP/IP 모델에서 네트워크 인터페이스(61)에 대응된다. 상기 네트워크 인터페이스(120)에서 사용되는 물리 연결 매체는 LTE(Long-Term Evolution), 802.11(WLAN), 802.15.3(WPAN) 등과 같은 무선 매체와, 802.3(이더넷)와 같은 무선 매체를 포함할 수 있다.Referring to FIG. 4, the network interface 120 interfaces with a physical connection medium to transmit and receive data between the media streaming apparatus 100 and the media server 200. The network interface 120 corresponds to the network interface 61 in the TCP / IP model of FIG. The physical connection medium used in the network interface 120 may include wireless media such as Long-Term Evolution (LTE), 802.11 (WLAN), 802.15.3 (WPAN), etc. and wireless media such as 802.3 have.

전송 모듈(130)은 미디어 스트림 재생 장치(100)와 미디어 서버(200) 간에 데이터를 송수신하기 위한 전송 제어 기능을 담당하며 도 3의 TCP/IP 모델에서 전송 계층(63)에 대응된다. 구체적으로 전송 모듈(130)은 미디어 스트림 재생 장치(100)와 미디어 서버(200) 간에 전송 레벨 계층의 통신 연결을 수립하고, 안정적인 데이터의 송수신을 위한 전송 오류 복구, 데이터 패킷의 순차 전달 등을 담당한다. 특히, 본 발명에서 전송 모듈(130)은 미디어 스트림 재생 장치(100)와 미디어 서버(200)간의 웹소켓 연결을 전송 계층 레벨 상에서 보장하기 위한, TCP 또는 UDP 프로토콜을 지원한다. TCP는 컨텐츠를 연결 지향으로 안정적으로 배포하기 위한 프로토콜이며, UDP는 낮은 오버헤드를 갖는 끊김없는 컨텐츠의 배포를 제공하기 위한 프로토콜이다. 본 발명에서 웹소켓 프로토콜 패킷은 안정적 전송을 위해 TCP가 이용될 수 있지만 낮은 오버헤드 전송을 위해 UDP가 이용될 수도 있다.The transmission module 130 performs a transmission control function for transmitting and receiving data between the media stream reproducing apparatus 100 and the media server 200 and corresponds to the transport layer 63 in the TCP / IP model of FIG. Specifically, the transmission module 130 establishes a communication connection of a transport level layer between the media stream reproducing apparatus 100 and the media server 200, and performs transmission error recovery for transmission and reception of stable data, sequential delivery of data packets, and the like do. In particular, in the present invention, the transmission module 130 supports a TCP or UDP protocol for guaranteeing a Web socket connection between the media stream playback apparatus 100 and the media server 200 at the transport layer level. TCP is a protocol for reliably distributing content in a connection-oriented manner, and UDP is a protocol for providing seamless distribution of content with low overhead. In the present invention, a Web socket protocol packet may be used for reliable transmission, but UDP may be used for low overhead transmission.

한편, 웹소켓 모듈(135)은 상기 전송 계층 레벨의 연결을 기초로 상기 미디어 서버와 핸드쉐이크를 통해 웹소켓 연결을 수립한 후 상기 수립된 웹소켓 연결을 지속적으로 유지하면서, 상기 미디어 서버와 웹소켓 패킷을 송수신한다. 웹소켓 모듈(135)은 전송 모듈(130) 내에 구현될 수도 있고 전송 모듈(130)과 별도로 전송 모듈(130)의 상위 계층으로 구현될 수도 있다.Meanwhile, the web socket module 135 establishes a web socket connection through the handshake with the media server based on the connection at the transport layer level, and maintains the established web socket connection, Send and receive socket packets. The web socket module 135 may be implemented in the transmission module 130 or may be implemented as an upper layer of the transmission module 130 separately from the transmission module 130.

상기 웹소켓은 종래의 하프-듀플렉스 HTTP 통신을 개선하여 TCP 연결을 통해 양방향, 완전한 듀플렉스 통신 채널을 가능하게 하는 프로토콜이다. 상기 웹소켓 프로토콜은 IETF(Internet Engineering Task Force) 표준화 기구에 의해 RFC6455로서 표준화되었다. 다만, 상기 표준화된 웹소켓 프로토콜은 일반적인 프로토콜로서 의도된 것이며 사용자가 희망하는 확장적인 기능들은 결여되어 있으며, 새로운 기능들을 지원하기 위해 웹브라우저 내에서 자바 스크립트 등을 통해 상기 프로토콜이 확장되는 것을 허용한다.The web socket is a protocol that improves conventional half-duplex HTTP communication to enable a bidirectional, complete duplex communication channel over a TCP connection. The web socket protocol was standardized as RFC6455 by the Internet Engineering Task Force (IETF) standardization organization. However, the standardized Web socket protocol is intended as a general protocol, lacks extensive functions desired by the user, and allows the protocol to be extended through JavaScript or the like in a web browser to support new functions .

웹소켓 연결은 두 기기 사이의 기존의 전송 계층(TCP 또는 UDP) 연결의 상부에 위치하므로, 웹 소켓 연결을 사용하기 위해서는, TCP 전송 연결이 두 기기 사이에서 먼저 수립되어야 한다. 일단 웹소켓 연결이 예를 들어, 3-way 핸드쉐이크(hand-shake) 과정을 통해 미디어 스트림 재생 장치(100)와 미디어 서버(200)간에 수립되면, 웹소켓 통신은 웹소켓 패킷들을 전송함에 의해 수행된다.Since the web socket connection is located on top of the existing transport layer (TCP or UDP) connection between the two devices, in order to use the web socket connection, a TCP transport connection must first be established between the two devices. Once the web socket connection is established between the media stream playback apparatus 100 and the media server 200 via, for example, a 3-way handshake process, the web socket communication may be initiated by sending web socket packets .

다음의 도 5는 웹소켓 연결을 통한 데이터의 송수신 과정의 일 예를 보여준다. 이러한 웹소켓 연결은 HTML5 표준인 웹소켓 프로토콜에 따라 이루어진다. 특히, 상기 웹소켓 연결은 양방향 통신을 지속적으로 지원하기 때문에, 네트워크 카메라의 웹서버와 사용자 단말 장치의 웹브라우저 간에 연결이 끊기지 않고 계속적으로 데이터를 송수신할 수 있도록 할 수 있다.FIG. 5 shows an example of a process of transmitting and receiving data through a web socket connection. These Web socket connections are made according to the Web Socket protocol, the HTML5 standard. In particular, since the web socket connection continuously supports bi-directional communication, data can be continuously transmitted and received between the web server of the network camera and the web browser of the user terminal without being disconnected.

도 5를 참조하면 먼저, 미디어 스트림 재생 장치(100)는 스트림 서버(200)에 TCP/IP 연결 요청 메시지(TCP/IP connection request)을 전송하고, 스트림 서버(200)가 이를 수락하여 TCP 응답 메시지(SYN-ACK)를 미디어 스트림 재생 장치(100)에 전송하면 TCP/IP 연결이 수립된다. TCP 전송 연결은 로컬 TCP 소켓 및 원격 TCP 소켓의 페어(pair)에 의해 형성될 수 있는데, 각각의 TCP 소켓은 적어도 포트 번호와 IP 주소와 같은 식별자에 의하여 정의된다. 물론, 이러한 TCP/IP 기반의 연결 대신에 양자간에 UDP/IP 기반의 연결을 수립할 수도 있다.5, the media stream reproducing apparatus 100 transmits a TCP / IP connection request message (a TCP / IP connection request message) to the stream server 200, and the stream server 200 accepts the TCP / (SYN-ACK) to the media stream playback apparatus 100, a TCP / IP connection is established. A TCP transport connection can be formed by a pair of local TCP sockets and remote TCP sockets, each of which is defined by an identifier, such as at least a port number and an IP address. Of course, instead of these TCP / IP-based connections, you can also establish a UDP / IP-based connection between them.

이 후, 미디어 스트림 재생 장치(100)와 스트림 서버(200) 간에 핸드쉐이크 과정을 통해 양자간에 웹소켓 연결이 수립되면, 그 이후에는 양자간의 지속적인 데이터의 송수신이 가능해진다. 즉, 미디어 스트림 재생 장치(100)는 스트림 서버(200)에 통해 미디어 스트리밍 요청을 전송 웹소켓 패킷(socket.send)의 형태로 전송하고, 스트림 서버(200)는 미디어 스트림 재생 장치(100)에 미디어 스트림을 응답 웹소켓 패킷(socket.onMessage)의 형태로 전송한다. 이러한 과정은 미디어 스트림 전송이 중지되거나 완료될 때까지 지속적으로 양자간에 이루어질 수 있다.Thereafter, when a web socket connection is established between the media stream playback apparatus 100 and the stream server 200 through a handshake process, data can be continuously transmitted and received between the media stream playback apparatus 100 and the stream server 200 thereafter. That is, the media stream reproducing apparatus 100 transmits a media streaming request in the form of a transmitted web socket packet (socket.send) to the stream server 200, and the stream server 200 transmits the media streaming request to the media stream reproducing apparatus 100 Sends the media stream in the form of a response web socket packet (socket.onMessage). This process can be done continuously between media streams until transmission is stopped or completed.

도 6은 이와 같이 미디어 스트림 재생 장치(100)와 스트림 서버(200) 간에 송수신되는 웹소켓 패킷의 구체적인 구조를 도시한다. 이와 같이, 웹소켓의 시작 부분은 웹소켓 패킷에 포함된 데이터 구성에 관한 메타데이터 정보를 포함한다. 또한 웹소켓 패킷의 마지막 부분은 실제의 페이로드 데이터(어플리케이션 수준의 데이터)를 포함한다. 웹소켓 패킷 내의 페이로드 데이터의 위치는 페이로드 데이터의 크기와, 마스킹 키가 사용되는지 여부에 따라 달라진다. 웹소켓 패킷들은 웹소켓 통신에서 프레임화되는 통신 데이터의 기본 단위들이다. 기본적으로 웹소켓 프로토콜은 고정된 80 포트를 사용할 수 있지만 반드시 이에 한하지는 않는다. 예를 들어, 전송 레벨 보안(TLS)를 통해 터널링되는 웹소켓 연결을 위해서는 443 포트가 이용될 수도 있다.FIG. 6 shows a specific structure of a web socket packet transmitted and received between the media stream reproducing apparatus 100 and the stream server 200 as described above. As such, the beginning of the web socket includes metadata information about the data organization contained in the web socket packet. The last part of the web socket packet also contains the actual payload data (application level data). The location of the payload data in the web socket packet depends on the size of the payload data and whether a masking key is used. Web socket packets are basic units of communication data framed in Web socket communication. By default, the Web socket protocol can use a fixed 80 port, but this is not necessarily the case. For example, port 443 may be used for Web socket connections that are tunneled through Transport Level Security (TLS).

도 3의 TCP/IP 모델에서, 상기 웹소켓 프로토콜은 어플리케이션 계층(64) 및 전송 계층(63) 사이에 위치한다. 즉, 웹소켓 프로토콜은 전송 계층(63)에 속하는 TCP나 UDP와, 어플리케이션(62)에 속하는 RTP/RTSP의 사이에 위치한다. 이를 도 4와 관련하여 설명하면, 도 4의 전송 모듈(130)은 기본적으로 TCP나 UDP와 같은 종래의 전송 계층 프로토콜 위에 웹 소켓이 프로토콜이 스택된 구조로 이루어진다.In the TCP / IP model of FIG. 3, the Web Socket protocol is located between the application layer 64 and the transport layer 63. That is, the Web socket protocol is located between the TCP or UDP belonging to the transport layer 63 and the RTP / RTSP belonging to the application 62. Referring to FIG. 4, the transmission module 130 of FIG. 4 basically has a structure in which a Web socket is stacked on a conventional transport layer protocol such as TCP or UDP.

상기 웹 소켓 통신은 적어도 상위의 어플리케이션에 대해서는 완전한 듀플렉스 통신을 제공하고, 하위의 TCP 또는 UDP 전송의 연결을 유지하면서 오버헤드를 감소시키는 것에 의해 웹브라우저와 웹서버 간의 통신을 향상시킨다. 먼저, 하프 듀플렉스이고 클라이언트 기기와 서버 기기 간에 선택적으로 송수신되는 HTTP를 통한 통신과 달리, 웹소켓을 통한 통신은 완전한 듀플렉스이고 동시에 송수신될 수 있다. 또한, 웹소켓을 통해 통신할 때 단위 메시지 당 적은 헤더 정보가 전송되어 전송시 오버헤드를 감소시킨다. 그리고, 상기 제1 기기로부터 제2 기기를 폴링하기 위해 HTTP 요청 및 응답 메시지를 교환하지 않고도 제1 기기 및 제2 기기 간의 하부 TCP 계층 연결을 유지할 수 있게 된다.The web socket communication improves communication between the web browser and the web server by providing full duplex communication for at least higher applications and reducing overhead while maintaining the connection of the underlying TCP or UDP transmission. First, unlike HTTP, which is half duplex and selectively transmitted and received between a client device and a server device, communication over a web socket is fully duplex and can be transmitted and received at the same time. In addition, when communicating over a web socket, less header information is transmitted per unit message, thereby reducing transmission overhead. In order to poll the second device from the first device, the lower TCP layer connection between the first device and the second device can be maintained without exchanging HTTP request and response messages.

다시 도 4를 참조하면, 전송 모듈(130)에서 TCP/IP(또는 UDP/IP) 및 웹소켓 연결의 수립이 이루어지면 미디어 스트림 재생 장치(100)와 미디어 서버(200) 간에는 웹소켓 패킷을 지속적으로 송수신할 수 있는 상태가 된다. 전송 모듈(130)은 미디어 서버(200)로부터 전송된 웹소켓 패킷 형태로 패킷화된 미디어 스트림을 수신하고 이를 스트리밍 모듈(140)로 전달하거나, 스트리밍 모듈(140)로부터 전달되는 명령을 웹소켓 패킷 형태로 패킷화하여 미디어 서버(200)로 전송한다.Referring again to FIG. 4, when the TCP / IP (or UDP / IP) and Web socket connection are established in the transmission module 130, a web socket packet is continuously transmitted between the media stream reproducing apparatus 100 and the media server 200 Receiving state. The transmission module 130 receives a packetized media stream in the form of a web socket packet transmitted from the media server 200 and transmits the packet to the streaming module 140 or transmits a command transmitted from the streaming module 140 to a web socket packet And transmits the packets to the media server 200.

스트리밍 모듈(140)은, 웹브라우저(170)의 요청에 따라 미디어 서버(200)에 미디어 스트림를 실시간 전송 프로토콜로 전송할 것을 요청하고, 미디어 서버(200)로부터 상기 미디어 스트림을 포함하는 실시간 전송 프로토콜 패킷을 수신하면서, 상기 미디어 스트림의 재생을 실시간 스트리밍 프로토콜에 따라 제어한다.The streaming module 140 requests the media server 200 to transmit the media stream in a real time transmission protocol according to a request from the web browser 170 and transmits a real time transmission protocol packet including the media stream from the media server 200 And controls reproduction of the media stream in accordance with a real-time streaming protocol.

이를 위해, 스트리밍 모듈(140)은 예를 들어, 기존에 알려진 RTP(Realtime Transport Protocol) 및 RTSP (Real Time Steaming Protocol)를 이용할 수 있다. RTP는 실시간 또는 저장된 영상을 전송하는 표준으로써, MJPEG, MPEG-4, H.264, H.265 등의 영상을 전송할 수 있는 프로토콜이다. For this purpose, the streaming module 140 may use, for example, a known Real Time Transport Protocol (RTP) and a Real Time Steaming Protocol (RTSP). RTP is a standard for transmitting real-time or stored images and is a protocol for transmitting images such as MJPEG, MPEG-4, H.264, and H.265.

도 7은 RTP 프로토콜의 구체적인 데이터 구조를 도시한다. 도시된 바와 같이, RTP 프로토콜은 헤더 및 페이로드로 구분되며, 헤더에는 RTP 데이터 패킷의 전송 순서를 나타내는 시퀀스 번호(sequence number), 미디어의 표현하는 시간의 동기화를 위한 시간 스탬프(Timestamp), 데이터 스트림을 위한 동기화 소스를 나타내는 SSRC 식별자(Synchronization source identifier) 등이 기록된다. 이러한 RTP를 기반으로한 미디어 스트림의 패킷의 크기가 제한적이므로 상기 미디어 스트림은 소정의 크기(예: 1.5kByte)로 분할되어 전송될 수 있다(packetization). 이렇게 분할되어 전송된 패킷들은 스트리밍 모듈(140)이 수신한 후에는 다시 하나의 영상 프레임으로 합쳐지게 된다(depacketization). 또한, 하나의 음성 프레임도 마찬가지로 분할되어 전송될 수도 있지만 음성 프레임의 경우 영상 프레임보다는 데이터량이 적기 때문에 하나의 패킷 당 하나의 음성 프레임이 전송된 수도 있다.Figure 7 shows a specific data structure of the RTP protocol. As shown in the figure, the RTP protocol is divided into a header and a payload. The header includes a sequence number indicating a transmission order of an RTP data packet, a time stamp (Timestamp) An SSRC identifier (Synchronization source identifier) indicating a synchronization source for the mobile station. Since the size of a packet of a media stream based on RTP is limited, the media stream may be divided into a predetermined size (e.g., 1.5 kByte) and then packetized. After the streaming module 140 receives the divided packets, the packets are combined into one video frame (depacketization). In addition, although one voice frame may be divided and transmitted in the same manner, one voice frame may be transmitted per voice frame because the amount of data is smaller than that of the video frame.

또한, RTSP는 실시간 또는 저장된 영상을 수신하기 위하여 미디어 서버(200)(예: 네트워크 카메라)와 미디어 스트림 재생 장치(100) 사이의 네트워크 포트를 설정하고, 재생과 관련된 명령들(Play, Pause, Teardown, Setup, Option, Describe 등)을 제어하기 위한 프로토콜이다. 이 중에서 재생(Play)은 미디어 스트림을 시작하기 위해, 일시정지(Pause)는 시작된 미디어 스트림을 일시 중단하기 위해, 해체(Teardown)는 특정 미디어 세션을 해체/파괴하기 위해 사용되는 명령이다. 또한, 셋업(setup)은 미디어 세션 파라미터들을 설정하기 위해, 옵션(option)은 옵션 메쏘드 기능을 획득하고 추후 다른 버전을 허용하기 위해, 디스크라이브(describe)는 지정된 프로파일로 미디어 파라미터들을 획득하기 위해 사용되는 명령이다.The RTSP also sets a network port between the media server 200 (e.g., a network camera) and the media stream playback apparatus 100 to receive real-time or stored images and provides commands related to playback (Play, Pause, Teardown , Setup, Option, Describe, etc.). Of these, Play is a command used to start a media stream, Pause is used to suspend a media stream that has been started, and Teardown is a command used to disassociate / destroy a specific media session. In addition, a setup is used to set media session parameters, an option to acquire optional method functions, and a disc live to acquire media parameters with a specified profile, .

이와 같이, RTP 프로토콜은 미디어 스트림을 패킷화하여 실제로 전송하는 것을 위한 프로토콜임에 비해, RTSP 프로토콜은 이러한 전송을 시작/종료하거나 이미 전송되고 있는 미디어 스트림의 재생을 제어하기 위한 프로토콜로 사용된다.As described above, the RTP protocol is a protocol for packetizing and actually transmitting a media stream, whereas the RTSP protocol is used as a protocol for starting / ending such transmission or controlling reproduction of a media stream already being transmitted.

상기 스트리밍 모듈(140)은 구체적으로, 도 8에 도시된 바와 같이, 스트리밍 세션 모듈(142), 스트리밍 클라이언트(144), 클라이언트 관리자(146) 및 디패킷화 모듈(148)을 포함하여 구성될 수 있다. 상기 스트리밍 모듈(140)을 구성하는 각각의 요소들(142, 144,146, 148)은 HTML5 표준에서 지원하는 자바 스크립트로 프로그래밍되므로, 스트리밍 모듈(140)의 기능을 웹브라우저(170) 상에서 구현하기 위한 별도의 플러그인은 필요하지 않다.The streaming module 140 may be specifically configured to include a streaming session module 142, a streaming client 144, a client manager 146 and a depacketization module 148, as shown in FIG. have. Each of the elements 142, 144, 146 and 148 constituting the streaming module 140 is programmed with JavaScripts supported by the HTML5 standard. Therefore, the functions of the streaming module 140 are separately Plugin is not required.

스트리밍 세션 모듈(142)은 실시간 전송 프로토콜로 전송되는 미디어 스트림을 안정적으로 수신하기 위해 미디어 서버(200) 사이에 세션을 형성한다. 이에 따라, 전송 모듈(130)은 전송되는 미디어 스트림을 수신하거나 미디어 스트림 재생 장치(100)에서 전송되는 재생 제어 명령을 전송하는 포트 역할을 할 수 있게 된다.The streaming session module 142 forms a session between the media servers 200 to stably receive the media stream transmitted in the real time transmission protocol. Accordingly, the transmission module 130 can receive a media stream to be transmitted or serve as a port for transmitting a playback control command transmitted from the media stream playback apparatus 100.

스트리밍 클라이언트(144)는 클라이언트 관리자(146)의 요청에 따라 새로운 스트리밍 제어를 위한 클라이언트 모듈을 생성하거나 생성된 클라이언트 모듈을 종료한다. 또한, 웹브라우저(170)로부터 요청되는 미디어 서버(200)와의 연결 명령을 수신하거나, 웹브라우저(170)로부터 미디어 스트림의 재생 명령을 수신하여 전송 모듈(130)을 통해 미디어 서버(200)에 해당 명령을 패킷화하여 전송 모듈(130)로 하여금 전송하게 하고, 미디어 서버(200)로부터 전달되는 응답(미디어 스트림)을 전송 모듈(130)을 통해 수신한다. 구체적으로, 스트리밍 클라이언트(144)는 전송 모듈(130) 내의 웹소켓 모듈(135)로부터 RTSP 패킷을 수신하여 처리하는 한편, 스트리밍 세션 모듈(142)은 웹소켓 모듈(135)로부터 수신되는 RTP 패킷을, 데이터 프레임(영상 프레임 또는 음성 프레임)을 생성하기 위해 디패킷화 모듈(148)로 전달한다.The streaming client 144 generates a client module for new streaming control or terminates the generated client module according to a request from the client manager 146. [ It is also possible to receive a connection command with the media server 200 requested from the web browser 170 or receive a media stream playback command from the web browser 170 and transmit the media stream playback command to the media server 200 via the transmission module 130 (Media stream) transmitted from the media server 200 through the transmission module 130. The transmission module 130 receives the response from the media server 200, Specifically, the streaming client 144 receives and processes the RTSP packet from the web socket module 135 in the transmission module 130, while the streaming session module 142 receives the RTP packet received from the web socket module 135 , And passes it to the depacketization module 148 to generate a data frame (video frame or voice frame).

클라이언트 관리자(146)는 웹브라우저(170)의 요청에 따라 스트리밍 클라이언트(144)에서 클라이언트 모듈을 생성하거나, 생성된 클라이언트 모듈을 제거 또는 종료(destroy)한다. 즉, 스트리밍 클라이언트(144)가 동작하기 위한 기초가 되는 클라이언트 모듈의 생성과 종료를 담당한다.The client manager 146 creates a client module in the streaming client 144 or removes or destroys the generated client module according to a request from the web browser 170. In other words, the streaming client 144 is responsible for the creation and termination of the client module as a basis for the operation of the streaming client 144.

디패킷화(Depacketization) 모듈(148)은 스트리밍 클라이인터(144) 로부터 전달되는 미디어 스트림이 분할되어 있는 경우, 이를 순차적으로 버퍼(미도시됨)에 축적하였다가 조립하여(depacketization) 완전한 하나의 프레임으로 생성한다. 물론, 상기 미디어 스트림이 분할되어 있지 않으면 이러한 과정은 생략될 수 있다. 영상 스트림을 구성하는 영상 프레임은 그 크기로 인해 단일의 패킷으로 실어보내기 어렵기 때문에 분할되어 전송되는 것이 일반적이지만, 음성 프레임은 상대적으로 크기가 작기 때문에 단일의 패킷으로 실어보내는 것이 가능할 수 있다.The depacketization module 148 accumulates a media stream delivered from the streaming client 144 in a buffer (not shown) sequentially, and then depacketizes the media stream to form a complete one frame . Of course, this process can be omitted if the media stream is not partitioned. Since video frames that constitute a video stream are difficult to send in a single packet due to their size, they are usually transmitted in a divided manner. However, since voice frames are relatively small in size, they may be transmitted in a single packet.

이와 같이, 스트리밍 모듈(140)에서 생성된 영상 프레임 및 음성 프레임은 포맷 변환기(150)에 제공된다. 포맷 변환기(150)는, MJPEG, MPEG-2, H.264, H.265 등의 다양한 영상 코딩 규격에 따라 부호화된 미디어 스트림(특히, 영상 프레임)의 포맷을 브라우저 내장 재생기(160)가 지원하는 포맷, 예를 들어 HTML5 비디오 태그가 지원하는 MPEG-4, webm, ogg/ogv 등의 포맷으로 변환한다. 물론, 상기 미디어 스트림이 이미 상기 브라우저 내장 재생기(160)가 지원하는 포맷으로 되어 있다고 확인되면, 포맷 변환기(150)는 상기 변환 과정을 스킵한다.As described above, the image frame and the voice frame generated by the streaming module 140 are provided to the format converter 150. Format converter 150 converts the format of a media stream (in particular, an image frame) encoded according to various image coding standards such as MJPEG, MPEG-2, H.264, H.265, Format, for example, MPEG-4, webm, ogg / ogv, etc., which are supported by the HTML5 video tag. Of course, if it is confirmed that the media stream is already in a format supported by the in-browser player 160, the format converter 150 skips the conversion process.

상기 포맷 변환기(150)에서 수행되는 포맷 변환은, 이와 같이 상기 미디어 스트림의 디코드 후 인코드(트랜스코드)를 통한 변환일 수도 있지만, 소스 미디어 스트림의 포맷에 따라서, 컨테이너 생성과 같은 메타데이터 내지 헤더 수준에서의 단순 변환일수도 있다. 이러한 포맷 변환기(150)는 예컨대, HTML5 표준에서 지원하는 자바 스크립트로 프로그래밍될 수 있으며, 이 때에는 포맷 변환기(150)의 기능을 위해 별도의 플러그인은 필요하지 않다.The format conversion performed by the format converter 150 may be a conversion through decode encoding (transcode) of the media stream. However, depending on the format of the source media stream, Level conversion. The format converter 150 may be, for example, programmed with JavaScript, which is supported by the HTML5 standard, without the need for a separate plug-in for the function of the format converter 150 at this time.

포맷 변환기(150)에서 포맷이 변환된 미디어 스트림 또는 포맷이 변환되지 않고 스킵된 미디어 스트림은 브라우저 내장 재생기(160)로 입력된다. 브라우저 내장 재생기(160)는 웹브라우저(170)에 내장된 넌플러그인(non-plugin) 방식의 미디어 재생 모듈로서, 상기 미디어 스트림으로부터 영상 및 음성을 복원하여 웹브라우저(170)에 제공한다. 예컨대, 브라우저 내장 재생기(160)는 간단한 HTML 스크립트만으로 웹브라우저가 제공하는 웹페이지 상에서 영상/음성을 재생할 수 있게 해주는 HTML5 표준의 비디오 태그로 구현될 수 있다. 상기 비디오 태그는 네이티브 태그로서 별도의 외부 프로그램의 도움을 받지않고, 독립적으로 작동되며 크로스 브라우저 환경에 최적화되어 있다.The media stream converted in format converter 150 or the media stream skipped without being formatted is input to the browser built-in player 160. The in-browser player 160 is a non-plugin media playback module built in the web browser 170. The in-browser player 160 restores video and audio from the media stream and provides the video and audio to the web browser 170. [ For example, the browser-based player 160 can be implemented with a video tag of the HTML5 standard, which allows a user to play video / audio on a web page provided by a web browser with only a simple HTML script. The video tag is a native tag and is independently operated without the aid of a separate external program and is optimized for a cross browser environment.

다만, 웹브라우저별로 실제로 채택한 코덱이 다소 상이한데, 마이크로소프트의 Internet Explorer는 H.264, H.265에 기반한 MPEG-4, webm을 지원하고, Firefox나 Opera는 오픈 소스인 Ogg의 Theora 포맷을 채택하고 있다. 미디어 스트림 중에서 영상 프레임에 수반하는 음성 프레임의 경우 별도의 음성 디코더를 이용할수도 있지만, HTML5 비디오 태그는 상기 영상 프레임과 동기화되어 포함되는 소정 포맷(예: AAC, vorbis, mp3 등)의 음성의 디코딩도 아울러 지원한다. 따라서, 사용자는 다음의 표 1에 예시된 바와 같은 간단한 HTML 스크립트의 작성만으로 소스 위치의 미디어 스트림을 재생할 수 있다.However, Microsoft's Internet Explorer supports MPEG-4 and webm based on H.264 and H.265, while Firefox and Opera use Ogg's Theora format, which is open source. . However, the HTML5 video tag may also be used to decode the audio of a predetermined format (e.g., AAC, vorbis, mp3, etc.) included in the video frame in synchronization with the video frame It also supports. Thus, the user can reproduce the media stream at the source location only by creating a simple HTML script as illustrated in Table 1 below.

<!DOCTYPE html>
<html>
<body>

<video width="400" controls>
<source src="mov_bbb.mp4" type="video/mp4">
<source src="mov_bbb.ogg" type="video/ogg">
Your browser does not support HTML5 video.
</video>

</body>
</html>
<! DOCTYPE html>
<html>
<body>

<video width = "400"controls>
<source src = "mov_bbb.mp4" type = "video / mp4">
<source src = "mov_bbb.ogg" type = "video / ogg">
Your browser does not support HTML5 video.
</ video>

</ body>
</ html>

브라우저 내장 재생기(160)는, 상기 HTML 스크립트를 파싱하여 웹브라우저(170)에 임베드되는 영상 및 음성을 제공한다. The browser built-in player 160 parses the HTML script and provides a video and audio embedded in the web browser 170. [

위의 HTML 스크립트에서 비디오의 크기는 "400"으로 설정되어 있으며, 소스 미디어 스트림의 위치는 MPEG-4(mp4)로 포맷된 "mov_bbb.mp4"와 Ogg/Ogv로 포맷된 "mov_bbb.ogg"임을 알 수 있다. 이와 같이 2개의 소스 위치를 포함하는 것은 다양한 웹브라우저에서 재생이 가능하도록 하기 위함이다. 또한, 소스 위치의 미디어 스트림이 HTML5에서 지원하지 않는 포맷인 경우 화면상으로 출력되는 에러 메시지("Your browser does not support HTML5 video.")도 포함되어 있다. 물론, 이러한 HTML 스크립트에는 HTML5에서 지원하는 자바 스크립트를 더 포함하여 영상 재생에 있어서 보다 다양한 속성을 부여할 수도 있다.In the above HTML script, the size of the video is set to "400" and the location of the source media stream is "mov_bbb.mp4" formatted with MPEG-4 (mp4) and "mov_bbb.ogg" formatted with Ogg / Ogv Able to know. The inclusion of the two source locations is intended to enable playback in various web browsers. Also, if the media stream at the source location is in a format that is not supported by HTML5, an on-screen error message ("Your browser does not support HTML5 video.") Is also included. Of course, such HTML script may further include Javascript supported by HTML5, thereby giving more various attributes to the image playback.

브라우저 내장 재생기(160)는 이와 같은 HTML 스크립트를 파싱하여 소스 미디어 스트림(포맷 변환기(150)에 의해 변환된 미디어 스트림)의 위치를 확인하고, 상기 소스 미디어 스트림이 HTML5에서 지원 가능한 포맷인 경우 웹브라우저(170)에 영상 및 음성을 임베드한다.The browser built-in player 160 parses the HTML script to check the location of the source media stream (the media stream converted by the format converter 150), and if the source media stream is a format that can be supported in HTML5, And embeds the video and audio in the video memory 170.

상기 웹브라우저에 임베드된 영상 및 음성이 출력 장치(180)로 전달되어 사용자가 시각/청각으로 인지할 수 있는 영상 및 음성으로서 화면상의 웹페이지에 출력된다. 상기 웹브라우저(170)는 알려진 Internet Explorer, Chrome, Firfox, Safari, Edge Browser 등의 종류를 불문하고 HTML5를 지원하기만 한다면, 플러그인을 지원하지 않는 브라우저여도 무방하다. 상기 출력 장치(180)는 LCD, LED, OLED 등 영상을 물리적으로 표현할 수 있는 디스플레이 장치와, 오디오 리시버, 앰프, 스피커 등의 음성 출력 장치를 포함할 수 있다.The video and audio embedded in the web browser are transmitted to the output device 180 and are output to the web page on the screen as images and sounds that the user can perceive through visual / auditory sense. The web browser 170 may be a browser that does not support a plug-in, as long as it supports HTML5 regardless of the types of Internet Explorer, Chrome, Firfox, Safari, and Edge Browser. The output device 180 may include a display device that can physically represent an image such as an LCD, an LED, and an OLED, and a sound output device such as an audio receiver, an amplifier, and a speaker.

도 9는 네트워크 인터페이스(120)를 통해 스트림 서버(200)와 통신하는 통신 패킷의 구조를 도시한 도면이다. 미디어 스트림(95)에 해당하는 RTP 페이로드에 RTP 헤더(94)가 부가 되면 RTP 패킷이 된다. 상기 RTP 패킷은 웹소켓 페이로드와 같으며 여기에 웹소켓 헤더(93)가 부가되어 웹소켓 패킷이 된다. 상기 웹소켓 패킷은 TCP 페이로드와 같고 여기에 TCP 헤더(92)가 부가되어 TCP 패킷이 된다. 마지막으로 상기 TCP 패킷은 IP 페이로드와 같고 여기에 IP 헤더(91)가 부가되면 최종적으로 통신 패킷, 즉 IP 패킷이 완성된다. 이와 같이 IP 패킷을 완성하는 과정 및 각각의 헤더를 제거하는 과정은 미디어 스트림 재생 장치(100)와 스트림 서버(200)에서 모두 수행된다.9 is a diagram showing the structure of a communication packet for communicating with the stream server 200 via the network interface 120. As shown in FIG. When the RTP header 94 is added to the RTP payload corresponding to the media stream 95, it becomes an RTP packet. The RTP packet is the same as the Web socket payload, and a Web socket header 93 is added to the RTP packet to become a Web socket packet. The Web socket packet is the same as the TCP payload, and a TCP header 92 is added to the Web socket packet to become a TCP packet. Finally, the TCP packet is the same as the IP payload, and when the IP header 91 is added thereto, a communication packet, that is, an IP packet is finally completed. The processes of completing the IP packet and removing the respective headers are performed in both the media stream reproducing apparatus 100 and the stream server 200.

이러한 IP 패킷이 네트워크 인터페이스(120)를 통해 수신되면, IP 헤더(91) 및 TCP 헤더(92)는 전송 모듈(130)에서 처리되고 TCP 페이로드 내지 웹소켓 패킷이 웹소켓 모듈(135)에 전달된다. 웹소켓 모듈(135)은 상기 웹소켓 패킷으로부터 웹소켓 헤더(93)를 처리하여 생성된 RTP 패킷을 스트리밍 모듈(140)로 전달한다. 스트리밍 모듈(140)은 상기 RTP 패킷에서 RTP 헤더(94)를 처리하여 최종적으로 미디어 스트림을 복원하게 된다. 물론, 여기서는 웹소켓 패킷을 전송하기 위한 하부 프로토콜로 TCP를 예시하였으나 상기 TCP 대신에 UDP나 HTTP 터널링을 이용할 수도 있다. 또한, 여기서는 RTP 패킷이 웹소켓 페이로드가 되는 것으로 설명하였으나, RTSP 패킷이 웹소켓 페이로드가 될 수도 있다.When the IP packet is received through the network interface 120, the IP header 91 and the TCP header 92 are processed by the transmission module 130 and a TCP payload or web socket packet is transmitted to the web socket module 135 do. The web socket module 135 processes the web socket header 93 from the web socket packet and transmits the generated RTP packet to the streaming module 140. The streaming module 140 processes the RTP header 94 in the RTP packet to finally restore the media stream. Of course, TCP is exemplified as a sub protocol for transmitting a web socket packet, but UDP or HTTP tunneling may be used instead of the TCP. Although the RTP packet is described as a Web socket payload, the RTSP packet may be a Web socket payload.

이상의 도 4와 같은 미디어 스트림 재생 장치(100)에 있어서, 미디어 스트림 재생 장치(100)와 미디어 서버(200)간의 통신은 HTML5 기반의 웹소켓 프로토콜을 통해 이루어지기 때문에, RTP/RTSP 송수신 제어를 담당하는 스트리밍 모듈(140), 영상/음성의 포맷 변환을 담당하는 포맷 변환기(150)도 모두 HTML5에서 지원되는 자바 스크립트 코드에 의해 구현될 수 있다. 따라서, 종래와 같이 액티브 엑스나 NPAPI와 같은 플러그인을 별도로 설치하지 않고도 미디어의 실시간 스트리밍 및 재생이 웹브라우저 내에서 구현될 수 있는 것이다.In the media stream reproducing apparatus 100 shown in FIG. 4, since the communication between the media stream reproducing apparatus 100 and the media server 200 is performed through the HTML5-based web socket protocol, the RTP / RTSP transmission / And a format converter 150 for converting a format of a video / audio are all implemented by JavaScript code supported in HTML5. Accordingly, real-time streaming and playback of media can be implemented in a web browser without separately installing a plug-in such as an ActiveX or NPAPI as in the prior art.

본 발명의 일 실시예에 따라 RTSP 제어를 위한 웹소켓 프로그램을 자바 스크립트로 구현하면 예를 들어 다음의 표 2 및 3과 같은 의사 코드로 표현될 수 있다(표 3은 표 2에서 계속된 내용임).According to an embodiment of the present invention, a web socket program for RTSP control can be expressed as a pseudo code as shown in Tables 2 and 3, for example, as shown in Table 3 below ).

var META = 0,
VIDEO = 1,
AUDIO = 2,
AUDIO_BACKUP = 3,
RTCP_VIDEO = 4;
RTCP_AUDIO = 5;
RTCP_META = 6;

var RtspClient = function () {
// RTSP Client
// RTSP Command Parsing
// OPTIONS, TEARDOWN, GET_PARAMETERS, SET_PARAMETERS, DESCRIBE, SETUP, PLAY, STOP
var CommandConstructor = function (method, requestURL, extHeader) {
switch (method) {
case 'OPTIONS':
// OPTIONS Reaction
case 'TEARDOWN':
// TEARDOWN Reaction
case 'GET_PARAMETER':
// GET_PARAMETER Reaction
case 'SET_PARAMETERS':
// SET_PARAMETERS Reaction
case 'DESCRIBE':
// DESCRIBE Reaction
case 'SETUP':
// SETUP Reaction
case 'PLAY':
// PLAY Reaction
case 'PAUSE':
// PAUSE Reaction
default:
break;
}
isReceive = false;
return sendMessage;
};
var META = 0,
VIDEO = 1,
AUDIO = 2,
AUDIO_BACKUP = 3,
RTCP_VIDEO = 4;
RTCP_AUDIO = 5;
RTCP_META = 6;

var RtspClient = function () {
// RTSP Client
// RTSP Command Parsing
// OPTIONS, TEARDOWN, GET_PARAMETERS, SET_PARAMETERS, DESCRIBE, SETUP, PLAY, STOP
var CommandConstructor = function (method, requestURL, extHeader) {
switch (method) {
case 'OPTIONS':
// OPTIONS Reaction
case 'TEARDOWN':
// TEARDOWN Reaction
case 'GET_PARAMETER':
// GET_PARAMETER Reaction
case 'SET_PARAMETERS':
// SET_PARAMETERS Reaction
case 'DESCRIBE':
// DESCRIBE Reaction
case 'SETUP':
// SETUP Reaction
case 'PLAY':
// PLAY Reaction
case 'PAUSE':
// PAUSE Reaction
default:
break;
}
isReceive = false;
return sendMessage;
};

var parseDescribeResponse = function (message1) {
// DESCRIBE Operation
// SDP Parsing
return SDPData;
}
var parseRtspResponse = function (message1) {
// RTSP Response Operation
// Error or OK
return RtspResponseData;
}
var formDigestAuthHeader = function (stringMessage, method) {
// Authentication
};
var RtspResponseHandler = function (stringMessage) {
// RTSP Response Handler
// Error Code Handling
};
var RtpDataHandler = function (rtspinterleave, rtpheader, rtpPacketArray) {
// RTP Data Handling
// Depacketization
};
var connectionCbFunc = function (type, message) {
// Connection Callback
};
module.SetMetaCallback = function (metaCallbackFunc) {
// Metadata Callback
};
module.SetH264VideoCallback = function (videoCallbackFunc) {
// H.264 Callback
};
module.SetH265VideoCallback = function (videoCallbackFunc) {
// H.265 Callback
};
module.SetMjpegVideoCallback = function (videoCallbackFunc) {
// MJPEG Callback
};
module.SetG711AudioCallback = function (audioCallbackFunc) {
// G.711 Audio Callback
};
module.SetG726AudioCallback = function (audioCallbackFunc) {
// G.726 Audio Callback
};
module.SetAACAudioCallback = function (audioCallbackFunc) {
// AAC Audio Callback
};
...
return module;
};
var parseDescribeResponse = function (message1) {
// DESCRIBE Operation
// SDP Parsing
return SDPData;
}
var parseRtspResponse = function (message1) {
// RTSP Response Operation
// Error or OK
return RtspResponseData;
}
var formDigestAuthHeader = function (stringMessage, method) {
// Authentication
};
var RtspResponseHandler = function (stringMessage) {
// RTSP Response Handler
// Error Code Handling
};
var RtpDataHandler = function (rtspinterleave, rtpheader, rtpPacketArray) {
// RTP Data Handling
// Depacketization
};
var connectionCbFunc = function (type, message) {
// Connection Callback
};
module.SetMetaCallback = function (metaCallbackFunc) {
// Metadata Callback
};
module.SetH264VideoCallback = function (videoCallbackFunc) {
// H.264 Callback
};
module.SetH265VideoCallback = function (videoCallbackFunc) {
// H.265 Callback
};
module.SetMjpegVideoCallback = function (videoCallbackFunc) {
// MJPEG Callback
};
module.SetG711AudioCallback = function (audioCallbackFunc) {
// G.711 Audio Callback
};
module.SetG726AudioCallback = function (audioCallbackFunc) {
// G.726 Audio Callback
};
module.SetAACAudioCallback = function (audioCallbackFunc) {
// AAC Audio Callback
};
...
return module;
};

도 10은 도 3의 미디어 스트림 재생 장치(100)와 통신하는 미디어 서버(200)의 구성을 도시한 블록도이다. 미디어 서버(200)는 네트워크 인터페이스(220), 웹서버(230), 미디어 서버(240), 미디어 스토리지(250)를 포함하며, 미디어 인코더(260)와 캡쳐 장치(270)를 더 포함할 수 있다.10 is a block diagram showing the configuration of the media server 200 that communicates with the media stream playback apparatus 100 of FIG. The media server 200 includes a network interface 220, a web server 230, a media server 240, and a media storage 250, and may further include a media encoder 260 and a capture device 270 .

캡쳐 장치(270)는 입력되는 영상과 음성을 전기적인 신호(아날로그 신호 또는 디지털 신호)의 형태로 변환하고 영상 신호 및 음성 신호를 생성하여 미디어 인코더(260)에 전달한다. 미디어 인코더(260)는 포맷 변환기(150)에 대응되는 요소로서 입력된 영상 신호를 MJPEG, MPEG-4, H.264, H.265 등의 영상 코딩 규격에 따라 부호화하는 영상 인코더를 적어도 포함한다. 마찬가지로, 미디어 인코더(260)는 입력된 음성 신호를 MP3, G.711, G.726, AC3, DTS, FLAC, AAC 등 음성 코딩 규격에 따라 부호화하는 음성 인코더를 더 포함할 수 있다.The capture device 270 converts the input video and audio into an electrical signal (analog signal or digital signal), generates a video signal and a voice signal, and transmits the video signal and the audio signal to the media encoder 260. The media encoder 260 includes at least a video encoder that encodes the input video signal in accordance with a video coding standard such as MJPEG, MPEG-4, H.264, and H.265 as a component corresponding to the format converter 150. Similarly, the media encoder 260 may further include a voice encoder for encoding the input voice signal according to a voice coding standard such as MP3, G.711, G.726, AC3, DTS, FLAC, and AAC.

이와 같은 과정을 통해, 미디어 인코더(260)에서 생성되는 미디어 스트림은 미디어 스토리지(250)에 저장된다. 미디어 스토리지(250)는 휘발성, 비휘발성 매체인지를 불문하며, 자기장 저장 매체, 광 저장 매체, 하드디스크 드라이브, SSD(Solid State Drive), 플래시 메모리 등 매체의 물리적 종류를 불문한다. 미디어 스토리지(250)는 미디어 인코더(260)에서 생성된 미디어 스트림을 장기간 저장하거나 미디어 서버(240)의 스트리밍을 지원하기 위한 용도로 일시적으로 저장할 수도 있다.In this way, the media stream generated by the media encoder 260 is stored in the media storage 250. The media storage 250, regardless of whether it is a volatile or nonvolatile medium, may be any kind of physical medium such as a magnetic storage medium, an optical storage medium, a hard disk drive, a solid state drive (SSD) The media storage 250 may store the media stream generated by the media encoder 260 for a long time or temporarily for the purpose of supporting the streaming of the media server 240. [

미디어 서버(240)는 미디어 스토리지(250)로부터 제공되는 미디어 스트림을 네트워크 상에서 전송할 수 있는 미디어 스트림의 형태로 변환한다. 이를 위하여, 미디어 서버(240)는 RTP/RTSP 프로토콜을 지원한다. 예를 들어, 미디어 서버(240)는 미디어 스트림 재생 장치(100)로부터 전달되는 RTSP 패킷에 기초하여, RTP 패킷을 생성하고 미디어 스트림 재생 장치(100)로의 전송을 제어한다. 이러한 RTP 패킷은 도 6에 도시된 바와 같이 구성될 수 있다.The media server 240 converts the media stream provided from the media storage 250 into a form of a media stream that can be transmitted over the network. To this end, the media server 240 supports the RTP / RTSP protocol. For example, the media server 240 generates an RTP packet based on the RTSP packet transmitted from the media stream reproducing apparatus 100, and controls transmission to the media stream reproducing apparatus 100. Such an RTP packet may be configured as shown in FIG.

웹서버(230)는 미디어 스트림 재생 장치(100)에 의해 획득되는 웹 컨텐츠를 호스팅한다. 이 때, 어떠한 종류의 데이터 및 서비스도 웹서버(230)에 의해 제공될 수 있다. 따라서, 미디어 스트림 재생 장치(100)의 웹브라우저(170)는 웹서버(230)에 의해 적어도 부분적으로 제공되는 서비스나 컨텐츠에 접근할 수 있게 된다. 특히, 웹서버(230)는 웹소켓 프로토콜을 사용하여 미디어 스트림 재생 장치(100)의 요청과 연결을 처리할 수 있다. The web server 230 hosts web content obtained by the media stream reproducing apparatus 100. At this time, any kind of data and services can be provided by the web server 230. Accordingly, the web browser 170 of the media stream reproducing apparatus 100 can access services or contents at least partially provided by the web server 230. In particular, the web server 230 may process the request and connection of the media stream playback apparatus 100 using the web socket protocol.

구체적으로, 웹서버(230)는, 미디어 스트림 재생 장치(100)에 웹소켓 기반으로 미디어 스트림(미디어 서버(240)에서 생성된 RTP 패킷)을 전송한다. 이를 위해, 웹서버(230)는 HTML5 기반의 양방향 통신용 기술 규격인 웹소켓 프로토콜과, 상기 웹소켓 프로토콜에 따른 웹소켓 패킷(도 7에 도시됨)을 실어 보내기 위한 하위 프로토콜인 TCP/IP(또는 UDP/IP)를 지원한다. 웹서버(230)는 기본적으로 어떠한 종류여도 상관없으나, 네트워크 카메라와 같이 고사양을 구비하기 어려운 환경을 고려하여, lighttpd와 같이 용량이 작고 적은 리소스를 요하는 종류를 이용하는 것이 바람직하다.Specifically, the web server 230 transmits a media stream (RTP packet generated by the media server 240) to the media stream playback apparatus 100 based on a Web socket. To this end, the Web server 230 is connected to a TCP / IP (or a lower layer protocol for sending a Web socket packet (shown in FIG. 7) according to the Web socket protocol, which is a technical standard for bidirectional communication based on HTML5, UDP / IP). Basically, the web server 230 may be of any kind, but it is preferable to use a kind of resource requiring a small capacity and a small resource, such as a lighttpd, in consideration of an environment such as a network camera, which is difficult to provide high-

한편, 미디어 서버(240)와 웹서버(230) 사이에 프록시 소켓(235)을 추가로 배치할 수도 있다. 웹서버(230)와 미디어 스트림 재생 장치(100)의 웹브라우저(170) 간의 웹소켓 연결이 수립되면, 웹서버(230)는 웹소켓 연결을 프록시 소켓(235)에 전달한다. 이 때, 프록시 소켓(235)은 그 연결 방식에 상관없이 정해진 소켓을 통해 미디어 서버(240)와 웹서버(230) 간의 데이터 송수신을 중계한다. 따라서, 이러한 프록시 소켓(235)을 이용하면, 미디어 서버(240)는 상기 연결이 통상의 UDP, TCP인지, WS/TCP(TCP 기반의 웹소켓), WS/UDP(UDP 기반의 웹소켓)인지, 또는 접속 포트가 무엇인지 상관없이 정해진 소켓 모듈을 통해 데이터를 송수신할 수 있다. 기본적으로 웹소켓 은 TCP 연결의 HTTP 기반이기 때문에 프록시 소켓(235)은 TCP 소켓을 기준으로 할 수 있다. 이를 위하여, 프록시 소켓(235)은 미디어 서버(200)에 의해 전송되는 통신을 미디어 스트림 재생 장치(100)에 전송될 웹소켓 패킷으로 인코드하고, 미디어 스트림 재생 장치(100)로부터 수신된 웹소켓 패킷을 미디어 서버(200)가 원하는 데이터 포맷으로 디코드하는 기능을 갖는다.Meanwhile, a proxy socket 235 may be additionally disposed between the media server 240 and the web server 230. When a web socket connection is established between the web server 230 and the web browser 170 of the media stream playback apparatus 100, the web server 230 delivers the web socket connection to the proxy socket 235. At this time, the proxy socket 235 relays data transmission / reception between the media server 240 and the web server 230 through a predetermined socket irrespective of the connection method. Thus, using this proxy socket 235, the media server 240 can determine whether the connection is a normal UDP, TCP, WS / TCP (TCP based Web socket), WS / UDP (UDP based web socket) , Or regardless of the access port, data can be sent and received via the specified socket module. By default, the proxy socket (235) can be based on a TCP socket because the web socket is HTTP based on a TCP connection. To this end, the proxy socket 235 encodes the communication transmitted by the media server 200 into a web socket packet to be transmitted to the media stream reproducing apparatus 100, And decodes the packet into a data format desired by the media server 200.

네트워크 인터페이스(220)는 미디어 스트림 재생 장치(100)와 네트워크 인터페이스(120)와 대응되며, 미디어 스트림 재생 장치(100)와의 데이터 송수신을 담당하기 위해 물리 연결 매체와의 인터페이스를 담당한다. 네트워크 인터페이스(220)는 도 3의 TCP/IP 모델에서 네트워크 인터페이스(61)에 대응된다. 상기 네트워크 인터페이스(220)에서 사용되는 물리 연결 매체는 LTE(Long-Term Evolution), 802.11(WLAN), 802.15.3(WPAN) 등과 같은 무선 매체와, 802.3(이더넷)와 같은 무선 매체를 포함한다.The network interface 220 corresponds to the media stream reproducing apparatus 100 and the network interface 120 and is responsible for interfacing with the physical connection medium to transmit and receive data to and from the media stream reproducing apparatus 100. The network interface 220 corresponds to the network interface 61 in the TCP / IP model of FIG. The physical connection medium used in the network interface 220 includes wireless media such as Long-Term Evolution (LTE), 802.11 (WLAN), 802.15.3 (WPAN), and the like and wireless media such as 802.3 (Ethernet).

지금까지 도 2, 도 8 및 도 10의 각 구성요소들은 메모리 상의 소정 영역에서 수행되는 태스크, 클래스, 서브 루틴, 프로세스, 오브젝트, 실행 쓰레드, 프로그램과 같은 소프트웨어(software)나, FPGA(field-programmable gate array)나 ASIC(application-specific integrated circuit)과 같은 하드웨어(hardware)로 구현될 수 있으며, 또한 상기 소프트웨어 및 하드웨어의 조합으로 이루어질 수도 있다. 상기 구성요소들은 컴퓨터로 판독 가능한 저장 매체에 포함되어 있을 수도 있고, 복수의 컴퓨터에 그 일부가 분산되어 분포될 수도 있다.2, 8, and 10 may be implemented as software, such as a task, a class, a subroutine, a process, an object, an execution thread, a gate array, an application-specific integrated circuit (ASIC), or a combination of the above software and hardware. The components may be included in a computer-readable storage medium, or a part of the components may be distributed to a plurality of computers.

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

다음의 도 11 내지 13은 본 발명의 일 실시예에 따라 스트리밍 모듈(140) 및 웹소켓 모듈(135)에서 미디어 서버(200)와 RTSP 제어 및 RTP 전송을 구현한 시퀀스도이다. 스트리밍 클라이언트(144)는 RTSP 클라이언트 인스턴스 생성과 RTSP 프로파일 정보를 담당하고, 인증 정보도 스트리밍 클라이언트(144)에 의해 관리된다. 웹소켓 모듈(135)은 웹소켓과 관련된 기능들을 담당하는데, 스트리밍 클라이언트(144)에 의한 RTSP 명령을 전송하고 그 응답을 수신하기 위해 상기 웹소켓이 이용된다. 스트리밍 클라이언트(144) 내에서, 연결 방법의 순서는 전체적으로, 1) 전송 모듈의 초기화, 2) RTSP 응답 및 RTP 응답 콜백들의 등록, 3) 디스크립션(단말 장치의 기능, 속성, 사양 등의 정보) 명령의 전송, 4) RTP 세션의 초기화 및 셋업 명령의 전송 순서이다. 도 11 내지 13에서 실선으로 표시된 화살표는 특정 명령을 의미하고, 이어서 점선으로 표시된 화살표는 상기 명령에 대한 응답 내지 Ack를 의미한다.11 to 13 are sequence diagrams illustrating RTSP control and RTP transmission with the media server 200 in the streaming module 140 and the web socket module 135 according to an embodiment of the present invention. The streaming client 144 is responsible for RTSP client instance creation and RTSP profile information, and the authentication information is also managed by the streaming client 144. The web socket module 135 is responsible for functions related to the web socket, and the web socket is used to send the RTSP command by the streaming client 144 and receive the response. In the streaming client 144, the order of the connection method is as follows: 1) Initialization of the transmission module 2) Registration of RTSP response and RTP response callbacks 3) Description (information on functions, attributes, Transmission of the RTP session, and transmission of the setup command. The arrows indicated by the solid lines in Figs. 11 to 13 indicate specific commands, and the arrows indicated by dashed lines in Fig. 11 to 13 indicate the response to the command or Ack.

도 11은 이 중에서, 스트리밍 모듈(140)과 미디어 서버(200) 간의 RTSP 셋업 과정을 나타낸다. 먼저, 웹브라우저(170)가 RTSP 클라이언트를 생성하기 위해 클라이언트 관리자에게 요청하면(S1: Create RtspClient), 클라이언트 관리자(146)는 스트리밍 클라이언트(144)에 새로운 RTSP 클라이언트를 생성하게 한다(S2: new RtspClient). 이와 같이 새로운 RTSP 클라이언트가 생성된 후, 웹브라우저(170)는 스트리밍 클라이언트(144)에 대해 RTSP URL을 설정하고 인증을 수행한다(S5: Set RtspURL, Authentication). 이로서, 웹브라우저는 미디어 서버(200)와 데이터를 송수신할 수 있는 기본적인 상태가 된다.FIG. 11 shows an RTSP setup process between the streaming module 140 and the media server 200 in FIG. First, when the web browser 170 requests the client manager to create an RTSP client (S1: Create RtspClient), the client manager 146 causes the streaming client 144 to create a new RTSP client (S2: new RtspClient ). After the new RTSP client is created as described above, the web browser 170 sets an RTSP URL to the streaming client 144 and performs authentication (S5: Set RtspURL, Authentication). Thus, the web browser becomes a basic state in which data can be exchanged with the media server 200.

웹브라우저(170)가 스트리밍 클라이언트(144)에게 미디어 서버와의 연결을 요청하면(S7: Connect), 스트리밍 클라이언트(144)는 웹소켓 모듈(135)에게 새로운 전송을 요청하면서(S9: new Transport), 콜백을 설정한다(S11: Set callback). 또한, 스트리밍 클라이언트(144)가 웹소켓 모듈(135)에 RTSP 명령을 전송하면(S13: Send RtspCommand), 웹소켓 모듈(135)은 미디어 서버에 디스크립션 명령을 전송한다(S14: Describe command). 이후, 스트리밍 클라이언트(144)가 웹소켓 모듈(135)에 후속 RTSP 명령을 전송하면(S18: Send RtspCommand), 웹소켓 모듈(135)은 미디어 서버에 셋업 명령을 전송한다(S19: Setup command). 이에 따라, 미디어 서버(200)로부터 웹소켓 모듈(135)에 셋업 응답이 수신되면(S21: setup Response), 웹소켓 모듈(135)은 스트리밍 클라이언트(144)에 RTSP 응답을 전송한다(S22: RtspResponse).When the web browser 170 requests the streaming client 144 to connect to the media server (S7: Connect), the streaming client 144 requests a new transmission to the web socket module 135 (S9: new Transport) , And a callback is set (S11: Set callback). When the streaming client 144 sends an RTSP command to the web socket module 135 (S13: Send RtspCommand), the web socket module 135 transmits a description command to the media server (S14: Describe command). Thereafter, when the streaming client 144 transmits a subsequent RTSP command to the web socket module 135 (S18: Send RtspCommand), the web socket module 135 transmits a setup command to the media server (S19: Setup command). Accordingly, when a setup response is received from the media server 200 (S21: setup response) to the web socket module 135, the web socket module 135 transmits an RTSP response to the streaming client 144 (S22: RtspResponse ).

이 후, 스트리밍 클라이언트(144)가 RTSP 세션의 생성 명령을 스트리밍 세션 모듈(142)에 전송하면서(S24: Create RtspSession), 콜백을 설정하고(S26: Set Callback), 웹브라우저(170)에 콜백 연결 완료를 알리면(S28: OnConnectedCallback), 스트리밍 모듈(140)과 미디어 서버(200)간의 RTSP 셋업 과정이 완성되고, 이후부터는 양자 간의 RTP 데이터를 웹소켓 상에서(over websocket) 송수신하는 것이 가능하게 된다.Thereafter, the streaming client 144 transmits a command for generating an RTSP session to the streaming session module 142 (S24: Create RtspSession), sets a callback (S26: Set Callback) Upon completion (S28: OnConnectedCallback), the RTSP setup process between the streaming module 140 and the media server 200 is completed. Thereafter, RTP data between the streaming module 140 and the media server 200 can be transmitted / received over a web socket.

도 12는 도 11의 셋업 과정 이후에 스트리밍 모듈(140)이 미디어 서버(200)로부터 RTP 데이터를 수신하는 과정을 나타낸다. 먼저, 웹브라우저(170)가 스트리밍 클라이언트(144)에게 미디어 접속 명령을 전송하면(S30: OpenMedia), 스트리밍 클라이언트(144)는 웹소켓 모듈(135)에 RTSP 명령을 전송한다(S32: SendRtspCommand). 그러면, 웹소켓 모듈(135)은 미디어 서버(200)에 미디어 재생 명령을 전송한다(S33: Play Command). 이 후, 스트리밍 클라이언트(144)가 웹소켓 모듈(135)로부터 RTSP 응답을 수신하면(S35: RtspRespond), 웹브라우저(170)에 미디어 오픈이 가능한 상태가 되었음을 알린다(S37: OnOpenMedia).FIG. 12 shows a process in which the streaming module 140 receives RTP data from the media server 200 after the setup process of FIG. First, when the web browser 170 sends a media access command to the streaming client 144 (S30: OpenMedia), the streaming client 144 sends an RTSP command to the web socket module 135 (S32: SendRtspCommand). Then, the web socket module 135 transmits a media playback command to the media server 200 (S33: Play Command). Thereafter, when the streaming client 144 receives the RTSP response from the web socket module 135 (S35: RtspRespond), it notifies the web browser 170 that the media open state is enabled (S37: OnOpenMedia).

한편, 미디어 서버(200)는 S33의 재생 명령에 따라 웹소켓 모듈(135)에 RTP 데이터 전송을 수행한다(S30: RTP Data->OnReceive). 이 때, 웹소켓 모듈(135)은 스트리밍 세션 모듈(142)에 RTP 데이터를 전달하고(S40: SendRtpData), 스트리밍 세션 모듈(142)은 웹브라우저(170)에 RTP 데이터에 포함되는 미디어 스트림(미디어 프레임)를 웹브라우저(170)에 전송한다(S41: OnFrameRecv). 이상과 같은 도 12의 과정에서 특정 RTP 데이터의 스트리밍 중에라도, 스트리밍 클라이언트(144)가 RTSP 명령을 미디어 서버(200)에 전송함에 따라 RTP 데이터의 제어(재생, 일시정지 등)를 할 수 있다.On the other hand, the media server 200 performs RTP data transmission to the web socket module 135 according to the reproduction command of S33 (S30: RTP Data-> OnReceive). At this time, the web socket module 135 delivers the RTP data to the streaming session module 142 (S40: SendRtpData), and the streaming session module 142 notifies the web browser 170 of the media stream Frame) to the web browser 170 (S41: OnFrameRecv). 12, it is possible to control (play, pause, etc.) the RTP data as the streaming client 144 transmits the RTSP command to the media server 200 even during the streaming of the specific RTP data.

도 12와 같은 RTP 데이터의 스트리밍이 완료되고 스트리밍 모듈(140)과 미디어 서버(200)간에 더 이상의 연결이 불필요한 경우, 도 13과 같은 접속 종료 과정이 수행될 수 있다. 먼저, 웹브라우저(170)가 스트리밍 클라이언트(144)에 RTSP를 종료하는 명령을 전달하면(S44: CloseRtsp), 스트리밍 클라이언트(144)는 웹소켓 모듈(135)에 RTSP 명령을 전송한다(S46: SendRtspCommand). 이에 따라 웹소켓 모듈(135)이 미디어 서버(200)에 해체 명령을 전송하고(S47: SendTeardown), 미디어 서버(200)로부터 Ack를 수신한다(S48).When the streaming of RTP data as shown in FIG. 12 is completed and further connection between the streaming module 140 and the media server 200 is unnecessary, the connection termination process as shown in FIG. 13 can be performed. The streaming client 144 transmits an RTSP command to the web socket module 135 (S46: SendRtspCommand (RTSP)) when the web browser 170 transmits a command to end the RTSP to the streaming client 144 (S44: CloseRtsp) ). Accordingly, the web socket module 135 transmits a disassembly command to the media server 200 (S47: SendTeardown) and receives the Ack from the media server 200 (S48).

웹소켓 모듈(135)이 스트리밍 클라이언트(144)에 Rtsp 응답 메시지를 전송하면(S49: RtspResponse), 스트리밍 클라이언트(144)는 웹브라우저(170)에 미디어 스트리밍의 오픈을 종료하는 명령을 전송한다(S50: Onclose). 이후, 웹브라우저(170)는 클라이언트 관리자(146)에게 이미 생성된 Rtsp 클라이언트를 제거하는 명령을 전송하면(S53: RemoveRtspClient), 클라이언트 관리자(146)는 스트리밍 클라이언트(144)에 Rtsp 클라이언트의 제거(destroy) 명령을 전송하면서(S54: destroy), 스트리밍 모듈(140)과 미디어 서버(200)간의 모든 연결은 종료된다.When the web socket module 135 sends an Rtsp response message to the streaming client 144 (S49: RtspResponse), the streaming client 144 transmits a command to end the open of the media streaming to the web browser 170 (S50 : Onclose). When the web browser 170 sends a command to remove the already generated Rtsp client to the client manager 146 (S53: RemoveRtspClient), the client manager 146 instructs the streaming client 144 to remove the Rtsp client ) Command (S54: destroy), all the connections between the streaming module 140 and the media server 200 are terminated.

이상에서 설명한 바와 같이 본 발명에 따르면, 웹브라우저(170)에 플러그인을 설치하지 않고서도 네트워크 카메라와 같은 미디어 서버(200)로부터 미디어를 실시간으로 스트리밍할 수 있다. 그러나, 사용자의 선택에 따라 플러그인의 설치를 통해 전용의 웹 뷰어 방식으로 미디어를 스트리밍하는 방식과, 플러그인 없이 미디어 스트리밍하는 방식을 혼합한 하이브리드 방식도 가능하다. 이러한 실시에에 따르면, 사용자가 미디어 스트림 재생 장치(100)로부터 미디어 서버(200)에 접근하면, 미디어 서버(200)는 웹서버(230)를 통해 사용자 환경정보(웹브라우저 버전, 사용자 장치의 해상도 등)을 확인할 수 있고, 사용자 환경이 플러그인 설치가 가능한 환경인지를 체크할 수 있다. 만약, 상기 사용자 환경이 플러그인 설치가 가능한 환경이라면 웹서버(230)는 웹브라우저(170)에 플러그인 설치 여부를 확인하는 웹페이지를 제시하고 사용자의 선택을 받을 수 있다. 사용자가 플러그인 설치를 선택하면, 사용자는 웹서버(230)로부터 웹 뷰어를 다운로드 받아 웹브라우저(170) 상에 설치하고 종래와 같이 설치된 웹 뷰어를 이용하면 된다. 반면에, 사용자가 플러그인 설치를 원하지 않으면, 플러그인 없이도 본 발명에 따른 미디어 스트림 재생 방법에 따라 미디어 스트리밍을 제어하면서 영상/음성을 재생할 수 있다.As described above, according to the present invention, it is possible to stream media in real time from a media server 200 such as a network camera without installing a plug-in to the web browser 170. [ However, it is also possible to use a hybrid method in which media is streamed using a dedicated web viewer method through installation of a plug-in according to a user's selection, or a method of streaming media without a plug-in. According to this embodiment, when the user accesses the media server 200 from the media stream playback apparatus 100, the media server 200 transmits the user environment information (web browser version, resolution of the user apparatus Etc.), and can check whether the user environment is an environment in which the plug-in can be installed. If the user environment is an environment in which a plug-in can be installed, the web server 230 may present a web page for confirming whether or not a plug-in is installed in the web browser 170, and receive a user's selection. When the user selects to install the plug-in, the user downloads the web viewer from the web server 230, installs the web viewer on the web browser 170, and uses the web viewer installed in the conventional manner. On the other hand, if the user does not want to install the plug-in, the user can play the video / audio while controlling the media streaming according to the media stream playback method according to the present invention without the plug-in.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야 한다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, You will understand. It is therefore to be understood that the embodiments described above are in all respects illustrative and not restrictive.

100: 미디어 스트림 재생 장치 120, 220: 네트워크 인터페이스
130: 전송 모듈 135: 웹소켓 모듈
140: 스트리밍 모듈 142: 스트리밍 세션 모듈
144: 스트리밍 클라이언트 146: 클라이언트 관리자
148: 디패킷화 모듈 150: 포맷 변환기
160: 브라우저 내장 재생기 170: 웹브라우저
180: 출력 장치 200: 미디어 서버
230: 웹서버 235: 프록시 소켓
240: 미디어 서버 250: 미디어 스토리지
260: 미디어 인코더 270: 캡쳐 장치
100: media stream reproducing apparatus 120, 220: network interface
130: Transmission module 135: Web socket module
140: Streaming module 142: Streaming session module
144: Streaming Client 146: Client Manager
148: depacketization module 150: format converter
160: Browser built-in player 170: Web browser
180: output device 200: media server
230: Web server 235: Proxy socket
240: Media Server 250: Media Storage
260: Media Encoder 270: Capture Device

Claims (10)

미디어 서버로부터 전송되는 미디어 스트림을 수신하여 웹브라우저 상에서 재생하는 미디어 스트림 재생 장치로서,
상기 미디어 서버와 전송 계층 레벨의 통신 연결을 수립하는 전송 모듈;
상기 전송 계층 레벨의 연결을 기초로 상기 미디어 서버와 핸드쉐이크를 통해 웹소켓 연결을 수립한 후 상기 수립된 웹소켓 연결을 지속적으로 유지하면서, 상기 미디어 서버와 웹소켓 패킷을 송수신하는 웹소켓 모듈;
상기 웹소켓 패킷에 의해 운반되는 실시간 전송 프로토콜 패킷을 수신하고, 상기 실시간 전송 프로토콜 패킷의 전송을 제어하기 위한 실시간 스트리밍 프로토콜 패킷을 상기 미디어 서버와 송수신하는 스트리밍 모듈;
상기 실시간 전송 프로토콜 패킷으로부터 얻어지는 상기 미디어 스트림을 브라우저 내장 재생기에 의해 재생 가능한 포맷으로 변환하는 포맷 변환기; 및
상기 웹 브라우저 내에서의 재생을 위해, 상기 변환된 미디어 스트림으로부터 영상을 복원하는 넌플러그인(non-plugin) 방식의 상기 브라우저 내장 재생기를 포함하되,
상기 스트리밍 모듈은 상기 핸드쉐이크 이후 상기 실시간 전송 프로토콜 패킷의 수신 이전에, 상기 실시간 스트리밍 프로토콜 패킷을 이용하여 상기 미디어 서버와 셋업 과정을 수행하며,
상기 스트리밍 모듈은 상기 핸드쉐이크 이후 상기 실시간 전송 프로토콜 패킷의 수신 이전에, 상기 실시간 스트리밍 프로토콜 패킷을 이용하여 상기 미디어 서버와의 셋업 과정을 수행하며,
상기 웹브라우저의 요청에 따라, 상기 웹소켓 모듈을 통해 상기 미디어 서버가 상기 실시간 스트리밍 프로토콜 패킷을 전송할 것을 요청하거나, 상기 실시간 스트리밍 프로토콜 패킷의 전송을 종료할 것을 요청하는 스트리밍 클라이언트와,
상기 웹소켓 모듈을 통해 상기 실시간 전송 프로토콜 패킷을 수신하고, 상기 수신된 실시간 전송 프로토콜 패킷을 상기 포맷 변환기로 전달하는 스트리밍 세션 모듈과,
상기 웹브라우저의 요청에 따라, 상기 스트리밍 클라이언트 내에서 상기 실시간 전송 프로토콜의 스트리밍을 제어하기 위한 클라이언트 모듈을 생성하거나 종료하도록 상기 스트리밍 클라이언트에 요청하는 클라이언트 관리자를 포함하되,
상기 스트리밍 클라이언트, 상기 스트리밍 세션 모듈 및 상기 클라이언트 관리자는 상기 웹브라우저에 의해 파싱 가능한 스크립트로 구현되는, 미디어 스트림 재생 장치.
A media stream reproducing apparatus for receiving a media stream transmitted from a media server and reproducing the media stream on a web browser,
A transmission module for establishing a communication layer-level communication connection with the media server;
A web socket module that establishes a web socket connection with the media server based on the connection at the transport layer level and transmits and receives a web socket packet to the media server while maintaining the established web socket connection;
A streaming module for receiving a real-time transmission protocol packet carried by the web socket packet, and for transmitting / receiving a real-time streaming protocol packet for controlling transmission of the real-time transmission protocol packet to / from the media server;
A format converter for converting the media stream obtained from the real time transmission protocol packet into a format reproducible by a browser built-in player; And
And a non-plugin-type browser built-in player for restoring an image from the converted media stream for playback in the web browser,
Wherein the streaming module performs a setup process with the media server using the real-time streaming protocol packet before receiving the real-time transmission protocol packet after the handshake,
Wherein the streaming module performs a setup process with the media server using the real-time streaming protocol packet before receiving the real-time transmission protocol packet after the handshake,
A streaming client requesting the media server to transmit the real-time streaming protocol packet through the web socket module or requesting to terminate the transmission of the real-time streaming protocol packet at the request of the web browser;
A streaming session module for receiving the real-time transmission protocol packet through the web socket module and delivering the received real-time transmission protocol packet to the format converter;
And a client manager for requesting the streaming client to create or terminate a client module for controlling streaming of the real time transmission protocol in the streaming client at the request of the web browser,
Wherein the streaming client, the streaming session module, and the client manager are implemented as scripts that can be parsed by the web browser.
제1항에 있어서, 상기 셋업 과정은
상기 미디어 스트림 재생 장치의 미디어 파라미터를 지정된 프로파일로 획득하기 위한 디스크립션 단계를 포함하는 미디어 스트림 재생 장치.
2. The method of claim 1,
And a description step of acquiring media parameters of the media stream reproducing apparatus with a specified profile.
제1항에 있어서,
상기 웹브라우저는 HTML5 표준을 지원하고, 상기 브라우저 내장 재생기는 HTML5 표준의 비디오 태그인 미디어 스트림 재생 장치.
The method according to claim 1,
Wherein the web browser supports the HTML5 standard and the browser built-in player is a video tag of the HTML5 standard.
제3항에 있어서,
상기 포맷 변환기는 상기 미디어 스트림이 상기 브라우저 내장 재생기에 의해 실행 가능하면 상기 미디어 스트림의 포맷 변환을 스킵하는 미디어 스트림 재생 장치.
The method of claim 3,
Wherein the format converter skips the format conversion of the media stream if the media stream is executable by the browser built-in player.
제3항에 있어서,
상기 스트리밍 모듈 및 상기 포맷 변환기는, 상기 웹브라우저에 별도로 설치되는 플러그인 프로그램 없이 자바 스크립트에 의해 구현되는 미디어 스트림 재생 장치.
The method of claim 3,
Wherein the streaming module and the format converter are implemented by JavaScript without a plug-in program installed separately in the web browser.
제3항에 있어서,
상기 브라우저 내장 재생기는 HTML 문서를 파싱하여 상기 변환된 미디어 스트림의 소스 위치를 파악하는 미디어 스트림 재생 장치.
The method of claim 3,
Wherein the browser built-in player parses an HTML document to determine a source location of the converted media stream.
제1항에 있어서,
상기 브라우저 내장 재생기는 상기 변환된 미디어 스트림으로부터 음성을 복원하고,
상기 복원된 음성을 상기 복원된 영상과 함께 동기화하여 출력하는 출력 장치를 더 포함하는 미디어 스트림 재생 장치.
The method according to claim 1,
The in-browser player restores the voice from the converted media stream,
And an output device for synchronizing and outputting the restored voice with the restored image.
제1항에 있어서,
상기 웹소켓 패킷은 웹소켓 헤더와, 상기 웹소켓 헤더와 인접하여 후속하는 실시간 전송 프로토콜 헤더와, 상기 실시간 전송 헤더와 인접하여 후속하는 상기 미디어 스트림으로 구성되는 미디어 스트림 재생 장치.
The method according to claim 1,
Wherein the web socket packet comprises a web socket header, a subsequent real-time transport protocol header adjacent to the web socket header, and a subsequent media stream adjacent to the real-time transport header.
제1항에 있어서,
상기 미디어 서버는 영상을 실시간으로 캡쳐하여 상기 미디어 스트림 재생 장치에 제공하는 네트워크 카메라인 미디어 스트림 재생 장치.
The method according to claim 1,
Wherein the media server is a network camera that captures an image in real time and provides the media stream to the media stream player.
삭제delete
KR1020160069443A 2016-04-04 2016-06-03 Method and apparatus for playing media stream on web-browser KR101821123B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/393,936 US10412130B2 (en) 2016-04-04 2016-12-29 Method and apparatus for playing media stream on web browser

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160041175 2016-04-04
KR1020160041175 2016-04-04

Publications (2)

Publication Number Publication Date
KR20170114218A KR20170114218A (en) 2017-10-13
KR101821123B1 true KR101821123B1 (en) 2018-01-23

Family

ID=60139445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160069443A KR101821123B1 (en) 2016-04-04 2016-06-03 Method and apparatus for playing media stream on web-browser

Country Status (1)

Country Link
KR (1) KR101821123B1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111356023B (en) 2019-12-30 2021-12-24 杭州海康威视数字技术股份有限公司 Playing mode determining method and device
CN112954392B (en) * 2021-04-07 2024-01-26 多彩贵州印象网络传媒股份有限公司 Platform for automatically realizing video format conversion processing
CN113691740A (en) * 2021-07-13 2021-11-23 稿定(厦门)科技有限公司 Mobile terminal webpage video background processing method, system and storage medium
CN114143132B (en) * 2021-11-15 2023-08-04 云知声(上海)智能科技有限公司 Method and system for realizing intelligent linkage of multi-terminal equipment based on RTP-MESH
CN114584800A (en) * 2022-03-16 2022-06-03 京东科技信息技术有限公司 Streaming media transmission method and device and electronic equipment
CN114745361B (en) * 2022-03-25 2024-05-14 朗新数据科技有限公司 Audio and video playing method and system for HTML5 browser
CN115643426B (en) * 2022-10-17 2023-11-21 中国科学院空间应用工程与技术中心 Universal video playing method and system for space application field

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150350723A1 (en) * 2013-03-08 2015-12-03 Huawei Device Co., Ltd. Video Communication Method, Home Terminal, and Home Server

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150350723A1 (en) * 2013-03-08 2015-12-03 Huawei Device Co., Ltd. Video Communication Method, Home Terminal, and Home Server
JP2016517642A (en) 2013-03-08 2016-06-16 ▲華▼▲為▼終端有限公司Huawei Device Co., Ltd. Video communication method, home terminal and home server

Also Published As

Publication number Publication date
KR20170114218A (en) 2017-10-13

Similar Documents

Publication Publication Date Title
EP3229476B1 (en) Method and apparatus for playing media stream on web browser
KR101821123B1 (en) Method and apparatus for playing media stream on web-browser
US10979785B2 (en) Media playback apparatus and method for synchronously reproducing video and audio on a web browser
KR101821124B1 (en) Method and apparatus for playing media stream on web-browser
JP4794440B2 (en) Apparatus and method for handling high-speed changes in digital streaming format or source
US8874778B2 (en) Live streaming media delivery for mobile audiences
US20170353647A1 (en) Method and Apparatus for Live Capture Image-Live Streaming Camera
US20060188096A1 (en) Systems and methods for remotely controlling computer applications
CN107819809B (en) Method and device for synchronizing content
CN112752115B (en) Live broadcast data transmission method, device, equipment and medium
KR101986995B1 (en) Media playback apparatus and method for synchronously reproducing video and audio on a web browser
JP2008193510A (en) Video transmitter, video receiver, and video transmission system
CN105049931A (en) Method and system for converting video with non-supporting format in mobile terminal
CA3113015A1 (en) System and method of streaming content between peer devices in a broadcast environment
EP2312826A2 (en) Network device, information processing apparatus, stream switching method, information processing method, program, and content distribution system
CN114339146B (en) Audio and video monitoring method and device, electronic equipment and computer readable storage medium
CN115865884A (en) Network camera data access device and method, network camera and medium
CN112532719B (en) Information stream pushing method, device, equipment and computer readable storage medium
CA2577087A1 (en) Systems and methods for remotely controlling computer applications
TW202147833A (en) Remote-end instant image supporting system and method
WO2022077428A1 (en) Dynamically controlling media content orientation
KR20130024788A (en) Apparatas and method for contents transfer to dlna connected device of cloud system in an electronic device
US11595734B2 (en) Technologies for providing stream metadata to clients
CN114173205A (en) Method for playing RTSP audio and video stream on applet
CN117527922A (en) Streaming media multi-protocol conversion method, streaming media server, equipment and medium

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant