KR20230124551A - 브라우저 내에서 비디오 스트림의 디코딩 - Google Patents

브라우저 내에서 비디오 스트림의 디코딩 Download PDF

Info

Publication number
KR20230124551A
KR20230124551A KR1020237016224A KR20237016224A KR20230124551A KR 20230124551 A KR20230124551 A KR 20230124551A KR 1020237016224 A KR1020237016224 A KR 1020237016224A KR 20237016224 A KR20237016224 A KR 20237016224A KR 20230124551 A KR20230124551 A KR 20230124551A
Authority
KR
South Korea
Prior art keywords
stream
video
markup
browser
decoding
Prior art date
Application number
KR1020237016224A
Other languages
English (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 브이-노바 인터내셔널 리미티드
Publication of KR20230124551A publication Critical patent/KR20230124551A/ko

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/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440227Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by decomposing into layers, e.g. base layer and one or more enhancement layers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/39Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability involving multiple description coding [MDC], i.e. with separate layers being structured as independently decodable descriptions of input picture data
    • 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/234327Processing 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 decomposing into layers, e.g. base layer and one or more enhancement layers
    • 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/47End-user applications
    • H04N21/488Data services, e.g. news ticker
    • H04N21/4884Data services, e.g. news ticker for displaying subtitles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8173End-user applications, e.g. Web browser, game
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8193Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

본원에 설명된 특정 예들은 브라우저 내에서 비디오 스트림을 디코딩하는 것에 관한 것이다. 인코딩된 다층 비디오 스트림은 소스 버퍼에서 수신된다. 인코딩된 기본 스트림은 소스 버퍼로부터 추출되고 마크업 비디오 요소를 사용하여 디코딩된 기본 스트림을 획득한다. 디코딩된 기본 스트림은 제1 마크업 비디오 디스플레이 영역에서 렌더링되며, 제1 마크업 비디오 디스플레이 영역이 숨겨진다. 인코딩된 향상 스트림은 소스 퍼버로부터 추출되고 디코딩되어 디코딩된 향상 스트림을 획득한다. 디코딩된 기본 스트림은 제1 마크업 비디오 디스플레이 영역으로부터 획득되고 디코딩된 향상 스트림과 결합되어 재구성된 비디오 스트림을 생성하며, 이는 브라우저 내에서 볼 수 있는 제2 마크업 비디오 디스플레이 영역에서 렌더링된다.

Description

브라우저 내에서 비디오 스트림의 디코딩
본 발명은 웹 브라우저 내에서 비디오 스트림을 디코딩하는 데 사용하기 위한 방법, 시스템, 컴퓨터 프로그램 및 컴퓨터 판독 가능 매체에 관한 것이다.
비디오 콘텐트의 인코딩 및 디코딩은 많은 알려진 시스템에서 고려 사항이다. 비디오 콘텐트는 예를 들어 데이터 통신 네트워크를 통한 전송을 위해 인코딩될 수 있다. 이러한 비디오 콘텐트가 디코딩될 때, 비디오의 품질 레벨을 증가시키고 및/또는 가능한 한 원본 비디오에 포함된 많은 정보를 복구하는 것이 바람직할 수 있다. 이러한 원하는 특성을 달성하기 위해 많은 비디오 코딩 형식 및 그 관련 코덱이 개발되었지만, 종종 운영 체제 및/또는 하드웨어 업그레이드 레벨에서 중요한 소프트웨어 업데이트가 필요하다. 또한, 디코딩된 비디오 콘텐트의 품질을 향상시키기 위해, 일반적으로 인코딩 및 디코딩 절차의 복잡성을 증가시켜야 하며, 이는 전력 사용량을 증가시키고 비디오 콘텐트가 전달될 수 있는 레이턴시를 증가시킬 수 있다.
월드 와이드 웹(World Wide Web)을 사용하여 최종 사용자가 재생할 수 있도록 웹 페이지 내에 비디오 콘텐트를 임베딩시키는 것이 바람직할 수 있다. 웹 페이지 내에서 비디오 콘텐트를 디스플레이하기 위해, 웹 페이지에 미디어 플레이어를 임베딩시키고 비디오 콘텐트가 재생될 수 있는 하이퍼링크 마크업 언어(Hypertext Markup Language; HTML) 문서에 미디어 요소가 포함될 수 있다. 예를 들어, HTML의 최신 버전인 HTML5에는 비디오 콘텐트를 임베딩시키는 비디오 요소가 포함되어 있다. 그러나, 브라우저는 특정 비디오 코딩 형식의 비디오 콘텐트를 렌더링하지 못할 수 있다.
Red5 Pro, 2020년 8월 18일, "9 Reasons why LCEVC circumvents the Codec wars", Red5 Pro(https://www.red5pro.com/blog/9-reasons-why-lcevc-circumvents-the-codec-wars)는 LCEVC(Low Complexity Enhancement Video Coding) 코덱과 관련된 라이브 스트리밍을 개시한다. Jan Ozer, 2020년 3월 12일, "How to Encode with LCEVC', Streaming Media, (https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=139705)은 인코딩 LCEVC을 개시한다. ITU Journal: ICT Discoveries, Vol. 3(1), 2020년 6월 8일; Florian Maurer 등; "Overview of MPEG-5 Part 2 -Low Complexity Enhancement Video Coding (LCEVC)" (https://www.itu.int/pub/S-JOURNAL-ICTS.V3I1-2020-12)은 LCEVC 인코더 및 디코더 코딩 구조의 개요, 도구 및 LCEVC의 성능 개요를 개시한다.
본 개시의 제1 양태에 따르면, 브라우저 내에서 비디오 스트림을 디코딩하는 방법이 제공된다. 상기 방법은, 소스 버퍼에서, 인코딩된 다층 비디오 스트림을 수신하는 단계; 소스 버퍼로부터 인코딩된 기본 스트림을 추출하는 단계; 마크업 비디오 요소를 사용하여 인코딩된 기본 스트림을 디코딩하여 디코딩된 기본 스트림을 획득하는 단계; 제1 마크업 비디오 디스플레이 영역에서 디코딩된 기본 스트림을 렌더링하는 단계로서, 제1 마크업 비디오 디스플레이 영역이 숨겨진, 상기 렌더링하는 단계; 소스 버퍼로부터 인코딩된 향상 스트림을 추출하는 단계; 인코딩된 향상 스트림을 디코딩하여 디코딩된 향상 스트림을 획득하는 단계; 제1 마크업 비디오 디스플레이 영역으로부터 디코딩된 기본 스트림을 획득하는 단계; 디코딩된 기본 스트림과 디코딩된 향상 스트림을 결합하여 재구성된 비디오 스트림을 생성하는 단계; 및 브라우저 내에서 볼 수 있는 제2 마크업 비디오 디스플레이 영역에서 재구성된 비디오 스트림을 렌더링하는 단계를 포함한다.
본 개시의 제2 양태에 따르면, 브라우저 내에서 비디오 스트림을 디코딩하는 디코더가 제공된다. 디코더는, 소스 버퍼로부터 인코딩된 다층 비디오 스트림의 인코딩된 향상 스트림을 획득하고; 인코딩된 향상 스트림을 디코딩하여 디코딩된 향상 스트림을 획득하고; 제1 마크업 비디오 디스플레이 영역으로부터 인코딩된 다층 비디오의 디코딩된 기본 스트림을 획득하되, 제1 마크업 비디오 디스플레이 영역이 숨겨지고; 디코딩된 기본 스트림과 디코딩된 향상 스트림을 결합하여 브라우저 내에서 볼 수 있는 제2 마크업 비디오 디스플레이 영역에서 렌더링하기 위한 재구성된 비디오 스트림을 생성하도록 구성된다.
본 개시의 제3 양태에 따르면, 제2 양태의 디코더를 포함하는 브라우저가 제공된다.
본 개시의 제4 양태에 따르면, 브라우저 내에서 비디오 스트림을 디코딩하는 방법이 제공된다. 상기 방법은, 운영 체제 및 브라우저를 포함하는 클라이언트 장치에서, 인코딩된 다층 비디오 스트림을 수신하는 단계; 운영 체제가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 운영 체제 비디오 디코딩 함수를 포함하는지 또는 브라우저가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 브라우저 비디오 디코딩 함수를 포함하는지 중 적어도 하나를 결정하는 단계; 및 네이티브 결정에 응답하여, 스크립트 기반 디코딩 함수를 사용하여, 클라이언트 장치의 브라우저 내에서 인코딩된 다층 비디오 스트림을 디코딩하는 단계를 포함한다.
본 개시의 제5 양태에 따르면, 제1 및 제4 양태 중 어느 하나의 방법을 수행하기 위해 적어도 하나의 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체가 제공된다.
추가 특징은 첨부 도면을 참조하여 이루어진 예로서만 주어진 다음 설명으로부터 명백해질 것이다.
도 1은 일 예에 따른 시스템의 개략도이다.
도 2는 예들에 따라 브라우저 내에서 비디오 스트림을 디코딩하는 제1 방법의 흐름도이다.
도 3은 추가 예들에 따라 브라우저 내에서 비디오 스트림을 디코딩하는 제2 방법의 흐름도이다.
압축이라고도 하는 디지털 신호의 인코딩은 원본 신호(예를 들어, 원본 비디오)를 나타내는 데 사용되는 정보보다 적은 비트의 정보를 사용하여 디지털 신호의 표현을 생성하는 프로세스이다. 인코딩 프로세스는 원본 신호와 생성된 표현 사이에 정보가 손실될 때 손실이 있는 것으로 설명될 수 있다. 대안으로, 인코딩 프로세스는 원본 신호와 생성된 표현 사이에 손실된 정보가 없을 때 무손실로 설명될 수 있다. 인코딩되지 않은 디지털 신호(예를 들어, 비디오 콘텐트를 나타냄)는 높은 데이터 전송률을 필요로 하므로 종종 인코딩된다.
디지털 비디오 콘텐트의 인코딩 및 디코딩에서는, 일반적으로 향상된 비디오 품질과 인코딩 및 디코딩 복잡성 간에 트레이드-오프(trade-off)가 있다. 그러나, MPEG-5 Part 2 LCEVC(Low Complexity Enhancement Video Encoding)의 등장으로, 자세한 내용은 제WO/2020/188273A1호 및 2020년 1월 13일 월요일에서 2020년 1월 17일 금요일까지 브뤼셀에서 개최된 MPEG 129 회의에서 발표된 ISO/IEC DIS 23094-2 Low Complexity Enhancement Video Coding의 초안 텍스트를 포함한 관련 표준 사양 문서에서 확인할 수 있으며, 이는 본원에서 참조로서 통합되며, 이제 비디오 품질을 개선하고 코덱의 복잡성을 줄이는 것이 가능하다. 이는 기본 코덱(예를 들어, AVC(Advanced Video Coding), HEVC(High Efficiency Video Coding) 또는 기타 현재 또는 향후 코덱)을 사용하여 인코딩된 기본 스트림을 적어도 하나의 향상 레벨의 코딩된 데이터를 포함하는 인코딩된 향상 스트림과 결합하여 달성된다.
인코딩된 기본 스트림을 인코딩된 향상 스트림과 결합하면 인코딩된 기본 스트림이 더 낮은 해상도로 전송되도록 하여, 데이터 통신 네트워크의 대역폭 요구 사항을 줄일 수 있다. 대안으로, 비디오 콘텐트는 동일한 대역폭에 대해 더 높은 해상도로 전송되어 향상 레벨과 결합하지 않고 가능한 것보다 더 높은 품질의 비디오를 생성할 수 있다.
도 1은 LCEVC를 사용하여 인코딩된 인코딩된 다층 비디오 스트림과 같은 인코딩된 다층 비디오 스트림을 디코딩하기 위한 예시적인 시스템(100)의 개략도이다. 시스템(100)은 예를 들어 브라우저 내에서 구현될 수 있다. 브라우저는, 이에 제한되는 것은 아니나, 예를 들어 Google Chrome®, Microsoft Edge®, Safari®, Firefox® 및 Opera®를 포함하는 월드 와이드 웹의 정보에 액세스할 수 있는 모든 브라우저일 수 있다. 브라우저는 클라이언트 장치에서 구현될 수 있다. 예시적인 클라이언트 장치는, 이에 제한되는 것은 아니나, 모바일 장치, 컴퓨팅 장치, 태블릿 장치, 스마트 텔레비전 등을 포함한다. 클라이언트 장치는 운영 체제(operating system; OS)를 포함하고 OS는 브라우저를 포함한다.
브라우저의 기능 중 하나는 마크업 스크립팅 언어(때로는 마크업 언어라고도 함)로 작성된 문서를 웹 페이지의 시각적 표현으로 변환하는 것이다. 마크업 스크립팅 언어는 렌더링된 웹 페이지의 데이터의 디스플레이를 제어하는 데 사용된다. 마크업 언어는 브라우저에 의해 처리될 때 비디오 디스플레이 영역이 되는 마크업 비디오 요소를 포함할 수 있다. 예를 들어, 브라우저 사용자는 임베딩된 비디오가 포함된 웹 페이지로 네비게이팅할 수 있다. 브라우저가 웹 페이지를 렌더링할 때, 비디오에 해당하는 데이터를 수신한다. 브라우저는 예를 들어 클라이언트 장치의 디스플레이에서 브라우저에 의해 렌더링된 비디오 디스플레이 영역 내에서 사용자에게 비디오를 디스플레이하기 위해, 비디오를 디코딩하고 재생하는 데 필요한 리소스를 포함할 수 있다. 마크업 스크립팅 언어의 예들에는 HTML5 및 XHTML(Extensible HyperText Markup Language)과 같은 모든 버전의 HTML(Hypertext Markup Language)이 포함된다.
예를 들어, 마크업 비디오 요소는 웹 페이지의 비디오의 디스플레이와 관련된 속성(예를 들어, 웹 페이지 내의 비디오 크기 및 비디오가 웹 페이지의 로딩 시 자동 재생될지 여부)을 나타낸다. 예를 들어, 마크업 비디오 요소에는 비디오를 인코딩하는 데 사용되는 비디오 코딩 형식의 표시도 포함된다. 이는 인코딩된 비디오를 디코딩하는 데 사용할 디코더(들)를 브라우저에 나타낸다. 그런 다음 브라우저는, 아래에 더 논의되는 바와 같이, 브라우저 자체의 리소스(브라우저에 네이티브인 브라우저-네이티브 리소스로 간주될 수 있음) 내의 디코딩 함수 또는 OS에서 구현된 디코딩 함수 중 적어도 하나에 대한 호출을 수행할 수 있다.
도 1의 시스템(100)은 인코딩된 다층 비디오 스트림을 수신하기 위한 소스 버퍼(102)를 포함한다. 소스 버퍼는 예를 들어 브라우저에서 액세스할 수 있는 메모리 섹션이다. 소스 버퍼는 예를 들어 MSE(Media Source Extensions) API(Application Programming Interface) 소스 버퍼일 수 있다. 이 예에서 인코딩된 다층 비디오 스트림은 인코딩된 기본 스트림과 인코딩된 향상 스트림을 포함한다. 인코딩된 기본 스트림은 AVC(Advanced Video Coding), HEVC(High Efficiency Video Coding), VP9, MPEG-5 EVC(Essential Video Coding) 또는 AV1(AOMedia Video 1) 인코더와 같은, 압축기라고도 하는, 임의의 기본 인코더에 의해 인코딩된 비디오 콘텐트를 포함한다.
시스템(100)은 기본 스트림 압축 해제기로도 알려진 기본 스트림 디코더(104)를 더 포함한다. 인코딩된 기본 스트림은 소스 버퍼(102)로부터 추출되고 마크업 비디오 요소를 사용하여 기본 스트림 디코더(104)에 의해 디코딩된다. 마크업 비디오 요소는 마크업 언어와 디코딩 리소스 간의 인터페이스를 제공한다. HTML5에는 예를 들어 비디오 콘텐트를 웹 페이지에 임베딩하는 데 사용될 수 있는 마크업 비디오 요소가 포함된다. 또 다른 예는 JavaScript 플레이어로 기능하는 것으로 간주될 수 있는, HTML5 비디오 요소 위에 커스텀 컨트롤 세트를 구축하는 JavaScript 라이브러리이다. HTML5 비디오 요소와 같은 마크업 비디오 요소는 다층 비디오 스트림 디코딩 라이브러리, WebAssembly 디코딩 라이브러리 및/또는 마크업 비디오 요소에 의해 액세스될 수 있는 웹 워커 함수와 같은 추가 리소스를 추가하여 수정될 수 있음을 이해해야 한다. LCEVC가 사용되는 경우에, 향상 스트림은 기본 스트림에 수반되고 관련된 SEI(Supplemental Enhancement Information) 메시지 세트 내에서 운반될 수 있다. 기본 스트림 디코더는 종종 해석할 수 없는 정보가 포함된 경우 이러한 메시지를 무시하도록 구성된다. 따라서, 이 경우, 기본 스트림 디코더(104)는 기본 방식으로 소스 버퍼(102)로부터 기본 스트림에 관한 데이터를 검색할 수 있으며, 향상된 및 비향상된 기본 스트림은 공통 방식으로 처리된다. 이 경우에, 기본 스트림 디코더(104)는 소스 버퍼(102) 내에 상주하는 향상 스트림을 운반하는 SEI 메시지를 무시할 수 있다.
도 1의 예시적인 시스템(100)에서, 마크업 비디오 요소는 인코딩된 기본 스트림과 관련된 비디오 코딩 형식에 대한 표시를 포함한다. 마크업 비디오 요소는, 브라우저에 의해 처리될 때, 비디오 코딩 형식과 관련된 적절한 기본 스트림 디코더를 찾고 인코딩된 기본 스트림을 디코딩한다. 기본 스트림 디코더(104)는 브라우저를 포함하는 클라이언트 장치의 OS의 기능을 사용하거나, 브라우저와 OS 모두의 리소스들을 활용하여 브라우저 내에서 구현될 수 있다. 예를 들어, OS는 하드웨어 가속을 활용하여 소프트웨어 전용 디코딩과 비교하여 전력 소비 및 CPU에 의해 수행되는 연산의 수를 줄일 수 있는 인코딩된 기본 스트림을 디코딩할 수 있다.
디코딩된 기본 스트림은 제1 마크업 비디오 디스플레이 영역(106)에서 렌더링된다. 제1 마크업 비디오 디스플레이 영역(106)은 예를 들어 비디오를 디스플레이하고자 하는 웹 페이지의 영역에 해당한다. 디코딩된 기본 스트림의 렌더링은 기본 스트림 비디오 데이터(예를 들어, 기본 인코딩된 비디오의 디코딩된 프레임)에 대한 액세스를 허용한다. 기본 스트림 비디오 데이터를 렌더링함으로써, 기본 스트림 비디오 데이터는 브라우저 내의 다른 디코딩 프로세스에 액세스할 수 있으며, 예를 들어 기본 스트림의 디코딩이 액세스할 수 없거나 보호된 방법에 의해 수행되는 경우에도 액세스할 수 있다. 렌더링된 디코딩된 기본 스트림은 이후 재구성된 비디오 스트림을 생성하기 위해 디코딩된 향상 스트림과 결합된다. 그러나, 렌더링된 기본 스트림에는 이 시점에서 향상 스트림의 향상 데이터가 포함되어 있지 않으므로, 마크업 비디오 디스플레이 영역이 숨겨진다. 이렇게 하면 기본 스트림에 해당하는 렌더링된 비디오 콘텐트가 웹 페이지에 디스플레이되지 않으므로 웹 페이지의 뷰어에게 보이지 않는다. 디코딩된 기본 스트림을 렌더링하면 또한 시스템(100)이 다층 비디오 코딩 형식을 사용하여 인코딩되지 않은 비디오 스트림을 디코딩하고 렌더링할 수 있으며, 예를 들어, 이 경우, 마크업 비디오 디스플레이 영역은 가시적으로 설정될 수 있고 디코딩된 기본 스트림은 비교적 비향상 비디오 렌더링에 따라 디스플레이될 수 있음을 보장한다. 예를 들어, 웹 페이지에 향상 스트림이 없는 단일 계층 비디오 스트림이 포함되는 경우, 도 1의 시스템(100)은 예를 들어, 제1 마크업 비디오 디스플레이 영역(106)을 숨김 해제함으로써, 디코딩된 단일 계층 비디오 스트림을 디스플레이하는 데 사용될 수 있다.
시스템(100)은 향상 스트림 디코더(108)를 더 포함한다. 인코딩된 향상 스트림은 소스 버퍼(102)로부터 추출되고 향상 스트림 디코더(108)에 의해 디코딩된다. 예를 들어, 향상 스트림 디코더(108)는 소스 버퍼(102) 내에 저장된 SEI 메시지 세트에 대한 데이터로부터 인코딩된 향상 스트림을 검색할 수 있다. 향상 스트림 디코더(108)는 또한 제1 마크업 비디오 디스플레이 영역(106)으로부터 디코딩된 기본 스트림을 획득하고 디코딩된 기본 스트림을 디코딩된 향상 스트림과 결합하여 재구성된 비디오 스트림을 생성한다. 예를 들어, JavaScript 플레이어를 사용하여, 디코딩된 기본 스트림을 획득하면 디코딩된 기본 스트림의 비디오 프레임이 렌더링될 때 제1 비디오 마크업 디스플레이 영역(106)으로부터 디코딩된 기본 스트림의 비디오 프레임을 추출하는 requestAnimationFrame API를 사용하여 수행될 수 있다. 그런 다음 재구성된 비디오 스트림은 웹 페이지의 뷰어에게 보이는 웹 페이지 내의 제2 마크업 비디오 디스플레이 영역(110)에서 렌더링될 수 있다.
향상 스트림 디코더(108)는 LCEVC-인코딩된 비디오 스트림을 디코딩하도록 구성된 LCEVC 디코더 플러그인과 같은 다층 비디오 스트림 디코더 플러그인(multi-layer video stream decoder plugin; DPI)일 수 있다.
시스템(100)의 하나 이상의 컴포넌트들은 브라우저에서 구현될 수 있다. 일 예에서, 향상 스트림 디코더(108)를 포함하는 브라우저가 제공된다.
인코딩된 다층 비디오 스트림이 디코딩되고 웹 페이지 내에서 렌더링되는 예시적인 프로세스가 이제 도 2 및 3의 방법(200 및 300)과 관련하여 더 자세히 설명될 것이다.
도 2는 브라우저 내에서 비디오 스트림을 디코딩하는 방법(200)의 흐름도이다. 상기에 논의된 바와 같이, 브라우저는 웹 페이지의 시각적 표현을 생성하기 위해 마크업 스크립팅 언어로 된 문서를 처리하는 모든 브라우저일 수 있다. 웹 페이지의 시각적 표현은 브라우저와 관련된 클라이언트 장치와 관련된 사용자 인터페이스를 통해 보이게 될 수 있다.
도 2의 블록(202)에서, 인코딩된 다층 비디오 스트림은 도 1의 소스 버퍼(102)와 같은 소스 버퍼에서 수신된다. 인코딩된 다층 비디오 스트림은 인코딩된 기본 스트림과 인코딩된 향상 스트림을 포함한다.
인코딩된 기본 스트림은 기본 인코더 또는 코덱을 사용하여 인코딩되고, 하드웨어 기반 디코더와 같은 디코더에 의해 디코딩 가능한 다운 샘플링된 소스 신호일 수 있다. 기본 인코더 또는 코덱은 AVC(Advanced Video Coding), HEVC(High Efficiency Video Coding), VP9, MPEG-5 EVC(Essential Video Coding) 및 AV1(AOMedia Video 1) 인코더와 같은, 임의의 기본 인코더 또는 코덱일 수 있다. 기존 기본 인코더 및 코덱을 인코딩(및 디코딩) 절차의 일부로 사용하면 다층 비디오 콘텐트를 렌더링할 수 없는 시스템은 여전히 기존 기본 코덱을 사용하여 기본 스트림을 디코딩할 수 있음을 보장한다. 이는 방법(200)을 사용하여 인코딩된 다층 비디오 스트림을 디코딩하기 위해 하드웨어에 대한 업데이트가 필요하지 않으며, 시스템의 하드웨어가 향후 기본 코덱과 호환되도록 업그레이드되는 경우 추가 하드웨어 업그레이드 없이 향후 기본 코덱도 사용될 수 있음을 의미한다.
일부 예들에서, 인코딩된 향상 스트림은 기본 스트림을 수정하거나 향상시키는 인코딩된 잔차 세트를 포함한다. 계층 구조에는 여러 레벨의 향상 데이터가 있을 수 있다. 인코딩된 향상 스트림은 비압축 전체 해상도 비디오로부터 인코딩된 향상 스트림을 생성하도록 구성된 전용 인코더를 사용하여 인코딩될 수 있다.
LCEVC 향상 스트림은 다층 코딩 방식을 사용하여 인코딩된 이러한 비디오 스트림의 일 예이다. 이 경우에, 비디오 스트림은 LCEVC 인코더에 의해 인코딩될 수 있다. 그러나 다른 예들도 예상된다.
도 2의 블록(204)에서, 인코딩된 기본 스트림은 소스 버퍼로부터 추출되고 마크업 비디오 요소를 사용하여 디코딩된다. 마크업 비디오 요소는 HTML 및 XHTML과 같은 마크업 스크립팅 언어의 요소일 수 있다. 그런 다음, 인코딩된 기본 스트림은 기본 스트림 디코더(104)와 같은 적절한 디코더를 사용하여 디코딩될 수 있다. 마크업 비디오 요소는 인코딩된 기본 스트림의 비디오 코딩 형식의 표시를 수신하거나 아니면 획득한다. 브라우저에 의해 처리될 때, 마크업 비디오 요소는 비디오 코딩 형식과 관련된 디코더 또는 코덱을 찾고, 인코딩된 기본 스트림이 디코더에 의해 디코딩되도록 한다. HTML5는 예를 들어 비디오 콘텐트를 웹 페이지에 임베딩시키기 위해 마크업 언어 내에 <video> 요소를 포함하며, 이는 마크업 비디오 요소의 일 예이다. 기본 디코더는 도 1에 도시된 기본 스트림 디코더(104)와 같이, 인코딩된 기본 스트림을 디코딩할 수 있는 임의의 디코더이다.
디코딩된 기본 스트림은 복수의 개별 프레임을 포함한다. 프레임은 예를 들어 스틸 이미지 또는 사진에 해당한다. 일부 예들에서, 비디오는 일련의 프레임으로 구성된다. 프레임은 복수의 픽셀들을 포함할 수 있다. 각 프레임은 비디오 콘텐트의 속성을 나타내는 데이터를 포함한다. 예를 들어, 프레임은 프레임의 각 픽셀의 색상을 정의하는 데이터를 포함할 수 있다. 이 데이터는 마크업 비디오 요소에 의해 사용되어 최종 웹 페이지에서 렌더링될 때 비디오 스트림의 시각적 표현을 형성할 수 있다.
도 2의 블록(206)에서, 디코딩된 기본 스트림은 숨겨진 제1 마크업 비디오 디스플레이 영역에서 렌더링된다. 예를 들어 브라우저는 웹 페이지에 미디어 플레이어를 임베딩하고 미디어 플레이어에서 비디오 콘텐트를 렌더링함으로써 생성된 웹 페이지의 마크업 비디오 디스플레이 영역에 해당하는 마크업 비디오 요소를 처리한다. 제1 비디오 디스플레이 영역은 숨겨지므로 이 영역의 표현이 렌더링된 웹 페이지에 디스플레이되지 않는다. 이렇게 하면 향상되지 않은 비디오 콘텐트가 디스플레이되지 않으며, 기본 및 향상 스트림이 결합되고 렌더링되면 웹 페이지에 중복 비디오 콘텐트가 보이지 않는다.
제1 마크업 비디오 디스플레이 영역은 마크업 스크립팅 언어로 정의될 수 있다.
블록(208)에서, 향상 스트림은 소스 버퍼로부터 추출되고 디코딩된다. 향상 스트림은 다층 비디오 스트림의 하나 이상의 향상 계층과 관련된 향상 데이터를 포함한다. 향상 스트림은 도 1에 도시된 향상 스트림 디코더(108)와 같은 다층 비디오 스트림 DPI에 의해 디코딩될 수 있다.
블록(210)에서, 디코딩된 기본 스트림은 제1 마크업 비디오 디스플레이 영역으로부터 획득되고 디코딩된 향상 스트림과 결합되어 재구성된 비디오 스트림을 생성한다. 마크업 비디오 요소는 재구성된 비디오 스트림을 생성하기 위해 디코딩된 기본 스트림과 디코딩된 향상 스트림의 결합을 초기화하기 위한 객체 블록에 대한 호출을 포함할 수 있다. 예를 들어 객체 블록은 재구성된 비디오 스트림을 생성하기 위해 디코딩된 기본 스트림과 디코딩된 향상 스트림의 결합을 구성하기 위한 구성 데이터를 포함하며, 예를 들어 다층 비디오 스트림을 인코딩하는 데 사용되는 코딩 방식에 특정한 다양한 파라미터들을 나타낼 수 있다. 디코딩된 기본 및 향상 스트림은 다층 비디오 스트림 DPI에 의해 결합될 수 있다. 다층 비디오 스트림 DPI는 제1 마크업 비디오 디스플레이 영역으로부터 프레임을 추출하고 제1 마크업 비디오 디스플레이 영역으로부터의 프레임을 디코딩된 향상 스트림의 해당 프레임과 결합한다. 예를 들어, JavaScript 플레이어를 사용하여, 기본 스트림의 각 프레임은 위에서 설명된 바와 같이, requestAnimationFrame API를 사용하여 획득될 수 있다. 결합된 프레임의 결과 스트림은 재구성된 비디오 스트림을 구성한다.
블록(212)에서, 재구성된 비디오 스트림은 브라우저 내에서 볼 수 있는 제2 마크업 비디오 디스플레이 영역에서 렌더링된다. 다층 비디오 스트림 DPI는 재구성된 비디오 스트림을 렌더링할 수 있다. 제2 마크업 비디오 디스플레이 영역은 제1 마크업 비디오 디스플레이 영역과 중첩될 수 있다. 이 경우, 제2 마크업 비디오 디스플레이 영역은 제1 마크업 비디오 디스플레이 영역의 화면 크기 및 페이지 위치와 일치할 수 있다. HTML의 경우에, 제2 마크업 비디오 디스플레이 영역은 일부 예들에서 캔버스 요소이다.
예를 들어 도 2의 방법(200)은 브라우저에 의해 이미 사용되는 기존 디코더와 통합될 수 있는 낮은 복잡도의 디코딩 절차를 사용하여 웹 브라우저 내에서 비디오 콘텐트의 고품질 재생을 허용한다.
자막은 때때로 비디오 내의 오디오 콘텐트를 설명 및/또는 전사하는 데 활용되며, 제1 마크업 디스플레이 영역의 마크업 비디오 요소에 의해 생성 및 렌더링될 수 있다. 그러나, 이 영역은 도 2의 방법(200)에 숨겨져 있다. 따라서 도 2의 방법은 블록(214)에서, 디코딩된 기본 스트림과 관련된 자막 데이터를 획득하는 단계, 및 추가 마크업 요소를 사용하여 자막 데이터로부터 자막을 렌더링하는 단계를 더 포함한다. 자막 데이터는 인코딩된 다층 비디오 스트림 내에 포함될 수 있으며, 이 경우 자막 데이터는 소스 버퍼로부터 추출될 수 있다. 대안으로, 자막 데이터는 예컨대 음성에서 텍스트로의 자동 자막 처리 절차를 사용하여 실시간으로 결정될 수 있다. 그런 다음 획득된 자막 데이터는 미디어 플레이어에 의해 제어되는 자막의 위치 및 가시성과 함께, 추가 마크업 요소를 사용하여 웹 페이지 내에서 렌더링될 수 있다. HTML5에서, 예를 들어 추가 마크업 요소는 HTMLDivElement일 수 있다. HTMLDivElement의 위치 및 가시성은 마크업 비디오 요소에 의해 호출되는 미디어 플레이어에 의해 제어될 수 있는데, 이는 제2 마크업 비디오 영역의 속성이 제1 마크업 비디오 영역의 속성에 대응하거나 이와 일치할 수 있기 때문이다. 그러나, 도 2의 방법(200)은 예를 들어 비디오 스트림에 자막이 없는 경우, 블록(214) 없이 수행될 수 있음을 이해해야 한다.
다층 비디오 스트림을 렌더링할 수 있는지 확인하기 위해, 방법은 또한 인코딩된 향상 스트림을 디코딩하는 브라우저 및 인코딩된 향상 스트림을 디코딩하는 브라우저를 포함하는 OS 중 적어도 하나의 능력(즉, 브라우저 및/또는 OS가 인코딩된 향상 스트림을 디코딩할 수 있는지 여부)을 검출하는 단계를 포함할 수 있다. 이를 위해, 마크업 비디오 요소는 디코딩을 수행하는 시스템이 실제로 LCEVC 향상 콘텐트와 같은 인코딩된 다층 비디오 스트림을 디코딩할 수 있는지 여부를 검출하기 위한 적어도 하나의 쿼리를 포함할 수 있다.
따라서 방법은 적어도 지원되는 브라우저 및 브라우저 버전 중 하나를 검출하는 단계를 더 포함할 수 있다. 브라우저가 인코딩된 다층 비디오 스트림의 디코딩과 호환되지 않는 것으로 결정되는 경우, 브라우저가 지원되지 않음을 나타내는 텍스트가 웹 페이지에 디스플레이될 수 있다. 텍스트에는 또한 현재 지원되는 브라우저에 대한 표시가 포함될 수 있다. 대안으로, 브라우저가 지원되지만, 다층 비디오 스트림 디코딩 호환성이 없는 이전 버전을 실행 중인 경우, 콘텐트를 보기 위해 사용자에게 브라우저를 업그레이드하라고 알리는 텍스트가 디스플레이될 수 있다. 이 방법은 OS에 대해 지원되는 브라우저가 사용되고 있는지 확인하기 위해 OS를 검출하는 단계를 포함할 수 있다. 사용 중인 브라우저가 OS에 의해 지원되지 않는 것으로 결정되는 경우, 이를 나타내는 텍스트가 웹 페이지에 디스플레이될 수 있다. 텍스트는 비디오 콘텐트를 보기 위해 지원되는 브라우저를 사용하도록 사용자에게 지시할 수 있다. 그렇지 않으면, 사용 중인 브라우저가 OS에 의해 지원된다고 결정되는 경우, 방법(200)이 진행될 수 있다.
이 방법은 마크업 언어가 HTML5일 때 WebGL 1.0 및 Web Workers와 같은 특정 리소스가 사용될 수 있는지 여부를 추가로 검출할 수 있다. WebGL 1.0은 웹 브라우저에서 2차원 및 3차원 그래픽을 렌더링하기 위한 JavaScript API인 반면, 웹 워커는 사용자 인터페이스를 방해하지 않고 태스크를 수행할 수 있는 웹 브라우저의 백그라운드에서 실행되는 JavaScript API이다. WebGL 1.0의 인스턴스를 검출하기 위해, 마크업에는 캔버스 요소를 생성하고 캔버스 요소 내에서 WebGL 1.0의 컨텍스트를 검사하는 호출이 포함될 수 있다. 캔버스 요소는 WebGL 1.0 기능을 결정하기 위해 백그라운드에 존재하는 대신, 웹 페이지를 구성하는 문서에 추가될 필요가 없다. 이렇게 하면 캔버스 요소가 생성된 웹 페이지에 디스플레이되지 않는다.
시스템이 호환 가능하다고 결정되는 경우, 시스템은 예를 들어 도 2의 방법(200)을 사용하여 비디오 콘텐트를 디코딩 및 렌더링하도록 진행할 수 있다.
일부 경우에, 향상 스트림의 디코딩은 운영 체제 구현 디코딩 리소스 및 브라우저 구현 디코딩 리소스 중 적어도 하나에 대한 함수 호출을 사용한다. 즉, 운영 체제 및/또는 브라우저는 마크업 비디오 요소에 대한 수정 없이 향상 스트림을 디코딩하기 위해 적절한 디코딩 리소스(이는 네이티브 리소스로 간주될 수 있음)를 포함할 수 있다.
한편, 마크업 비디오 요소는 인코딩된 다층 비디오 스트림을 디코딩하기 위해 수정될 수 있다. 일 예에서, 마크업 비디오 요소는 JavaScript 플레이어일 수 있다. 예시적인 JavaScript 플레이어는 HTML 비디오 요소 위에 HTTP 라이브 스트리밍 클라이언트를 구현하는 JavaScript 라이브러리를 제공하는 HTTP(Hypertext Transfer Protocol) 라이브 스트리밍(HLS) 플레이어이다. 방법(200)은 추가 리소스를 포함함으로써, HLS.js 플레이어와 같은 기존 미디어 플레이어로 구현될 수 있다. 예를 들어, 인코딩된 향상 스트림을 디코딩하면 JavaScript 라이브러리 또는 WebAssembly 라이브러리 중 적어도 하나를 사용할 수 있다. 일부 경우에, 재구성된 비디오 스트림을 생성하는데 사용하기 위해 인코딩된 다층 비디오 스트림으로부터 메타데이터를 추출하는 웹 워커 함수가 추가적으로 또는 대안적으로 사용될 수 있다. 이러한 경우에, HLS.js 플레이어는 다층 비디오 스트림 라이브러리(이는 예를 들어 JavaScript 라이브러리임), 다층 비디오 스트림 WebAssembly 라이브러리 및 웹 워커 함수 중 적어도 하나를 포함하도록 수정될 수 있다. 이러한 경우에, HLS.js 마크업 비디오 요소는 도 2의 방법(200)의 추가 컴포넌트들을 포함하도록 수정된다. 예를 들어, 다층 비디오 스트림이 LCEVC 비디오 스트림인 경우, 마크업 비디오 요소는
hls.attachMedia(video)로부터
hls.attachMedia( video, canvas, subtitles, lcevcConfig)로 수정될 수 있다.
여기서, 비디오는 제1 마크업 비디오 디스플레이 영역에서 인코딩된 기본 스트림을 디코딩 및 렌더링하기 위한 HTML <비디오> 요소이고, 캔버스는 재구성된 비디오 스트림의 렌더링된 프레임을 제2 마크업 비디오 디스플레이 영역에 디스플레이하기 위한 HTML <canvas> 요소이며, 자막은 자막을 디스플레이하는 데 사용되는 HTMLDivElement이고, lcevcConfig는 LECVC 디코딩이 초기화되는 설정을 포함하는 객체 블록이다.
브라우저 내에서 비디오 스트림을 디코딩하는 추가 방법(300)이 이제 도 3을 참조하여 설명될 것이다. 도 2의 방법(200)은 다양한 JavaScript 라이브러리, WebAssembly 라이브러리, 웹 워커 등과 같이, 쉽게 사용 가능한 라이브러리에 액세스할 수 있는 브라우저를 통해 배포될 수 있는 인코딩된 다층 비디오 스트림을 디코딩하는 마크업 스크립팅 언어 구현이다. 그러나, 일부 경우에, 브라우저를 포함하는 기본 운영 체제는 인코딩된 다층 비디오 스트림을 디코딩하고 렌더링하기 위한 네이티브 지원을 포함할 수 있다.
블록(302)에서, 운영 체제 및 브라우저를 포함하는 클라이언트 장치는 인코딩된 다층 비디오 스트림을 수신한다. 인코딩된 다층 비디오 스트림은 인코딩된 기본 스트림과 인코딩된 향상 스트림을 포함한다.
블록(304)에서, 운영 체제가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 운영 체제 비디오 디코딩 함수를 포함하는지 또는 브라우저가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 브라우저 비디오 디코딩 함수를 포함하는지 중 적어도 하나가 결정된다. 여기에는 인코딩된 다층 비디오 스트림을 디코딩하고 렌더링할 수 있는 리소스에 대한 운영 체제 및/또는 브라우저 내에서 검색하는 것이 포함될 수 있다.
운영 체제가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 운영 체제 디코딩 함수를 포함하지 않고 브라우저가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 브라우저 비디오 디코딩 함수를 포함하지 않는다고 결정되는 경우, 방법(300)은 인코딩된 다층 비디오 스트림은 위의 방법(200)에서 설명된 것과 같은 스크립트 기반 디코딩 함수를 사용하여 디코딩되고 렌더링되는 블록(308)으로 진행한다.
한편, 운영 체제가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 운영 체제 디코딩 함수를 포함하고 및/또는 브라우저가 인코딩된 다층 비디오 스트림을 디코딩하기 위한 브라우저 비디오 디코딩 함수를 포함한다고 결정되는 경우, 방법(300)은 인코딩된 다층 비디오 스트림이 운영체제 비디오 디코딩 함수 또는 브라우저 비디오 디코딩 함수 중 적어도 하나를 사용하여 디코딩되는 블록(306)으로 진행한다. 방법(300)은 운영 체제 또는 브라우저(존재하는 경우) 중 적어도 하나의 네이티브 디코딩 기능을 이용하거나, 그렇지 않으면 인코딩된 다층 비디오 스트림을 디코딩하기 위해 스크립트 기반 디코딩 함수를 사용할 수 있는 인코딩된 다층 비디오 스트림을 디코딩하기 위한 강력한 절차를 제공한다.
방법(200 및 300)은 시스템(100) 내에서 수행될 수 있지만, 다른 예들이 가능하다. 방법(200 및 300)은 또한 하나 이상의 컴퓨터 판독 가능 저장 매체에 저장된 명령어들을 실행하는 프로세서에 의해 수행될 수 있다.
상기 실시예들은 예시적인 예들로서 이해되어야 한다. 추가 예들이 예상된다. 임의의 하나의 예와 관련하여 설명된 임의의 특징은 단독으로 또는 설명된 다른 특징들과 조합하여 사용될 수 있으며, 또한 임의의 다른 예의 하나 이상의 특징들과 조합하여 또는 임의의 다른 예들의 임의의 조합으로 사용될 수 있음을 이해해야 한다. 또한, 첨부된 청구범위의 범위를 벗어나지 않고 상술되지 않은 등가물 및 변형물이 사용될 수도 있다.

Claims (19)

  1. 브라우저 내에서 비디오 스트림을 디코딩하는 방법에 있어서, 상기 방법은,
    소스 버퍼에서, 인코딩된 다층 비디오 스트림을 수신하는 단계;
    상기 소스 버퍼로부터 인코딩된 기본 스트림을 추출하는 단계;
    마크업 비디오 요소를 사용하여 상기 인코딩된 기본 스트림을 디코딩하여 디코딩된 기본 스트림을 획득하는 단계;
    제1 마크업 비디오 디스플레이 영역에서 상기 디코딩된 기본 스트림을 렌더링하는 단계로서, 상기 제1 마크업 비디오 디스플레이 영역이 숨겨진, 상기 렌더링하는 단계;
    상기 소스 버퍼로부터 인코딩된 향상 스트림을 추출하는 단계;
    상기 인코딩된 향상 스트림을 디코딩하여 디코딩된 향상 스트림을 획득하는 단계;
    상기 제1 마크업 비디오 디스플레이 영역으로부터 상기 디코딩된 기본 스트림을 획득하는 단계;
    상기 디코딩된 기본 스트림과 상기 디코딩된 향상 스트림을 결합하여 재구성된 비디오 스트림을 생성하는 단계; 및
    상기 브라우저 내에서 볼 수 있는 제2 마크업 비디오 디스플레이 영역에서 상기 재구성된 비디오 스트림을 렌더링하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 인코딩된 다층 비디오 스트림은 LCEVC(Low Complexity Enhancement Video Coding)-향상된 비디오 스트림인, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 마크업 비디오 요소, 상기 제1 마크업 비디오 디스플레이 영역, 및 상기 제2 마크업 비디오 디스플레이 영역은 각각 각 HTML(Hypertext Markup Language) 요소인, 방법.
  4. 제3항에 있어서, 상기 제2 마크업 비디오 디스플레이 영역은 HTML 캔버스 요소인, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 인코딩된 다층 비디오 스트림과 연관된 자막 데이터를 획득하는 단계; 및
    추가의 추가적인 마크업 요소를 사용하여 상기 자막 데이터에 기초하여 자막을 렌더링하는 단계를 더 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 디코딩된 기본 스트림의 상기 렌더링은,
    운영 체제 구현 디코딩 리소스; 및
    브라우저 구현 디코딩 리소스 중 적어도 하나에 대한 함수 호출을 사용하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 인코딩된 향상 스트림을 디코딩하는 단계는 JavaScript 라이브러리 또는 WebAssembly 라이브러리 중 적어도 하나를 사용하는 단계를 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 마크업 비디오 요소는 JavaScript 플레이어를 포함하는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 상기 재구성된 비디오 스트림을 생성하는 데 사용하기 위해 상기 인코딩된 다층 비디오 스트림으로부터 메타데이터를 추출하기 위한 웹 워커 함수를 사용하는 단계를 포함하는, 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 제2 마크업 비디오 디스플레이 영역은 상기 제1 마크업 비디오 디스플레이 영역과 중첩되는, 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 재구성된 비디오 스트림을 생성하기 전에, 상기 브라우저 및 상기 브라우저를 포함하는 클라이언트 장치의 운영 체제 중 적어도 하나의 상기 인코딩된 향상 스트림을 디코딩하는 능력을 검출하는 단계를 더 포함하는, 방법.
  12. 브라우저 내에서 비디오 스트림을 디코딩하는 디코더에 있어서, 상기 디코더는,
    소스 버퍼로부터 인코딩된 다층 비디오 스트림의 인코딩된 향상 스트림을 획득하고;
    상기 인코딩된 향상 스트림을 디코딩하여 디코딩된 향상 스트림을 획득하고;
    제1 마크업 비디오 디스플레이 영역으로부터 상기 인코딩된 다층 비디오의 디코딩된 기본 스트림을 획득하되, 상기 제1 마크업 비디오 디스플레이 영역이 숨겨지고;
    상기 디코딩된 기본 스트림과 상기 디코딩된 향상 스트림을 결합하여 상기 브라우저 내에서 볼 수 있는 제2 마크업 비디오 디스플레이 영역에서 렌더링하기 위한 재구성된 비디오 스트림을 생성하도록 구성된, 디코더.
  13. 제12항에 있어서, 상기 인코딩된 다층 비디오 스트림은 LCEVC(Low Complexity Enhancement Video Coding)-향상된 스트림인, 디코더.
  14. 제12항 또는 제13항에 있어서, 상기 디코더는 상기 브라우저에 대한 플러그-인(plug-in)인, 디코더.
  15. 제12항 내지 제14항 중 어느 한 항의 디코더를 포함하는 브라우저.
  16. 브라우저 내에서 비디오 스트림을 디코딩하는 방법에 있어서, 상기 방법은,
    운영 체제 및 브라우저를 포함하는 클라이언트 장치에서, 인코딩된 다층 비디오 스트림을 수신하는 단계;
    상기 운영 체제가 상기 인코딩된 다층 비디오 스트림을 디코딩하기 위한 운영 체제 비디오 디코딩 함수를 포함하는지 또는 상기 브라우저가 상기 인코딩된 다층 비디오 스트림을 디코딩하기 위한 브라우저 비디오 디코딩 함수를 포함하는지 중 적어도 하나를 결정하는 단계; 및
    네이티브 결정에 응답하여, 스크립트 기반 디코딩 함수를 사용하여, 상기 클라이언트 장치의 상기 브라우저 내에서 상기 인코딩된 다층 비디오 스트림을 디코딩하는 단계를 포함하는, 방법.
  17. 제16항에 있어서, 긍정 결정에 응답하여, 상기 운영 체제 비디오 디코딩 함수 또는 상기 브라우저 비디오 디코딩 함수 중 상기 적어도 하나를 사용하여 상기 인코딩 다층 비디오 스트림을 디코딩하는 단계를 더 포함하는, 방법.
  18. 제16항 또는 제17항에 있어서, 상기 스크립트 기반 디코딩 함수는 제1항 내지 제11항 중 어느 한 항에 따른 방법을 구현하는, 방법.
  19. 제1항 내지 제11항 중 어느 한 항 또는 제16항 내지 제18항 중 어느 한 항의 방법을 수행하는 적어도 하나의 프로세서에 의해 실행 가능한 명령어들을 저장하는 컴퓨터 판독 가능 저장 매체.
KR1020237016224A 2020-11-27 2021-11-26 브라우저 내에서 비디오 스트림의 디코딩 KR20230124551A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2018747.2A GB2601364B (en) 2020-11-27 2020-11-27 Decoding a video stream within a browser
GB2018747.2 2020-11-27
PCT/GB2021/053078 WO2022112782A2 (en) 2020-11-27 2021-11-26 Decoding a video stream within a browser

Publications (1)

Publication Number Publication Date
KR20230124551A true KR20230124551A (ko) 2023-08-25

Family

ID=74099748

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237016224A KR20230124551A (ko) 2020-11-27 2021-11-26 브라우저 내에서 비디오 스트림의 디코딩

Country Status (7)

Country Link
US (1) US20240064388A1 (ko)
EP (1) EP4252427A2 (ko)
JP (1) JP2023550941A (ko)
KR (1) KR20230124551A (ko)
CN (1) CN116584095A (ko)
GB (1) GB2601364B (ko)
WO (1) WO2022112782A2 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134659A (zh) * 2022-06-15 2022-09-30 阿里巴巴云计算(北京)有限公司 视频编辑和配置方法、装置、浏览器、电子设备和存储介质
CN117676053B (zh) * 2024-01-31 2024-04-16 成都华栖云科技有限公司 一种动态字幕渲染方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2619627B (en) 2019-03-20 2024-02-28 V Nova Int Ltd Low complexity enhancement video coding

Also Published As

Publication number Publication date
GB2601364B (en) 2023-09-06
GB202018747D0 (en) 2021-01-13
US20240064388A1 (en) 2024-02-22
WO2022112782A2 (en) 2022-06-02
GB2601364A (en) 2022-06-01
CN116584095A (zh) 2023-08-11
JP2023550941A (ja) 2023-12-06
EP4252427A2 (en) 2023-10-04
WO2022112782A3 (en) 2022-08-04

Similar Documents

Publication Publication Date Title
CN109889907B (zh) 一种基于html5的视频osd的显示方法及装置
US20240064388A1 (en) Decoding a video stream within a browser
KR102336179B1 (ko) 비디오 데이터 처리 시스템
US11197040B2 (en) Deriving and signaling a region or viewport in streaming media
SA517380915B1 (ar) نسخ وحدة داخلي وتنبؤ بيني موحدين
JP2004531942A (ja) ウォーターマーク埋め込み
CN113557729B (zh) 视频码流解码方法、系统、装置和电子设备
US20130182965A1 (en) Distinct encoding and decoding of stable information and transient/stochastic information
US20220417499A1 (en) Image processing apparatus and method
TWI626841B (zh) 具有減少色彩解析度的視訊流之自適應處理
US7477795B2 (en) Image compression and expansion technique
US20150117515A1 (en) Layered Encoding Using Spatial and Temporal Analysis
US20240040147A1 (en) Data processing method and apparatus, computer device, and storage medium
US9774877B2 (en) Digital watermarking for securing remote display protocol output
GB2567485A (en) Method and device for exchanging data between a web application and an associated web engine
CN114514752A (zh) 用于交互式播放dash内容的应用程序预期交互式选择信息
US20240022743A1 (en) Decoding a video stream on a client device
US11973820B2 (en) Method and apparatus for mpeg dash to support preroll and midroll content during media playback
US11838602B2 (en) MPD chaining in a live CMAF/DASH player using W3C media source and encrypted extensions
US11799943B2 (en) Method and apparatus for supporting preroll and midroll during media streaming and playback
US20230108426A1 (en) Method and apparatus for dynamic dash picture-in-picture streaming
CN116866496A (zh) 视频编辑方法和电子设备