KR20200109359A - 비디오 스트리밍 - Google Patents
비디오 스트리밍 Download PDFInfo
- Publication number
- KR20200109359A KR20200109359A KR1020207023679A KR20207023679A KR20200109359A KR 20200109359 A KR20200109359 A KR 20200109359A KR 1020207023679 A KR1020207023679 A KR 1020207023679A KR 20207023679 A KR20207023679 A KR 20207023679A KR 20200109359 A KR20200109359 A KR 20200109359A
- Authority
- KR
- South Korea
- Prior art keywords
- frame
- time
- client
- server
- video
- Prior art date
Links
- 230000036962 time dependent Effects 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 24
- 238000004891 communication Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 description 56
- 230000004044 response Effects 0.000 description 9
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000000750 progressive effect Effects 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 239000004020 conductor Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/2343—Processing 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/23439—Processing 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 for generating different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
- H04N21/2408—Monitoring of the upstream path of the transmission network, e.g. client requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47202—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
클라이언트 (150) 로 비디오를 스트리밍하기 위한 서버 (100) 가 개시된다. 비디오는 요청시 적어도 시간 독립적인 버전 (170) 및 시간 의존적인 버전 (160) 으로 서버로부터 클라이언트로 사용가능하다. 서버는 추가로: i) 클라이언트로부터 시간상 임의의 시작점 (121) 으로부터 비디오의 스트림 (180) 을 수신하라는 요청 (152, 154) 을 수신 (110) 하고; ii) 시간 독립적인 버전 (170) 으로부터 적어도 제 1 프레임 (173) 을 취출 (111) 하고; iii) 시간 의존적인 버전 (160) 으로부터 적어도 제 1 프레임 (173) 에 후속하는 프레임들 (164-166) 을 취출 (113) 하며; 그리고 iv) 적어도 제 1 프레임 (173) 을 클라이언트에 전송 (111) 하고 적어도 제 1 프레임에 후속하는 프레임들 (164-166) 을 클라이언트에 전송 (114) 하도록 구성된다.
Description
본 발명은 일반적으로 통신 네트워크를 통한 서버로부터 클라이언트로의 비디오 스트리밍에 관한 것이다. 특히, 본 발명은 스트리밍 서버, 스트리밍 클라이언트 및 각각의 서버 및 클라이언트에서 수행되는 컴퓨터 구현 방법들에 관한 것이다.
비디오 스트리밍은 요즘 매우 인기 있다. 이를 통해 시청자는 미리 비디오 콘텐츠를 완전히 다운로드하지 않고도 비디오 콘텐츠를 시청한다. 인터넷 트래픽의 대부분은 서버로부터 클라이언트로, 통상적으로 콘텐츠 배포 네트워크 (CDN) 로부터 PC, 태블릿, 스마트 폰, 셋탑 박스, TV 등에서 실행되는 비디오 플레이어 애플리케이션으로 스트리밍된 이러한 비디오로 구성된다. 비디오 스트리밍에서, 비디오는 요구에 따라 또는 클라이언트의 요청에 따라 추가로 전달된다. 그 후에, 요청은 비디오가 시작해야 하는 특정 시작점을 지정한다. 이 시작점은 예를 들어, 요청시 이를 지정함으로써 명시적이거나, 또는 예를 들어, 시작점이 라이브 스트리밍의 경우 요청 시간으로부터 유도되는 경우에 암시적일 수도 있다.
비디오 스트림은 시청자에게 낮은 레이턴시를 나타내야 한다, 즉 시청자의 스트림 요청과 실제 재생 사이에 최소 시간이 있어야 한다. 요즘, 시청자는 재생을 활성화하는 순간과 비디오의 제 1 프레임이 스크린 상에 나타나는 순간 사이에 즉각적인 반응을 원한다. 비디오를 스킵할 때도 마찬가지이며, 시청자는 비디오 내에서 상이한 재생 시간을 선택할 때 즉, 비디오를 스킵할 때, 즉각적인 재생을 원한다. 또 다른 요구사항은, 비디오의 데이터 풋프린트가 작아서 오리진 서버와 중간 캐싱 서버 상의 스토리지가 작아야 한다는 것이다. 스토리지 사이즈가 작으면, 대역폭 제한된 통신 매체를 통한 클라이언트로의 전송 시간이 더 짧아지므로 레이턴시가 감소한다. 또한, 데이터 풋프린트가 작아질수록, 통신 네트워크 자체의 비용도 낮아진다.
비디오를 스트리밍하기 위한 상이한 프로토콜들 및 기술들이 제안되었다. 제 1 기술은 점진적 다운로드이고, 이는 미디어 파일의 다운로드가 완료되기 전에 클라이언트에서 미디어 파일을 재생하는 것과 관련된다. 점진적 다운로드가 가능한 클라이언트의 미디어 플레이어는 미디어 파일의 시작부에서의 헤더에 위치된 메타 데이터에 의존한다. 미디어의 제 1 프레임 및 메타 데이터가 다운로드되고 버퍼링되면, 미디어 플레이어가 실제 재생을 시작하여 레이턴시를 상당히 감소시킬 것이다. 점진적 다운로드의 문제는, 본질적으로 라이브 스트리밍을 지원하지 않고 품질과 비트 레이트 간의 스위칭을 지원하지 않는다는 것이다.
점진적 다운로드 외에도, 라이브 스트리밍 및 품질간 스위칭을 제공하는 전용 스트리밍 프로토콜이 있다. 일반적으로, 스트리밍 프로토콜은 미디어를 더 작은 청크 또는 세그먼트로 분할한다. 그 후에, 세그먼트 또는 청크는 세그먼트의 시작부에서 키 프레임으로도 지칭되는 독립적인 프레임을 제공함으로써 다른 세그먼트와 독립적으로 재생될 수도 있다. 이러한 키 프레임은 이전 또는 후속 프레임에 관한 임의의 정보 없이 클라이언트에 의해 디코딩될 수 있다. 스트리밍 프로토콜은 RTSP (Real-time Streaming Protocol), RTP (Real-time Transport Protocol), RTMP (Real-Time Messaging Protocol) 및 RTCP (Real-time Transport Control Protocol) 과 같은 특수 설계된 전송 프로토콜들의 상부에 구현될 수도 있다. 그러나, 이들 전송 프로토콜이 방화벽과 프록시를 통과하는데 어려움이 있으므로, 표준 HTTP 웹 프로토콜을 사용하는 새로운 스트리밍 프로토콜이 등장했다. 이들 프로토콜은 또한, 클라이언트가 사용가능한 리소스들에 따라 상이한 비트 레이트들, 해상도들 또는 코덱 간에 스위칭하게 하는 적응형 비트레이트 스트리밍을 제공한다. 이를 달성하기 위해, 각각 상이한 비트 레이트, 코덱의 해상도를 갖는 스트림들의 버전이 클라이언트용 서버에서 사용가능하게 된다. 적응형 비트레이트 스트리밍 프로토콜의 예는 ISO/IEC 23009-1:2012, HTTP Dynamic Streaming by Adobe, HTTP Live Streaming (HLS) by Apple and Smooth Streaming, a Microsoft IIS Media Services extension 으로 발표된 MPEG-DASH 이다.
위에서 언급한 스트리밍 프로토콜들은 특히 시간상 임의의 지점에서 비디오를 시작할 때 지연 측면에서 여전히 단점이 있다. 시청자가 비디오 스트림을 시작할 임의의 시작점을 선택하면, 클라이언트는 이 시작점을 포함하는 서버에서 비디오 세그먼트를 취출할 것이다. 그러나, 클라이언트는 이 시작점에서 직접 재생을 시작할 수 없지만, 선택한 시작점에서 프레임을 구성하기 위해 먼저 제 1 키 프레임에서 시작하는 완전한 세그먼트를 다운로드하고 디코딩해야 한다. 적응형 비트레이트 스트리밍 프로토콜에서, 세그먼트는 통상적으로 대략 수 초이며, 이는 탐색 액션이 요청된 프레임에 도달하기 위해 상당한 다운로드 및 프로세싱 시간이 걸릴 수도 있음을 의미한다. 또한, 상이한 해상도, 비트 레이트 또는 코덱을 갖는 세그먼트는 항상 시간상 완벽하게 정렬되는 것은 아니므로 비디오 플레이어가 비트 레이트, 코덱의 해상도 사이에서 스위칭할 때 눈에 띄는 결함들이 나타날 수도 있다.
본 발명의 목적은 전술한 문제점을 극복하고 낮은 탐색 지연, 낮은 레이턴시, 낮은 시작 시간을 갖는 동시에 강력한 인코딩 및 낮은 대역폭 요건들을 제공하는 스트리밍 비디오를 위한 솔루션을 제공하는 것이다.
이 목적은, 본 발명의 제 1 양태에 따라, 통신 네트워크를 통해 클라이언트로 비디오를 스트리밍하기 위한 서버에 의해 달성되고; 상기 서버는 요청시 적어도 시간 독립적인 버전 및 시간 의존적인 버전으로 비디오가 클라이언트에게 사용가능하게 하도록 구성되며; 상기 서버는 다음 단계들을 수행하도록 추가로 구성된다:
- 클라이언트로부터 시간상 앞서는 임의의 시작점으로부터 비디오의 스트림을 수신하라는 요청을 수신하는 단계;
- 비디오의 시간 독립적인 버전으로부터 스트림의 적어도 제 1 프레임을 취출하는 단계로서, 상기 제 1 프레임은 시간상 시작점에 대응하는, 상기 제 1 프레임을 취출하는 단계;
- 시간 의존적인 버전으로부터 적어도 제 1 프레임에 후속하는 프레임들을 취출하는 단계; 및
- 적어도 제 1 프레임을 클라이언트에 전송하고, 적어도 제 1 프레임에 후속하는 프레임들을 클라이언트에 전송하여, 비디오가 클라이언트에 스트리밍되게 하고 시간상 시작점과 연관된 적어도 하나의 시간 독립적인 프레임으로 시작하게 하는 단계.
즉, 서버는 동일한 비디오의 적어도 2 개의 버전들이 클라이언트에게 사용가능하게 한다. 시간 독립적인 버전은 오직 키 프레임들만을 포함한다. 키 프레임은 비디오의 다른 프레임들과 독립적으로 디코딩가능한 프레임이다. 키 프레임은 시간적 의존성을 포함하지 않지만, 공간적 의존성을 포함할 수도 있다. 키 프레임은 때때로 I-프레임으로 지칭된다. 비디오의 의존적인 버전은 또한, 의존적인 프레임들, 즉 다른 프레임들의 정보가 이들을 디코딩하기 위해 필요한 프레임들을 포함한다. 따라서, 의존적인 버전의 프레임들은 이들을 디코딩하기 위해 시간적 의존성을 가질 수도 있다. 의존적인 프레임은 때때로, P 프레임과 B 프레임으로 추가로 분류된다. P 프레임은 디코딩하기 위해 이전 프레임으로부터의 데이터를 사용할 수 있고, 따라서 I 프레임보다 더 압축가능하다. B 프레임은 디코딩하기 위해 이전 프레임과 이후 프레임 양자를 사용할 수 있고, 따라서 가장 많은 양의 데이터 압축을 달성할 수도 있다. 서버는 이들 2 개의 버전이 클라이언트에 사용가능하게 하며, 즉 클라이언트는 요청할 때 2 개의 버전에서 임의의 선택된 프레임을 취출할 수도 있다. 클라이언트가 시간상 임의의 지점에 비디오 스트림을 요청하면, 서버는 독립적인 버전에서 적어도 제 1 프레임 및 비디오의 의존적인 버전의 다음 프레임을 제공한다. 제 1 프레임은 반드시 클라이언트에 먼저 전송될 필요는 없지만, 의존하는 프레임과 병렬로 또는 의존하는 버전에서 전송 프레임이 시작된 후에도 전송될 수도 있다.
따라서, 클라이언트가 요청된 시작점에 대응하는 독립적인 프레임을 항상 수신하는 것이 장점이다. 즉, 독립적인 프레임을 수신할 시, 클라이언트는 프레임을 직접 디코딩하고, 스크린 상에서 시청자에게 렌더링할 수 있다. 따라서, 클라이언트 측에서, 시작점에 대응하는 프레임에 도달하기 위해 다른 프레임을 먼저 디코딩할 필요가 없다. 따라서 시청자에 대한 지연은 종래 기술의 솔루션보다 현저히 낮을 것이다. 또한, 세그먼트화된 스트리밍의 경우처럼, 시작하기 전에 불필요한 프레임을 다운로드할 필요가 없다. 또한, 서버 측에서 비디오의 세그먼트화가 없다. 따라서, 세그먼트의 시작부에서 불필요한 추가의 독립적인 및 의존적인 프레임들이 클라이언트로 송신되지 않는다.
유리하게, 제 1 프레임을 취출하는 단계는, 제 1 프레임을 다음으로서 선택하는 단계를 더 포함한다:
- 시간상 임의의 시작점에 가장 가까운 시간 독립적인 버전의 프레임;
- 시간상 임의의 시작점에 후속하는 시간 독립적인 버전의 프레임; 또는
- 시간상 임의의 시작점 이전의 시간 독립적인 버전의 프레임.
프레임은 정확한 시간 순간에 장면의 표현에 대응한다. 따라서, 선택된 시작점은 통상적으로 위의 기준에 따라 독립적인 버전이 선택될 수도 있는 2 개의 프레임들 사이에 속할 것이다.
일 실시형태에 따르면, 시간 독립적인 버전은 시간 의존적인 버전보다 더 낮은 프레임 레이트를 갖는다. 독립적인 프레임이 통상적으로 의존적인 프레임보다 상당히 크기 때문에 저장 공간을 절약할 수 있다. 예를 들어, 독립적인 버전의 프레임 레이트는 의존적인 버전의 레이트의 절반일 수도 있다.
일 실시형태에 따르면, 요청을 수신하는 단계는 다음을 더 포함한다:
- 스트림의 적어도 제 1 프레임에 대한 제 1 요청을 수신하는 단계; 및
- 적어도 제 1 프레임에 후속하는 프레임들에 대한 제 2 요청을 수신하는 단계.
따라서 클라이언트는 독립적인 버전과 의존적인 버전의 프레임들에 대한 요청을 분리한다. 이는 특히 캐싱에 유리하다, 즉, 서버 자체가 캐싱 서버일 때 또는 서버와 클라이언트 사이에 캐싱 서버가 존재할 때 유리하다. 독립적인 프레임과 함께 의존적인 프레임의 조합에 대한 요청은 거의 발생하지 않지만, 의존적인 프레임 단독에 대한 요청은 특히 캐싱 서버가 프레임 범위를 식별할 수 있는 경우, 훨씬 더 많이 발생한다.
더 유리하게, 제 2 요청은 적어도 제 1 프레임에 후속하는 프레임으로 시작하는 비디오의 부분에 대해 표시하는 바이트 범위를 포함하는 바이트 범위 요청이다. 캐싱 서버들은 통상적으로 바이트 범위 요청을 인식하고, 이들이 그들의 프레임을 포함하는 다른 바이트 범위에 대한 요청으로부터 캐싱되는 경우에도 바이트 범위 요청 내에 있는 캐싱된 프레임을 서빙하도록 설계된다. 결과적으로, 비디오의 완전한 의존적인 버전이 캐싱 서버를 통과하자마자, 캐싱 서버는 오리진 서버에서 이들 프레임을 다시 다운로드할 필요 없이 클라이언트가 요청한 임의의 바이트 범위를 서빙할 것이다.
선행하는 청구항들 중 어느 한 항에 따른 서버에서, 상기 프레임을 전송하는 것은 클라이언트와의 청크 전송 인코딩 세션의 청크들로서 프레임들을 전송하는 것을 포함한다. 이는 클라이언트와 서버 간에 오직 하나의 단일 전송 세션만 설정되고, 이에 따라 전송 효율 및 전체 레이턴시를 추가로 향상시킨다는 장점을 갖는다.
바람직하게, 요청은 하나 이상의 HTTP GET 요청을 포함한다.
일 실시형태에 따르면, 서버는 다음 단계들을 수행하도록 추가로 구성된다:
- 적어도 제 1 프레임에 후속하는 프레임들을 전송하는 동안, 클라이언트로부터 적어도 제 1 프레임에 후속하는 프레임들 중 하나의 시간 독립적인 버전에 대한 추가 요청을 수신하는 단계;
- 그 후, 비디오의 시간 독립적인 버전으로부터 프레임들 중 하나의 요청된 시간 독립적인 버전을 취출하는 단계; 및
- 프레임들 중 하나의 취출된 시간 독립적인 버전을 클라이언트에 전송하는 단계.
즉, 재생 동안, 클라이언트는 예를 들어, 재생 품질을 개선하기 위해 다른 독립적인 버전의 프레임을 요청할 수도 있다.
일 실시형태에 따르면, 서버는 클라이언트로부터 프레임에 대한 요청을 수신할 시, 소스 비디오로부터 비디오의 시간 독립적인 버전의 프레임을 생성하도록 추가로 구성된다. 독립적인 버전의 프레임들은 의존적인 버전보다 훨씬 적게 요청될 것이다. 저장 공간을 절약하기 위해, 요청시 독립적인 프레임이 생성될 수도 있다.
일 실시형태에 따르면, 서버는 클라이언트로부터 오리진 서버로의 요청들의 캐싱된 서빙을 위한 캐싱 서버이다. 즉, 하나 이상의 요청된 프레임들의 버전이 서버 자체에서 사용가능하지 않은 경우, 캐싱 서버는 요청을 업스트림 서버로 포워딩하거나 오리진 서버로 직접 포워딩할 것이다.
일 실시형태에 따르면, 서버는 오리진 서버이다. 즉, 오리진 서버는 클라이언트와 오리진 서버 사이의 클라이언트 또는 캐싱 서버에서 오는 모든 요청들을 서빙할 것이다.
선행하는 청구항들 중 어느 한 항에 따른 서버는 상이한 품질들로 적어도 시간 독립적인 버전에서 요청시 비디오가 클라이언트에 사용가능하게 하도록 추가로 구성되고; 서버는:
- 적어도 제 1 프레임에 후속하는 프레임들을 전송하는 동안, 클라이언트로부터 상이한 품질을 갖는 하나 이상의 프레임들의 시간 의존적인 또는 독립적인 버전에 대한 추가의 요청을 수신하고; 그리고
- 상이한 품질을 갖는 하나 이상의 프레임들을 제공하도록
추가로 구성된다.
이는 비트 레이트 적응의 구현을 초래하며, 여기서 클라이언트는 비디오 스트림의 상이한 품질 또는 비트 레이트로부터 선택할 수도 있다. 서버가 세그먼트들에 의존하지 않기 때문에, 품질의 변화는 하나의 프레임의 시간 내에 실행되고, 그에 의해 네트워크 리소스의 변경에 대한 훨씬 더 빠른 응답을 제공할 수도 있다.
제 2 양태에 따르면, 본 발명은 통신 네트워크를 통해 서버로부터 비디오를 스트리밍하기 위한 클라이언트에 관한 것이며; 상기 비디오는 요청시 적어도 시간 독립적인 및 시간 의존적인 버전으로 서버로부터 클라이언트로 사용가능하며; 상기 클라이언트는, 비디오 내의 시간상 임의의 시작점에 대해 다음 단계들을 수행하도록 추가로 구성된다:
- 시간상 앞서는 임의의 시작점으로부터 비디오의 스트림을 수신하라는 요청을 서버에 전송하는 단계;
- 서버로부터 비디오의 시간 독립적인 버전으로부터 스트림의 적어도 제 1 프레임을 수신하는 단계로서, 상기 제 1 프레임은 시간상 시작점에 대응하는, 상기 제 1 프레임을 수신하는 단계;
- 서버로부터 시간 의존적인 버전으로부터 적어도 제 1 프레임에 후속하는 프레임들을 수신하는 단계; 및
- 적어도 제 1 프레임 다음의 프레임들에 의해 시간상 앞서는 시작점으로부터 비디오를 재생하는 단계.
제 1 프레임은 다음 중 어느 하나에 추가로 대응할 수도 있다:
- 시간상 임의의 시작점에 가장 가까운 시간 독립적인 버전의 프레임;
- 시간상 임의의 시작점에 후속하는 시간 독립적인 버전의 프레임; 및
- 시간상 임의의 시작점 이전의 시간 독립적인 버전의 프레임.
시간 독립적인 버전은 시간 의존적인 버전보다 더 낮은 프레임 레이트를 추가로 가질 수도 있다.
일 실시형태에 따르면, 요청을 전송하는 단계는 다음을 더 포함한다:
- 스트림의 적어도 제 1 프레임에 대한 제 1 요청을 전송하는 단계; 및
- 적어도 제 1 프레임에 후속하는 프레임들에 대한 제 2 요청을 전송하는 단계.
일 실시형태에 따르면, 제 2 요청은 적어도 제 1 프레임에 후속하는 프레임들로 시작하는 비디오의 부분에 대해 표시하는 바이트 범위를 포함하는 바이트 범위 요청을 포함한다.
일 실시형태에 따르면, 프레임들을 수신하는 것은 클라이언트와 청크된 전송 인코딩 세션의 청크들로서 프레임들을 수신하는 것을 포함한다.
일 실시형태에 따르면, 클라이언트는 다음 단계들을 수행하도록 추가로 구성된다:
- 적어도 제 1 프레임에 후속하는 프레임들을 수신하는 동안, 적어도 제 1 프레임에 후속하는 프레임들 중 하나의 시간 독립적인 버전에 대한 추가 요청을 전송하는 단계;
- 그 후, 프레임들 중 하나의 시간 독립적인 버전을 클라이언트에 수신하는 단계.
일 실시형태에 따르면, 클라이언트는 다음 단계들을 수행하도록 추가로 구성된다:
- 적어도 제 1 프레임에 후속하는 프레임들을 수신하는 동안, 상이한 품질을 갖는 하나 이상의 프레임들의 시간 의존적인 또는 독립적인 버전에 대한 추가의 요청을 전송하는 단계; 및
- 그 후, 서버로부터 상이한 품질을 갖는 하나 이상의 프레임들을 수신하는 단계.
제 3 양태에 따르면, 본 발명은 제 1 양태에 따른 서버 및 제 2 양태에 따른 클라이언트를 포함하는 통신 시스템에 관한 것이다.
제 4 양태에 따르면, 본 발명은 제 1 양태에 따른 오리진 서버로서의 제 1 서버, 제 1 양태에 따른 캐싱 서버로서의 제 2 서버, 및 바람직하게는 제 2 양태에 따른 하나 이상의 클라이언트들을 포함하는 통신 시스템에 관한 것이다.
제 5 양태에 따르면, 본 발명은 통신 네트워크를 통해 클라이언트로 비디오를 스트리밍하기위한 컴퓨터 구현 방법에 관한 것이고; 상기 비디오는 요청시 적어도 시간 독립적인 버전 및 시간 의존적인 버전으로 클라이언트에 사용가능하며; 상기 방법은 다음 단계들을 포함한다:
- 클라이언트로부터 시간상 앞서는 임의의 시작점으로부터 비디오의 스트림을 수신하라는 요청을 수신하는 단계;
- 비디오의 시간 독립적인 버전으로부터 스트림의 적어도 제 1 프레임을 취출하는 단계로서, 상기 제 1 프레임은 시간상 시작점에 대응하는, 상기 제 1 프레임을 취출하는 단계;
- 시간 의존적인 버전으로부터 적어도 제 1 프레임에 후속하는 프레임들을 취출하는 단계; 및
- 상기 적어도 제 1 프레임을 클라이언트에 전송하고 적어도 제 1 프레임에 후속하는 프레임들을 클라이언트에 전송하여, 비디오가 클라이언트로 스트리밍되게 하고 시간상 시작점과 연관된 적어도 하나의 시간 독립적인 프레임으로 시작하게 하는 단계.
제 6 양태에 따르면, 본 발명은 통신 네트워크를 통해 서버로부터 비디오를 스트리밍하기 위한 컴퓨터 구현 방법에 관한 것이고; 상기 비디오는 요청시 적어도 시간 독립적인 버전 및 시간 의존적인 버전으로 서버로부터 사용가능하며; 상기 방법은 다음 단계들을 포함한다:
- 시간상 앞서는 임의의 시작점으로부터 비디오의 스트림을 수신하라는 요청을 서버에 전송하는 단계;
- 서버로부터 비디오의 시간 독립적인 버전으로부터 스트림의 적어도 제 1 프레임을 수신하는 단계로서, 상기 제 1 프레임은 시간상 시작점에 대응하는, 상기 제 1 프레임을 수신하는 단계;
- 서버로부터 시간 의존적인 버전으로부터 적어도 제 1 프레임에 후속하는 프레임들을 수신하는 단계; 및
- 적어도 제 1 프레임 다음의 프레임들에 의해 시간상 앞서는 시작점으로부터 비디오를 재생하는 단계.
제 7 양태에 따르면, 본 발명은 컴퓨터 프로그램 제품에 관한 것이며, 컴퓨터 프로그램 제품은 프로그램이 컴퓨터 상에서 실행될 때 제 5 및 제 6 양태에 따른 방법을 수행하기 위한 컴퓨터 실행가능 명령들을 포함한다.
제 8 양태에 따르면, 본 발명은 제 7 양태에 따른 컴퓨터 프로그램 제품을 포함하는 컴퓨터 판독가능 저장 매체에 관한 것이다.
도 1 은 본 발명의 일 실시형태에 따른 서버, 비디오를 갖는 데이터 스토리지 및 클라이언트를 도시한다.
도 2 는 본 발명의 다른 실시형태에 따른 서버 및 스토리지를 도시한다.
도 3 은 본 발명의 또 다른 실시형태에 따른 스토리지를 도시한다.
도 4 는 본 발명의 또 다른 실시형태에 따른 서버 및 스토리지를 도시한다.
도 5 는 본 발명의 일 실시형태에 따른 서버 및 비디오 스트림 요청들을 서빙하기 위해 서버에 의해 수행되는 단계들을 도시한다.
도 6 은 본 발명의 일 실시형태에 따른 오리진 서버, 캐싱 서버 및 클라이언트를 도시한다.
도 7 은 본 발명의 다양한 실시형태들에 따른 방법을 수행하기 위한 적절한 컴퓨팅 시스템을 도시한다.
도 2 는 본 발명의 다른 실시형태에 따른 서버 및 스토리지를 도시한다.
도 3 은 본 발명의 또 다른 실시형태에 따른 스토리지를 도시한다.
도 4 는 본 발명의 또 다른 실시형태에 따른 서버 및 스토리지를 도시한다.
도 5 는 본 발명의 일 실시형태에 따른 서버 및 비디오 스트림 요청들을 서빙하기 위해 서버에 의해 수행되는 단계들을 도시한다.
도 6 은 본 발명의 일 실시형태에 따른 오리진 서버, 캐싱 서버 및 클라이언트를 도시한다.
도 7 은 본 발명의 다양한 실시형태들에 따른 방법을 수행하기 위한 적절한 컴퓨팅 시스템을 도시한다.
본 발명은 서버로부터 클라이언트로의 스트리밍에 관한 것이다. 클라이언트가 수신한 비디오는 비디오 애플리케이션 내에서 디코딩 또는 압축 해제되고 차례로 재생되는 주문형 스틸 사진 또는 프레임의 조합이다. 이와 관련하여, 클라이언트는 통신 네트워크를 통해 비디오의 디지털 표현을 수신할 수 있고, 그 표현을, 스크린 상에서 사용자에게 디스플레이될 수 있는 프레임 시퀀스로 디코딩할 수 있는 임의의 디바이스일 수도 있다. 클라이언트로 적합한 디바이스의 예로는 데스크톱 및 랩톱 컴퓨터, 스마트폰, 태블릿, 셋탑 박스 및 TV 가 있다. 클라이언트는 또한, 임의의 이러한 디바이스에서 실행되는 비디오 플레이어 애플리케이션을 지칭할 수도 있다. 비디오의 스트리밍은, 클라이언트가 서버로부터 비디오를 요청하고, 비디오의 모든 프레임을 수신하지 않고 제 1 프레임을 수신하면 비디오 재생을 시작할 수 있다는 개념을 지칭한다. 스트리밍 서버는 통신 네트워크를 통해, 예를 들어 인터넷을 통해, WAN (Wide Area Network) 또는 LAN (Local Area Network) 을 통해 클라이언트의 요청시에 따라 이러한 비디오의 스트리밍을 클라이언트에 제공할 수 있는 서버이다.
스트리밍 서버로부터 수신된 비디오는 H.265/MPEG-H HEVC, H.264/MPEG-4 AVC, H.263/MPEG-4 Part 2, H.262/MPEG-2, SMPTE 421 M (VC-1), AOMedia Video 1 (AV1) 및 VP9 와 같은 비디오 압축 사양 또는 표준에 따라 압축된다. 이들 표준들에 따르면 비디오 프레임은 공간 이미지 압축 및 시간 모션 보상을 사용하여 사이즈가 압축된다. 오직 공간 이미지 압축만이 적용되거나 또는 압축이 적용되지 않는 프레임들은 시간 독립적인 프레임, 키 프레임, 독립적인 프레임 또는 I-프레임으로 지칭된다. 따라서, 키 프레임은 비디오의 다른 프레임들과 독립적으로 디코딩가능한 프레임이다. 이미지 압축과 결합하여 시간 모션 보상이 적용되는 프레임들은 시간 의존적인 프레임 또는 짧게 의존적인 프레임으로 지칭된다. 따라서 의존적인 프레임은 다른 프레임들의 정보가 그들을 압축해제하기 위해 필요한 프레임이다. 의존적인 프레임은 때때로, P 프레임과 B 프레임으로 추가로 분류된다. P 프레임은 디코딩하기 위해 이전 프레임으로부터의 데이터를 사용할 수 있고, 따라서 I 프레임보다 더 압축가능하다. B 프레임은 디코딩하기 위해 이전 프레임과 이후 프레임 양자를 사용할 수 있고, 따라서 가장 많은 양의 데이터 압축을 달성할 수도 있다.
도 1 은 본 발명의 일 실시형태에 따라 클라이언트 (150) 에 비디오 스트림을 제공하기 위한 스트리밍 서버 (100) 를 도시한다. 도 1 은 비디오 플레이어 (159), 예를 들어 비디오 플레이어 애플리케이션 또는 웹 브라우저 내에서 비디오 (180) 를 재생하기 위해 클라이언트 (150) 에 의해 수행되는 단계들 (151 내지 156) 을 도시한다. 클라이언트 (150) 에 의해 수행되는 단계들은 서버 (100) 에 의해 수행되는 단계들 (110 내지 114) 과 상호작용한다. 특정 시간 순간에, 클라이언트 (150) 는 단계 (151) 에서 비디오 내에서 선택된 시간 순간, 즉 시작 시간 (121) 에 시작하는, 서버 (100) 로부터 비디오를 스트리밍할 것을 결정한다. 시작 시간 (121) 은 비디오의 시작부일 수도 있고, 결과적으로 사용자가 비디오를 시청하기 시작한다. 시작 시간 (121) 은 또한, 비디오의 재생 동안 시청자에 의한 포워드 탐색 액션의 결과로서 비디오의 코스 내의 임의의 시간일 수도 있다. 시작 시간 (121) 은 또한, 비디오 스트림이 라이브 스트림인, 현재 시간에 대응할 수도 있다. 그 후, 클라이언트 (150) 는 시작 시간 (121) 에 대응하는 키 프레임에 대한 요청을 서버 (100) 에 전송하는 단계 (152) 로 진행한다.
그 후, 서버 (100) 는 단계 (110) 에서 요청을 수신한다. 그 후에, 서버는 비디오의 시간 독립적인 버전 (170) 으로부터 요청된 시작 시간 (121) 에 대응하는 키 프레임을 결정한다. 도 1 의 실시형태에서, 이 시간 독립적인 버전은 서버 (100) 에 의해 액세스가능한 데이터 저장소 (120) 에서 사용가능하다. 비디오의 시간 독립적인 버전은 오직 키 프레임 (171 내지 176) 만을 포함하고 의존적인 프레임들을 포함하지 않는 비디오의 버전이다. 이 버전과는 별도로, 데이터 저장소 (120) 는 프레임 (161 내지 166) 을 포함하는 비디오의 시간 의존적인 버전 (160) 도 포함한다. 클라이언트가 비디오 내의 임의의 시작점에 대응하는 독립적인 프레임을 요청할 수도 있으므로, 비디오의 독립적인 버전 (160) 은 요청시 클라이언트 (150) 에 사용한 것이 확인될 수도 있다. 대응하는 키 프레임을 결정하기 위해, 서버 (100) 는 예를 들어, 다음 중 하나를 수행할 수도 있다 : i) 시작 시간 (121) 에 가장 가까운 타임스탬프를 갖는 키 프레임 (173) 을 선택하는 것; ii) 시작 시간 (121) 에 후속하는 키 프레임 (173) 을 선택하는 것; 또는 iii) 시작 시간 (121) 이전에 오는 키 프레임 (172) 을 선택하는 것. 키 프레임 (173) 의 취출 후에, 서버 (100) 는 클라이언트 (150) 에 응답하여 키 프레임 (173) 을 전송한다. 그 후, 클라이언트는 단계 (153) 에서 키 프레임 (173) 을 수신하고, 디코딩을 위해 이를 비디오 플레이어 (159) 에 제공한다.
그 후, 클라이언트 (150) 는 비디오의 의존적인 버전 (160) 의 후속 프레임을 요청하는 단계 (154) 로 진행한다. 대안적으로, 단계 (154) 는 또한, 의존적인 프레임의 적시 전달을 더 보장하기 위해 제 1 요청 (152) 과 병렬로 수행될 수도 있다. 서버 (100) 에서, 요청은 서버가 요청된 의존적인 프레임을 취출하기 위한 단계 (113) 로 진행하는 단계 (112) 에서 수신된다. 이와 관련하여, 서버는 키 프레임 (173) 에 후속하는 제 1 의존적인 프레임 (164) 을 취출하고, 그 후 응답으로 의존적인 프레임 (164) 을 클라이언트에 전송한다. 그 후에, 단계 (113 및 114) 는 요청의 최종 의존적인 프레임 (166) 이 클라이언트 (150) 에 의해 수신될 때까지 계속 반복된다. 클라이언트 (150) 의 요청에 명시된 종료 프레임 또는 시간이 없으면, 서버는 비디오의 종료까지 또는 비디오의 종료 전에 미리 정의된 특정 최대 재생 시간까지 후속하는 의존적인 프레임을 전송한다.
클라이언트 (150) 측에서, 유사한 단계 (155 및 156) 가 계속해서 반복되며, 즉, 단계 (155) 에서, 클라이언트 (150) 는 서버 (100) 로부터 다음 의존적인 프레임을 수신하고 프레임을 플레이어 (159) 로 포워딩한다. 그 결과, 비디오 플레이어 (159) 는 제 1 키 프레임 (173) 다음에 의존적인 프레임 (164 내지 166) 을 포함하는 비디오 스트림 (180) 을 수신한다.
유리하게는, 클라이언트 (150) 와 서버 간의 요청 및 응답은 HTTP (Hypertext Transfer Protocol) 에 따라, 즉 클라이언트로부터의 HTTP GET 요청 및 서버로부터의 HTTP 응답에 의해 수행된다. 더 유리하게는, 후속하는 프레임에 대한 제 2 요청 (154) 은 의존적인 프레임이 단일의 영구적 연결을 통해 스트리밍되게 하는 서버와의 청크된 전송 인코딩 세션을 확립한다. 청크된 전송 인코딩에 대한 지원은 HTTP/1.1 에서 도입되었다. 더욱 유리하게는, 후속 프레임에 대한 요청 (154) 은 바이트 범위 요청이며, 여기서 요청된 바이트 범위는 요청된 키 프레임 (173) 이후에 시작하는 의존적인 프레임의 범위에 대응한다. 바이트 범위 요청에 대한 지원은 또한 HTTP/1.1 에서 도 도입되었으며, 2014 년 6 월 lETF 의 RFC 7233 에 자세히 명시된다. 독립적인 버전과 의존적인 버전 양자에서 비디오의 사용가능성에 관한 정보는 서버에서 사용가능한 매니페스트 파일에 URL 형식으로 제공될 수도 있으며, 예를 들어, 매니페스트 파일은 ISO/IEC 23000-19 에 따른 세그먼트화된 미디어에 대한 CMAF (Common Media Application Format) 를 따른다.
도 2 는 본 발명의 일 실시형태에 따른 스트리밍 서버 (200) 를 도시한다. 서버 (100) 와 유사하게, 서버 (200) 는 또한 요청시 클라이언트에게 비디오의 시간 독립적인 버전 (170) 및 시간 의존적인 버전 (160) 을 제공한다. 추가적으로, 서버 (200) 는 또한 클라이언트에 의한 비트 레이트 적응을 허용하는 단일 비디오의 상이한 비트 레이트 및/또는 해상도를 제공한다. 스토리지 (220) 는 독립적인 프레임 (171 내지 176) 을 갖는 제 1 해상도를 갖는 비디오의 제 1 시간 독립적인 버전 (170) 을 포함한다. 스토리지 (220) 는 또한, 각각 동일한 해상도를 가지지만 상이한 비트 레이트를 갖는 2 개의 시간 의존적인 버전 (160 및 260) 을 포함한다. 버전 (160 및 260) 은 각각 프레임 (161 내지 166 및 261 내지 266) 을 갖는다. 일 예로서, 버전 (160) 은 더 낮은 비트 레이트에서 더 낮은 비디오 품질을 제공하는 제 2 버전 (260) 보다 더 높은 비트 레이트를 갖는 비디오의 고품질 버전일 수도 있다. 유사하게, 스토리지 (220) 는 독립적인 프레임들 (271 내지 276) 을 갖는 제 2 해상도를 갖는 비디오의 제 2 시간 독립적인 버전 (270) 을 포함할 수도 있다. 제 2 해상도는 예를 들어, 더 작은 화면 해상도를 갖는 모바일 디바이스들에 타겟팅된 더 작은 해상도일 수도 있다. 스토리지 (220) 는 또한, 각각 제 2 해상도를 가지지만 다시 상이한 비트 레이트를 갖는 2 개의 시간 의존적인 버전 (280 및 290) 을 포함한다. 버전 (280 및 290) 은 각각 프레임 (281 내지 286 및 291 내지 296) 을 갖는다.
단계들 (210 내지 214) 은 비디오를 클라이언트 디바이스, 예를 들어 도 1 의 클라이언트 (150) 로 스트리밍할 때 서버 (200) 에 의해 수행되는 단계를 예시한다. 제 1 단계 (210) 에서, 서버 (200) 는 선택된 시작 시간 (121) 으로부터, 선택된 해상도, 예를 들어 제 1 해상도로 및 특정 비트 레이트, 예를 들어 더 높은 비트 레이트로 비디오를 스트리밍하라는 요청을 클라이언트로부터 수신한다. 그 후에, 서버 (200) 는 단계 (211) 로 진행하여, 시간 독립적인 프레임 (173) 은 예를 들어, 도 1 에 대해 예시된 것과 유사한 방식으로 데이터 저장소 (220) 로부터 취출되고, 이 프레임 (173) 을 클라이언트에 전송한다. 그 후 또는 병렬로, 서버 (200) 는 단계 (213) 으로 진행하여, 비디오의 다음 의존적인 프레임 (164) 을 취출하고 단계 (214) 에서 이를 클라이언트에 전송한다. 요청된 종료 프레임이 클라이언트에 전송될 때까지, 단계들 (213 및 214) 이 계속 반복된다.
도 2 의 예에서, 독립적인 프레임과 의존적인 프레임 모두를 취출하기 위해 클라이언트는 단일 요청을 발행한다. 대안적으로, 요청은 또한, 도 1 의 실시형태에 예시된 바와 같이 독립적인 프레임 (173) 에 대한 제 1 요청 및 후속하는 의존적인 프레임 (164-166) 에 대한 제 2 요청에 의해 수행될 수도 있다.
추가로, 클라이언트는 또한 요청된 해상도 및/또는 비트 레이트를 변경하여 비디오의 의존적인 버전들 사이에서 변화할 수도 있다. 이 변화는 특정 비트 레이트 및 해상도에 대해 선택된 시작점에서 비디오에 대한 새로운 요청을 발행하여 수행될 수도 있다. 그 후에, 동일한 단계들 (210 내지 214) 이 서버에 의해 수행될 수도 있다.
도 3 은 본 발명의 일 실시형태에 따른 데이터 스토리지 (320) 를 도시한다. 데이터 스토리지 (320) 는 본 발명의 실시형태들에 따른 스트리밍 서버, 예를 들어 스트리밍 서버 (100 및 200) 와 상호작용하는데 사용될 수도 있다. 데이터 스토리지 (320) 는 비디오의 3 개의 버전들 (370, 160 및 260) 을 저장한다. 제 1 버전 (370) 은 키 프레임 (371 내지 374) 을 포함하는 시간 독립적인 버전이다. 제 2 및 제 3 버전 (160 및 260) 은 개별 프레임들 (161 내지 166 및 261 내지 260) 을 갖는 시간 의존적인 버전이다. 제 1 버전 (370) 의 프레임 레이트는 의존적인 버전 (160 및 260) 의 프레임 레이트보다 낮다. 도 3 의 예에서, 제 1 버전 (370) 의 프레임 레이트는 의존적인 버전 (160 및 260) 의 프레임 레이트의 절반이다. 이는 모든 의존적인 프레임이 독립적인 프레임과 정렬되지 않는 것을 의미한다. 그 후에, 스트리밍 서버가 시작 시간 (121) 에 대응하는 독립적인 프레임에 대해 요청할 때, 도 1 의 단계 (111) 에 대해서 동일한 선택 프로세스가 뒤따를 수도 있다. 차이점은 선택된 독립적인 프레임이 도 1 및 도 2 의 경우에서보다 시작 시간 (121) 으로부터 시간상 더 큰 오프셋을 가질 수도 있다는 점이다. 클라이언트의 요청과 제 1 프레임의 재생 사이의 지연은 동일할 것이다. 예를 들어, 키 프레임 (371) 은 요청된 비트 레이트에 의존하여 독립적인 프레임 (371) 이 클라이언트로 전송 된 다음에 의존적인 프레임 (162 내지 166) 또는 의존적인 프레임 (262 내지 266) 이 뒤따르는, 시작 시간 (121) 에 대응하는 것으로 스트리밍 서버에 의해 선택될 수도 있다. 대안적으로, 키 프레임 (372) 은 다시 요청된 비트 레이트에 의존하여 키 프레임 (372) 이 클라이언트로 전송된 다음에 의존적인 프레임 (164 내지 166) 또는 의존적인 프레임 (264 내지 266) 이 뒤따르는, 시작 시간 (121) 에 대응하는 것으로 스트리밍 서버에 의해 선택될 수도 있다.
도 4 는 본 발명의 일 실시형태에 따른 스트리밍 서버 (400) 를 도시한다. 서버 (100 및 200) 와 유사하게, 서버 (400) 는 또한 요청시 비디오의 시간 독립적인 버전 (도 4 에 도시되지 않음) 및 시간 의존적인 버전 (160, 260, 280 및 290) 을 클라이언트에 제공한다. 스토리지 (220) 와 유사하게, 서버 (400) 는 데이터 스토리지 (420) 로부터 의존적인 버전을 취출한다. 스토리지 (420) 는 또한, 각각 동일한 제 1 해상도를 가지지만 상이한 비트 레이트를 갖는 2 개의 시간 의존적인 버전 (160 및 260) 을 포함한다. 버전 (160 및 260) 은 각각 프레임 (161 내지 166 및 261 내지 266) 을 갖는다. 스토리지 (420) 는 또한, 각각 제 2 해상도를 가지지만 다시 상이한 비트 레이트를 갖는 2 개의 시간 의존적인 버전 (280 및 290) 을 포함한다. 버전 (280 및 290) 은 각각 프레임 (281 내지 286 및 291 내지 296) 을 갖는다. 데이터 저장소 (220) 와는 달리, 데이터 저장소 (420) 는 비디오의 오직 하나의 독립적인 버전 (470) 만을 포함한다. 바람직하게, 이 버전 (470) 은 적어도 의존적인 버전들 중 가장 높은 해상도를 갖는다. 버전 (470) 은 비디오의 소스 프레임을 더 포함할 수도 있으며, 여기서 소스 프레임은 의존적인 버전과 상이한 인코딩, 예를 들어 무손실 압축 또는 전혀 압축이 없는 경우를 갖는다. 따라서, 버전 (470) 은 클라이언트의 디코더에 의해 지원되지 않는 독립적인 프레임들을 가질 수도 있다.
단계들 (410 내지 415) 은 비디오를 클라이언트 디바이스, 예를 들어 도 1 의 클라이언트 (150) 로 스트리밍할 때 서버 (400) 에 의해 수행되는 단계를 예시한다. 제 1 단계 (410) 에서, 서버 (400) 는 선택된 시작 시간 (121) 으로부터, 선택된 해상도, 예를 들어 제 1 해상도로 및 특정 비트 레이트, 예를 들어 더 높은 비트 레이트로 비디오를 스트리밍하라는 요청을 클라이언트로부터 수신한다. 그 다음, 서버 (400) 는 단계 (411) 로 진행하고, 데이터 저장소 (420) 에 있는 비디오의 소스 버전 (470) 으로부터 시작 시간 (121) 에 대응하는 소스 프레임 (473) 을 취출한다. 이 소스 프레임 (473) 은 의존적인 버전과 상이한 해상도 및/또는 코딩에 있을 수도 있다. 따라서, 단계 (412) 에서, 서버 (400) 는 소스 프레임 (473) 으로부터, 요청된 해상도로 그리고 의존적인 버전의 인코딩에 따라 키 프레임 (173) 을 생성한다. 다음 단계 (413) 에서, 이 키 프레임 (173) 은 클라이언트로 전송된다. 나머지 단계 (414 및 415) 는 도 2 의 각 단계 (213 및 214) 와 동일할 수도 있다. 단계 (414) 에서, 서버는 요청된 해상도 및 비트 레이트로 비디오의 후속하는 의존적인 프레임 (164) 을 취출하고 단계 (415) 에서 이를 클라이언트로 전송한다. 요청된 종료 프레임 (166) 이 클라이언트에 전송될 때까지, 단계들 (414 및 415) 이 계속 반복된다.
도 5 는 본 발명의 일 실시형태에 따른 스트리밍 서버에 의해 수행되는 단계를 도시한다. 단계는 예를 들어, 서버 (100, 200 및 400) 에 의해 수행될 수도 있다. 단계 (501) 에서, 서버는 클라이언트에 의존적인 프레임을 스트리밍한다. 따라서, 단계 (501) 은 도 1 의 단계 (113 및 114), 도 2 의 단계 (213 및 214) 또는 도 4 의 단계 (414 및 415) 의 조합에 대응할 수도 있다. 의존적인 프레임을 전송하는 동안, 서버는 단계 (502) 에서 추가의 독립적인 프레임에 대한 추가 요청을 클라이언트로부터 수신할 수도 있다. 클라이언트는 디스플레이된 비디오에 나타나는 아티팩트들을 복원하기 위해 이를 실행할 수도 있다. 요청을 수신하면, 서버는 단계 (503) 으로 진행하여 요청된 독립적인 프레임을 취출하고, 프레임을 클라이언트에 전송한다. 그 후에, 서버는 단계 (501) 로 리턴하여 의존적인 프레임을 계속 전송한다.
도 6 은 스트리밍 네트워크 내에서 위의 다양한 실시형태들에 따른 스트리밍 서버의 애플리케이션을 예시한다. 스트리밍 서버는 캐싱 서버 (600) 또는 오리진 서버 (620) 로 사용될 수도 있다. 캐싱 서버 (620) 로 사용될 때, 서버는 단계 (110, 112, 210, 410 및 602) 와 유사하게 단계 (601) 에서 클라이언트 (650) 로부터 독립적인 또는 의존적인 프레임에 대한 요청들을 수신한다. 그 후에, 서버는 먼저 단계 (602) 에서 이 요청에 대한 응답이 데이터 저장소 (610) 에 이미 캐싱되었는지 여부를 확인한다. 그렇다면, 서버는 단계 (603) 에서 요청을 핸들링하고, 요청된 프레임을 클라이언트 (650) 에 제공한다. 데이터 저장소 (610) 를 사용한 요청의 핸들링은 도 1 내지 도 5 의 실시형태들과 관련하여 위에서 설명된 바와 같이 수행된다. 서버 (600) 가 요청을 핸들링할 수 없는 경우, 요청을 업스트림 서버, 예를 들어 오리진 서버 (620) 로 포워딩한다. 이 요청을 수신하면, 오리진 서버는 단계 (603) 에서와 유사한 방식으로 데이터 저장소 (630) 로부터 프레임을 취출함으로써 단계 (621) 에서 요청을 핸들링한다. 서버 (620) 가 오리진 서버이기 때문에, 모든 프레임이 서버 (620) 에 사용가능하고 따라서 요청이 항상 핸들링될 것이다. 요청된 프레임(들)의 응답은 그 후, 클라이언트로 다시 전송된다. 캐싱 서버가 통신 네트워크에서 클라이언트 (650) 와 오리진 서버 (630) 사이에 위치하므로, 캐싱 서버는 단계 (604) 에서 응답을 인터셉트하여 프레임들을 데이터 저장소 (610) 에 캐싱하고, 동시에 응답을 클라이언트 (650) 로 포워딩할 것이다.
본 발명의 실시형태들은 서버와 클라이언트 사이에서 교환되는 비디오 프레임들만을 단독으로 언급함으로써 설명되었다. 비디오 프레임은 또한, 프레임의 재생 동안 클라이언트 플레이어에서 표현될 다른 미디어를 수반할 수도 있다는 것을 이해해야 한다. 다른 미디어는 예를 들어, 하나 이상의 오디오 트랙들 또는 자막들을 포함할 수도 있다. 예를 들어, 파노라마 비디오 또는 다중 시야각을 갖는 비디오의 경우, 다른 미디어는 또한 다른 비디오 스트림의 추가 프레임을 포함할 수도 있다.
각 프레임은 또한, 서버에 의해 추가 헤더가 있는 프레임 패킷으로 캡슐화될 수도 있다. 헤더는 패킷의 콘텐츠에 대한 추가 정보를 포함할 수도 있다. 헤더 정보는 다음 필드들을 포함할 수도 있다:
-
디코드 타임 스탬프: 시간에서 프레임을 파라미터화하는 숫자. 이는 디코딩 타임라인에서 이 프레임의 타임스탬프를 설명하며, 미디어를 제시하는데 사용되는 프레젠테이션 타임라인과 반드시 일치하지는 않는다. 타임스탬프는 타임스케일 단위로 더 표현될 수도 있다 (아래 참조).
-
프레젠테이션 타임 스탬프: 프레젠테이션 타임라인에서 프레임의 위치를 나타내는 숫자. 타임스탬프는 타임스케일 단위로 더 표현될 수도 있다 (아래 참조).
-
타임스케일: 일 초에 통과하는 시간 단위들의 수. 이것은 프레임 내에서 주어진 타임스탬프들 및 지속기간들에 적용된다. 예를 들어, 50 의 타임스케일은 각 시간 단위가 20 밀리초를 측정함을 의미할 것이다. 프레임 지속기간이 7 이면 140 밀리초를 의미할 것이다.
-
프레임 지속기간: 타임스케일 단위로 프레임의 지속기간을 설명하는 정수.
-
타입: 프레임 타입을 설명하는 필드, 예를 들어, 비디오 독립적인 프레임, 비디오 비-독립적인 프레임, 오디오 독립적인 프레임, 오디오 의존적인 프레임.
-
미디어 데이터 사이즈: 프레임 자체의 실제 길이.
독립적인 프레임은 헤더에 다음 필드를 더 포함할 수도 있다:
-
폭: 독립적인 프레임 및 모든 후속하는 의존적인 프레임의 폭.
-
높이: 독립적인 프레임 및 모든 후속하는 의존적인 프레임의 높이.
-
총 지속기간: 이 독립적인 프레임이 속한 트랙의 총 지속기간, 예를 들어 타임스케일 단위로 표현됨.
-
디코더 구성 및 코덱 정보
도 7 은 본 발명의 일 실시형태에 따른 적절한 컴퓨팅 시스템 (700) 을 도시한다. 컴퓨팅 시스템 (700) 은 위의 실시형태들에 따라 도 1 내지 도 6 의 서버 또는 클라이언트에 의해 수행되는 단계를 수행하기에 적합하다. 따라서, 컴퓨팅 시스템 (700) 은 서버 (100, 200, 400, 600 및 620) 의 부분적인 또는 완전한 구현으로서 기능할 수도 있다. 컴퓨팅 시스템 (700) 은 또한, 클라이언트 (150 및 650) 의 부분적인 또는 완전한 구현으로서 기능할 수도 있다. 컴퓨팅 시스템 (700) 은 일반적으로 적절한 범용 컴퓨터로 형성될 수도 있으며, 버스 (710), 프로세서 (702), 로컬 메모리 (704), 하나 이상의 옵션적인 입력 인터페이스 (714), 하나 이상의 옵션적인 출력 인터페이스 (716), 통신 인터페이스 (712), 저장 요소 인터페이스 (706) 및 하나 이상의 저장 요소 (708) 를 포함할 수도 있다. 버스 (710) 는 컴퓨팅 시스템 (700) 의 컴포넌트들 간의 통신을 허용하는 하나 이상의 컨덕터들을 포함할 수도 있다. 프로세서 (702) 는 프로그래밍 명령을 해석하고 실행하는, 임의의 타입의 종래의 프로세서 또는 마이크로프로세서를 포함할 수도 있다. 로컬 메모리 (704) 는 프로세서 (702) 및/또는 판독 전용 메모리 (ROM) 에 의한 실행을 위한 정보 및 명령들을 저장하는 RAM (random-access memory) 또는 다른 타입의 동적 저장 디바이스 또는 프로세서 (702) 에 의한 사용을 위한 정적 정보 및 명령들을 저장하는 다른 타입의 정적 저장 디바이스를 포함할 수도 있다. 입력 인터페이스 (714) 는 키보드 (720), 마우스 (730), 펜, 음성 인식 및/또는 생체 인식 메커니즘 등과 같이, 운영자가 정보를 컴퓨팅 디바이스 (700) 에 입력하게 하는 하나 이상의 종래의 메커니즘들을 포함할 수도 있다. 출력 인터페이스 (716) 는 디스플레이 (740) 등과 같이, 정보를 운영자에게 출력하는 하나 이상의 종래의 메커니즘들을 포함할 수도 있다. 통신 인터페이스 (712) 는 예를 들어, 컴퓨팅 시스템 (700) 이 다른 디바이스 및/또는 시스템과 통신할 수 있게 하는 하나 이상의 이더넷 인터페이스와 같은 임의의 트랜시버-유사 메커니즘을 포함할 수도 있다. 컴퓨팅 시스템 (700) 의 통신 인터페이스 (712) 는 예를 들어, 인터넷과 같은 근거리 네트워크 (LAN) 또는 광역 네트워크 (WAN) 에 의해 그러한 다른 컴퓨팅 시스템에 연결될 수도 있다. 저장 엘리먼트 인터페이스 (706) 는 예를 들어 SATA (Serial Advanced Technology Attachment) 인터페이스 또는 SCSI (Small Computer System Interface) 와 같은 저장 인터페이스를 포함하여 버스 (710) 를 하나 이상의 로컬 디스크, 예를 들어, SATA 디스크 드라이브와 같은 하나 이상의 저장 엘리먼트들 (708) 에 연결하고, 이들 저장 요소들 (708) 로/로부터 데이터의 판독 및 기록을 제어할 수도 있다. 위의 저장 엘리먼트 (708) 가 로컬 디스크로 설명되었지만, 일반적으로 탈착가능 자기 디스크, CD 또는 DVD 와 같은 광학 저장 매체, -ROM 디스크, 솔리드 스테이트 드라이브, 플래시 메모리 카드, … 와 같은 임의의 다른 적절한 컴퓨터 판독가능 매체가 사용될 수 있다. 위에서 설명된 시스템 (700) 은 또한 물리적 하드웨어 위의 가상 머신으로서 실행될 수 있다.
본 발명은 구체적인 실시형태들을 참조하여 예시되지만, 본 발명이 이전의 예시적인 실시형태들이 상세들에 제한되지 않고, 본 발명이 본 발명의 범위를 벗어나지 않고 다양한 변경들 및 변형들로 구현될 수 있다는 것은 당업자에게 명백할 것이다. 본 실시형태들은 따라서 모두와 관련하여 예시적이고 비제한적으로 고려되어야 하고, 본 발명의 범위는 다음의 설명에 의해서라기보다 첨부된 청구항들에 의해 나타내어지고, 청구항들의 범위 내에 모든 변경은 본원에 포함되도록 의도된다.
추가로 용어들 "포함하는" 또는 "포함하여" 는 다른 요소들 또는 단계들을 배제하는 것이 아니고, 용어들 단수는 복수를 배제하지 않으며 컴퓨터 시스템, 프로세서, 또는 또 다른 통합형 유닛과 같은 단일한 요소가 본 청구범위에서 인용되는 몇 개의 수단의 기능을 수행할 수 있다는 것이 본 특허 특허의 정독자에게는 이해될 것이다. 청구범위들에서 임의의 도면 부호는 관련된 각각의 청구항들을 제한하도록 해석되어서는 안 된다. 용어들 "제 1", "제 2", "제 3", "a", "b", "c" 등은, 상세한 설명 또는 청구항들에서 사용될 때, 유사한 엘리먼트들 또는 단계들 간을 구별하도록 도입되고 반드시 순차적인 또는 연대적인 순서를 기술하는 것은 아니다. 유사하게, 용어들 "상부", "하부", "위", "아래" 등은 설명을 목적으로 도입되며 반드시 상대적인 포지션들을 나타내는 것은 아니다. 이렇게 사용된 용어들은 적절한 상황들 하에서 상호교환가능하고 본 발명의 실시형태들은 다른 시퀀스들로, 또는 상기 설명 또는 예시된 것(들)과는 상이한 배향들로 본 발명에 따라 동작 가능함이 이해되어야 한다.
Claims (15)
- 통신 네트워크를 통해 클라이언트 (150, 650) 로 비디오를 스트리밍하기 위한 서버 (100, 200, 400, 600, 620) 로서,
상기 서버는 요청시 적어도 시간 독립적인 버전 (170, 270, 370) 및 시간 의존적인 버전 (160, 260, 280, 290) 으로 상기 비디오가 상기 클라이언트에 사용가능하게 하도록 구성되고,
상기 서버는,
- 상기 클라이언트 (150) 로부터 시간상 앞서는 임의의 시작점 (121) 으로부터 상기 비디오의 스트림 (180) 을 수신하라는 요청 (152, 154) 을 수신 (110, 112, 210, 410, 601) 하는 단계;
- 상기 비디오의 상기 시간 독립적인 버전 (170) 으로부터 상기 스트림의 적어도 제 1 프레임 (173) 을 취출 (111, 211, 411) 하는 단계로서, 상기 제 1 프레임은 시간상 상기 시작점 (121) 에 대응하는, 상기 제 1 프레임 (173) 을 취출 (111, 211, 411) 하는 단계;
- 상기 시간 의존적인 버전 (160) 으로부터 상기 적어도 제 1 프레임 (173) 에 후속하는 프레임들 (164-166) 을 취출 (113, 213, 414) 하는 단계; 및
- 상기 적어도 제 1 프레임 (173) 을 상기 클라이언트에 전송 (111, 211, 413) 하고 상기 적어도 제 1 프레임에 후속하는 상기 프레임들 (164-166) 을 상기 클라이언트에 전송 (114, 214, 415) 하여, 상기 비디오 (180) 가 상기 클라이언트로 스트리밍되게 하고 시간상 상기 시작점 (121) 과 연관된 적어도 하나의 시간 독립적인 프레임 (173) 으로 시작하게 하는 단계
를 수행하도록 추가로 구성되는, 서버 (100, 200, 400, 600, 620). - 제 1 항에 있어서,
상기 제 1 프레임을 취출 (111, 211, 411) 하는 단계는,
상기 제 1 프레임을,
- 시간상 상기 임의의 시작점 (121) 에 가장 가까운 상기 시간 독립적인 버전의 프레임 (173, 273, 372);
- 시간상 상기 임의의 시작점에 후속하는 상기 시간 독립적인 버전의 프레임 (173, 273, 372); 또는
- 시간상 상기 임의의 시작점 이전의 상기 시간 독립적인 버전의 프레임 (172, 272, 371)
로서 선택하는 단계를 더 포함하는, 서버 (100, 200, 400, 600, 620). - 제 1 항 또는 제 2 항에 있어서,
상기 시간 독립적인 버전 (370) 은 상기 시간 의존적인 버전 (160, 260) 보다 더 낮은 프레임 레이트를 갖는, 서버. - 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
상기 요청을 수신 (110, 112) 하는 단계는,
- 상기 스트림의 상기 적어도 제 1 프레임 (173) 에 대한 제 1 요청 (152) 을 수신 (110) 하는 단계; 및
- 상기 적어도 제 1 프레임에 후속하는 상기 프레임들 (164-166) 에 대한 제 2 요청 (154) 을 수신 (112) 하는 단계를 더 포함하는, 서버 (100). - 제 4 항에 있어서,
상기 제 2 요청은 상기 적어도 제 1 프레임에 후속하는 상기 프레임들 (164-166) 로 시작하는 상기 비디오의 부분에 대해 표시하는 바이트 범위를 포함하는 바이트 범위 요청인, 서버 (100). - 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
상기 프레임들 (164-166) 을 전송 (114, 214, 415) 하는 것은, 상기 클라이언트 (150) 와 청크된 (chunked) 전송 인코딩 세션 (130) 의 청크들로서 상기 프레임들을 전송하는 것을 포함하는, 서버 (100, 200, 400, 600, 620). - 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
- 상기 적어도 제 1 프레임에 후속하는 상기 프레임들을 전송 (501) 하는 동안, 상기 클라이언트로부터 상기 적어도 제 1 프레임에 후속하는 상기 프레임들 중 하나의 시간 독립적인 버전에 대한 추가 요청을 수신 (502) 하는 단계;
- 그 후, 상기 비디오의 상기 시간 독립적인 버전으로부터 상기 프레임들 중 하나의 요청된 상기 시간 독립적인 버전을 취출 (503) 하는 단계; 및
- 상기 프레임들 중 하나의 취출된 상기 시간 독립적인 버전을 상기 클라이언트에 전송 (503) 하는 단계
를 수행하도록 추가로 구성되는, 서버 (100, 200, 400, 600, 620). - 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
상기 클라이언트로부터 상기 프레임에 대한 요청을 수신 (410) 할 시, 소스 비디오 (470) 로부터 상기 비디오의 상기 시간 독립 버전의 프레임 (173) 을 생성 (412) 하도록 추가로 구성되는, 서버 (400). - 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
상기 서버는 상기 클라이언트로부터 오리진 서버 (620) 로의 요청들의 캐싱된 서빙을 위한 캐싱 서버 (600) 인, 서버. - 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
상기 서버는 오리진 서버 (620) 인, 서버. - 제 1 항 내지 제 10 항 중 어느 한 항에 있어서,
- 상기 적어도 제 1 프레임에 후속하는 상기 프레임들을 전송하는 동안, 상기 클라이언트로부터 상이한 품질을 갖는 하나 이상의 프레임들의 시간 의존적인 또는 독립적인 버전에 대한 추가 요청을 수신 (210) 하고; 그리고
- 상기 상이한 품질을 갖는 상기 하나 이상의 프레임들을 제공 (211, 214) 하도록
추가로 구성되는, 서버 (100). - 통신 네트워크를 통해 서버 (100, 200, 400, 600, 620) 로부터 비디오를 스트리밍하기 위한 클라이언트 (150, 650) 로서,
상기 비디오는 요청시 적어도 시간 독립적인 버전 (170, 270, 370) 및 시간 의존적인 버전 (160, 260, 280, 290) 으로 상기 서버로부터 상기 클라이언트로 사용가능하며,
상기 클라이언트는, 상기 비디오 내의 시간상 임의의 시작점 (121) 에 대해,
- 시간상 앞서는 상기 임의의 시작점 (121) 으로부터 상기 비디오의 스트림 (180) 을 수신하라는 요청을 상기 서버에 전송 (152, 154) 하는 단계;
- 상기 서버로부터 상기 비디오의 상기 시간 독립적인 버전 (170) 으로부터 상기 스트림의 적어도 제 1 프레임 (173) 을 수신 (153) 하는 단계로서, 상기 제 1 프레임은 시간상 상기 시작점 (121) 에 대응하는, 상기 제 1 프레임 (173) 을 수신 (153) 하는 단계;
- 상기 서버로부터 상기 시간 의존적인 버전 (160) 으로부터 상기 적어도 제 1 프레임 (173) 에 후속하는 프레임들을 수신 (155) 하는 단계; 및
- 상기 적어도 제 1 프레임 다음의 상기 프레임들에 의해 시간상 앞서는 상기 시작점으로부터 상기 비디오를 재생하는 단계
를 수행하도록 추가로 구성되는, 클라이언트 (150, 650). - 통신 네트워크를 통해 클라이언트 (150) 에 비디오를 스트리밍하기 위한 컴퓨터 구현 방법으로서,
상기 비디오는 요청시 적어도 시간 독립적인 버전 (170, 270, 370, 470) 및 시간 의존적인 버전 (160, 260, 280, 290) 으로 상기 클라이언트에 사용가능하며,
상기 방법은,
- 상기 클라이언트 (150) 로부터 시간상 앞서는 임의의 시작점 (121) 으로부터 상기 비디오의 스트림 (180) 을 수신하라는 요청 (152, 154) 을 수신 (110, 112, 210, 410) 하는 단계;
- 상기 비디오의 상기 시간 독립적인 버전 (170) 으로부터 상기 스트림의 적어도 제 1 프레임 (173) 을 취출 (111, 211, 411) 하는 단계로서, 상기 제 1 프레임은 시간상 상기 시작점 (121) 에 대응하는, 상기 제 1 프레임 (173) 을 취출 (111, 211, 411) 하는 단계;
- 상기 시간 의존적인 버전 (160) 으로부터 상기 적어도 제 1 프레임 (173) 에 후속하는 프레임들 (164-166) 을 취출 (113, 213, 414) 하는 단계; 및
- 상기 적어도 제 1 프레임 (173) 을 상기 클라이언트에 전송 (111, 211, 413) 하고 상기 적어도 제 1 프레임에 후속하는 상기 프레임들 (164-166) 을 상기 클라이언트에 전송 (114, 214, 415) 하여, 상기 비디오 (180) 가 상기 클라이언트로 스트리밍되게 하고 시간상 상기 시작점 (121) 과 연관된 적어도 하나의 시간 독립적인 프레임 (173) 으로 시작하게 하는 단계
를 포함하는, 컴퓨터 구현 방법. - 컴퓨터 프로그램 제품으로서,
프로그램이 컴퓨터 상에서 실행될 때, 제 13 항에 기재된 방법을 수행하기 위한 컴퓨터 실행가능 명령들을 포함하는, 컴퓨터 프로그램 제품. - 제 14 항에 기재된 컴퓨터 프로그램 제품을 포함하는 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18152938.9A EP3515075A1 (en) | 2018-01-23 | 2018-01-23 | Video streaming |
EP18152938.9 | 2018-01-23 | ||
PCT/EP2019/051155 WO2019145217A1 (en) | 2018-01-23 | 2019-01-17 | Video streaming |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200109359A true KR20200109359A (ko) | 2020-09-22 |
Family
ID=61022212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207023679A KR20200109359A (ko) | 2018-01-23 | 2019-01-17 | 비디오 스트리밍 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11695816B2 (ko) |
EP (1) | EP3515075A1 (ko) |
KR (1) | KR20200109359A (ko) |
WO (1) | WO2019145217A1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11240280B2 (en) * | 2019-02-19 | 2022-02-01 | Apple Inc. | Low latency streaming media |
CN113473126B (zh) | 2020-03-31 | 2023-03-17 | 阿里巴巴集团控股有限公司 | 视频流的处理方法、装置、电子设备及计算机可读介质 |
EP3902275A1 (en) | 2020-04-21 | 2021-10-27 | THEO Technologies | A method for estimating bandwidth between a video server and a video client |
EP3902276A1 (en) | 2020-04-21 | 2021-10-27 | THEO Technologies | Video stream control |
EP4017012A1 (en) | 2020-12-15 | 2022-06-22 | THEO Technologies | Low latency live video streaming |
US11962808B2 (en) * | 2021-04-18 | 2024-04-16 | Lemon Inc. | Video usability information in common media application format |
EP4099710A1 (en) | 2021-05-31 | 2022-12-07 | THEO Technologies | Buffer management for live video streaming |
US11888956B2 (en) | 2021-06-11 | 2024-01-30 | Microsoft Technology Licensing, Llc | Paginated data transfer techniques |
CN116781951B (zh) * | 2023-08-24 | 2023-12-05 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种清晰度调节方法、装置和服务器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160029076A1 (en) * | 2013-03-13 | 2016-01-28 | Telefonaktiebolaget L M Ericsson (Publ) | Arrangements and Method Thereof for Channel Change during Streaming |
US8869218B2 (en) * | 2013-03-15 | 2014-10-21 | Wowza Media Systems, LLC | On the fly transcoding of video on demand content for adaptive streaming |
US10218981B2 (en) * | 2015-02-11 | 2019-02-26 | Wowza Media Systems, LLC | Clip generation based on multiple encodings of a media stream |
-
2018
- 2018-01-23 EP EP18152938.9A patent/EP3515075A1/en active Pending
-
2019
- 2019-01-17 US US16/964,299 patent/US11695816B2/en active Active
- 2019-01-17 KR KR1020207023679A patent/KR20200109359A/ko active IP Right Grant
- 2019-01-17 WO PCT/EP2019/051155 patent/WO2019145217A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20210044639A1 (en) | 2021-02-11 |
EP3515075A1 (en) | 2019-07-24 |
WO2019145217A1 (en) | 2019-08-01 |
US11695816B2 (en) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11695816B2 (en) | Video streaming | |
US9900363B2 (en) | Network streaming of coded video data | |
CA2965484C (en) | Adaptive bitrate streaming latency reduction | |
US8788933B2 (en) | Time-shifted presentation of media streams | |
CN108322775B (zh) | 媒体流传输期间在适配集合间的切换方法和装置 | |
KR101737325B1 (ko) | 멀티미디어 시스템에서 멀티미디어 서비스의 경험 품질 감소를 줄이는 방법 및 장치 | |
US11128897B2 (en) | Method for initiating a transmission of a streaming content delivered to a client device and access point for implementing this method | |
WO2011087439A1 (en) | Method and arrangement for supporting playout of content | |
CN113141522B (zh) | 资源传输方法、装置、计算机设备及存储介质 | |
US11765421B2 (en) | Client based storage of remote element resolutions | |
US9060184B2 (en) | Systems and methods for adaptive streaming with augmented video stream transitions using a media server | |
US9161088B2 (en) | Method in a streaming client for handling video streaming data, streaming client, computer programs and computer program products | |
US11706275B2 (en) | Media streaming | |
US20230164398A1 (en) | Video stream control | |
US20140036990A1 (en) | System and method for optimizing a video stream | |
US20230291777A1 (en) | Video streaming | |
US20220329903A1 (en) | Media content distribution and playback | |
WO2013163221A1 (en) | Systems and methods for adaptive streaming with augmented video stream transitions | |
US20130287092A1 (en) | Systems and Methods for Adaptive Streaming with Augmented Video Stream Transitions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |