KR102519049B1 - 동적 컴포넌트를 포함하는 비디오의 효율적 렌더링 - Google Patents

동적 컴포넌트를 포함하는 비디오의 효율적 렌더링 Download PDF

Info

Publication number
KR102519049B1
KR102519049B1 KR1020217021523A KR20217021523A KR102519049B1 KR 102519049 B1 KR102519049 B1 KR 102519049B1 KR 1020217021523 A KR1020217021523 A KR 1020217021523A KR 20217021523 A KR20217021523 A KR 20217021523A KR 102519049 B1 KR102519049 B1 KR 102519049B1
Authority
KR
South Korea
Prior art keywords
layers
dynamic
static
video
file
Prior art date
Application number
KR1020217021523A
Other languages
English (en)
Other versions
KR20210141444A (ko
Inventor
나단 제임스 프레이
젱 선
이판 주
샌더 밀클로스 스제고
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20210141444A publication Critical patent/KR20210141444A/ko
Application granted granted Critical
Publication of KR102519049B1 publication Critical patent/KR102519049B1/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/44012Processing 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 rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
    • 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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4318Generation of visual interfaces for content selection or interaction; Content or additional data rendering by altering the content in the rendering process, e.g. blanking, blurring or masking an image region
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/90Determination of colour characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers
    • 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/23424Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
    • 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/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/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/278Subtitling

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Processing Or Creating Images (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

효율적인 동적 비디오 렌더링 방법이 특정 구현예에 대해 설명된다. 방법은 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함하는 비디오를 렌더링하기 위한 파일을 식별하는 단계; 비디오를 렌더링하기 위해 상기 파일의 하나 이상의 필드들을 분석하는 것에 기초하여, 상기 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 검출하는 단계, 각각의 동적 레이어는 가변 컴포넌트를 표시하는 코멘트를 포함하며; 상기 파일의 하나 이상의 정적 레이어들을 렌더링하는 단계; 사용자 디바이스로부터, 사용자 정보를 포함하는 상기 비디오에 대한 요청을 수신하는 단계; 상기 사용자 정보에 기초하여, 동적 레이어에 삽입되도록 지정된 변수 정의들을 결정하는 단계; 상기 변수 정의들을 사용하여, 상기 하나 이상의 동적 레이어들을 렌더링하는 단계; 및 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 단계를 포함한다.

Description

동적 컴포넌트를 포함하는 비디오의 효율적 렌더링
이 문서는 동적 컴포넌트를 포함하는 비디오를 효율적으로 렌더링하는 방법에 관한 것이다.
특정 환경에서 사용자 경험이 변경되지 않도록 예측 가능하거나 일정한 시간에 요청시 사용자에게 제시하기 위해 디자인을 커스터마이징하고 렌더링할 수 있도록 비디오 디자인을 동적으로 변경할 수 있는 방법이 이전에는 없었다.
일반적으로 비디오 합성 프로그램 렌더링 시간은 렌더링되는 비디오 프로젝트의 복잡성에 따라 다르다. 비디오 편집 및 합성을 위한 기존 솔루션은 비디오 프로젝트의 일부를 변경하기 위해 전체 비디오 프로젝트를 완전히 다시 렌더링해야 한다. 이러한 해결책은 종종 시간과 리소스를 많이 사용하며 요청자가 편집된 비디오를 수신하기 전에 눈에 띄는 지연을 일으키지 않고는 요청시 수행될 수 없다.
일반적으로, 본 명세서에 기술된 발명의 일 혁신적 양태는 동적 컴포넌트를 포함하는 비디오의 효율적 렌더링을 위한 방법에 포함될 수 있다 방법은 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함하는 비디오를 렌더링하기 위한 파일을 식별하는 단계; 비디오를 렌더링하기 위해 상기 파일의 하나 이상의 필드들을 분석하는 것에 기초하여, 상기 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 검출하는 단계, 각각의 동적 레이어는 가변 컴포넌트를 표시하는 코멘트를 포함하며; 상기 파일의 하나 이상의 정적 레이어들을 렌더링하는 단계; 사용자 디바이스로부터, 사용자 정보를 포함하는 상기 비디오에 대한 요청을 수신하는 단계; 상기 사용자 정보에 기초하여, 동적 레이어에 삽입되도록 지정된 변수 정의들을 결정하는 단계; 상기 변수 정의들을 사용하여, 상기 하나 이상의 동적 레이어들을 렌더링하는 단계; 및 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 단계를 포함한다.
이들 또는 다른 실시예들은 다음 구성들 중 하나 이상을 각각 선택적으로 포함할 수 있다.
일부 구현예들에서, 상기 방법은 깊이-우선 순회 알고리즘(depth-first traversal algorithm)을 사용하여, 상기 비디오를 렌더링하기 위해 상기 파일의 문서 객체 모델(document object model)을 평탄화(flattening)하는 단계를 더 포함한다. 상기 방법은 상기 렌더링된 하나 이상의 정적 레이어들에 기초하여, 상기 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 표시하는 템플릿을 생성하는 단계를 더 포함할 수 있다. 상기 변수 정의들을 사용하여 상기 하나 이상의 동적 레이어들을 렌더링하는 단계는 상기 변수 정의들을 사용하여 템플릿을 채우는 단계를 포함할 수 있다.
일부 구현예에서, 상기 파일은 하나 이상의 프레임들을 포함하고, 상기 파일의 상기 하나 이상의 정적 레이어들을 렌더링하는 단계는 상기 하나 이상의 정적 레이어들 중 각 레이어에 대해, 각 프레임의 이미지를 저장하는 단계를 포함한다.
일부 구현예에서, 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 단계는 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들을 결합하기 위해 알파 블렌딩 동작을 수행하는 단계를 포함한다.
일부 구현예에서, 상기 하나 이상의 동적 레이어들 중 적어도 하나는 로고, 텍스트, 비디오 및 색상을 나타내는 이미지 중 적어도 하나를 포함한다.
이 양태들의 다른 실시예들은 상기 방법들의 액션들을 수행하도록 구성된 대응 시스템들, 장치들 및 컴퓨터 저장 디바이스들에 인코딩된 컴퓨터 프로그램들을 포함할 수 있다.
본 문서에 기술된 본 발명의 특정한 실시예들은 다음의 이점들을 실현하도록 구현될 수 있다. 특정 환경에서 사용자 경험이 변경되지 않도록 예측 가능하거나 일정한 시간에 요청시 사용자에게 제시하기 위해 디자인을 커스터마이징하고 렌더링할 수 있도록 비디오 디자인을 동적으로 변경할 수 있는 방법이 이전에는 없었다. 이러한 단점은 본 명세서에서 논의되는 기법, 디바이스 및 시스템에 의해 해결된다. 이 문서에 설명된 기술을 사용하면 시스템에서 더 적은 리소스를 사용하고 더 적은 작업을 수행하여 다른 사용례 중에서 특정 애플리케이션, 사용자, 제품 또는 서비스와 관련된 맞춤형 비디오를 생성할 수 있다.
일반적으로 비디오 합성 프로그램 렌더링 시간은 렌더링되는 비디오 프로젝트의 복잡성에 따라 다르다. 비디오 편집 및 합성을 위한 기존 솔루션은 비디오 프로젝트의 일부를 변경하기 위해 전체 비디오 프로젝트를 완전히 다시 렌더링해야 한다. 이러한 해결책은 종종 시간과 리소스를 많이 사용하며 요청자가 편집된 비디오를 수신하기 전에 눈에 띄는 지연을 일으키지 않고는 요청시 수행될 수 없다.
이 새로운 시스템은 그래픽 복잡성과 관계없이 일정한 렌더링 시간을 지원할 수 있다. 즉, 시스템은 그래픽 복잡성에 관계없이 O(1) 시간으로 비디오를 동적으로 변경하고 렌더링할 수 있다. 예를 들어, 시스템은 레이어들의 그룹들을 이미지들의 시퀀스들 또는 정적 레이어들로 저장할 수 있다. 시스템이 동적 레이어로 표시된 레이어를 검출하면, 예를 들어 레이어의 구조와 이미지 대신 다른 레이어와 관련된 그것의 포지션을 표시하는 명령어 데이터를 저장할 수 있다. 저장된 명령어 데이터는 동적 레이어들을 형성하는데 사용된다. 동적 레이어들은 정적 레이어들을 가진 포지션에 저장될 수 있다. 정적 레이어들이 이미지들로 저장되었기 때문에, 최종 렌더링에 필요한 대부분의 계산 작업은 정확한 z-깊이 순서로 단일 이미지로 레이어들(정적 및 동적 둘 모두)을 합성하거나 결합하는 것이다. 이 새로운 시스템은 합성 수행에 최적화되어 있으므로, 동적 레이어의 동적 엘리먼트를 업데이트하고, 그래픽 복잡성에 관계없이 예측 가능하거나 일정한 시간에 최종 렌더링을 수행할 수 있다.
이 시스템은 비디오에 대한 요청이 수신될 때 필요한 작업의 복잡성을 줄일 수 있기 때문에 런타임에 최소한의 계산으로 커스터마이징된 비디오를 전달하게 하는 있는 효율적인 해결책을 제공한다. 정적 레이어들을 이미지들로 저장함으로써, 시스템은 요청 전에 계산 집약적 프로세싱을 많이 수행하므로, 요청시 비디오를 변경하고 렌더링하는데 필요한 계산 리소스의 양을 줄여서, 비디오를 요청한 최종 사용자의 지연을 감소시킨다.
이 시스템을 사용하면 비디오 프로젝트들을 특정한 애플리케이션, 사용자 기본 설정 및 지리적 위치에 맞게 커스터마이징할 수 있다. 각 요청에 대해 비디오를 커스터마이징하고 렌더링하는데 필요한 리소스의 양을 감소시키는 것 외에도, 시스템은 단일 비디오 프로젝트를 조정하여 다양한 애플리케이션 및 대상에 사용할 수 있도록 함으로써 소비되는 전체 리소스 양을 감소시킨다.
이 방법을 활용하면, 리소스를 절약하고 다시 수행해야 하는 비디오 디자인 작업을 줄이면서 사용자 요구 사항과 기대를 보다 밀접하게 충족하는 비디오의 커스터마이징을 허용한다. 또한, 개선된 업데이트 프로세스는 동적으로 변경되거나 업데이트되지 않는 비디오 부분을 다시 렌더링할 필요를 제거하여, 콘텐츠 개인화 및 전달 시스템의 효율성을 제공한다. 이 시스템은 많은 리소스를 필요로 하는 디자인, 편집 및 사후 프로세싱 단계 후에 비디오 디자이너, 개발자 및 콘텐츠 제공자가 이미지 및 비디오 콘텐츠를 조정할 수 있는 방법을 제공한다.
본 명세서에서 본 발명의 하나 이상의 실시예들의 세부 사항은 첨부 도면과 아래의 설명에서 기술된다. 본 발명의 다른 구성들, 양태들 및 이점들은 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1은 효율적인 동적 비디오 편집 및 렌더링을 위한 예시적 환경의 블록도이다.
도 2는 효율적이고 동적인 비디오 렌더링 프로세스의 데이터 흐름을 도시한다.
도 3은 효율적인 동적 비디오 편집 및 렌더링을 위한 예시적 프로세스의 흐름도이다.
도 4는 예시적 컴퓨터 시스템의 블록도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 컴포넌트를 표시한다.
본 문서는 비디오 편집 및 렌더링 속도를 향상시키고 단일 비디오 프로젝트가 여러 애플리케이션에 사용되고 다양한 청중의 선호에 맞게 조정될 수 있게 하는 방법, 시스템 및 디바이스를 설명한다.
일부 구현예에서, 시스템은 완료된 비디오 프로젝트가 요청시에 변경되고, 눈에 띄는 지연이 거의 또는 전혀없이 요청하는 사용자에게 제공되도록 한다. 예를 들어, 사용자는 특정한 클라이언트를 위해 비디오 프로젝트를 조정하려는 비디오 제작자 또는 콘텐츠 배포를 위한 시스템의 최종 사용자일 수 있다. 예를 들어, 시스템은 비디오 합성 프로그램으로부터 합성 아이템의 형태로 비디오 프로젝트 파일을 수신할 수 있다. 그 다음 시스템은 파일을 평탄화(flattening)하고 프로세싱하여 레이어들을 식별할 수 있고; 각 레이어가 동적인지 정적인지 결정하고; 레이어 내에 포함된 데이터 유형에 기초하여 각 레이어를 분류하고 레이블을 지정할 수 있다. 예를 들어, 동적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함할 수 있다. 레이어들이 분류된 후, 레이어 데이터는 레이어를 렌더링하는데 필요한 모든 소스 데이터가 포함된 객체로 변환될 클래스로 래핑(wrapping)된다. 연속적인 정적 레이어들은 사전 렌더링된 이미지들로 함께 출력될 수 있으므로 저장 공간과 내보내기 시간을 절약할 수 있으므로 함께 래핑될 수 있다. 그런 다음, 데이터 유형에 기초하여 정적 레이어들을 사전 렌더링하고, 동적 레이어들에 대한 명령어 데이터를 포함하는 객체를 다중 레이어 템플릿으로 내보낸다. 일부 구현예에서, 시스템은 각 템플릿에 대해 한 번씩 정적 레이어들의 사전 렌더링을 수행한다. 비디오 프로젝트 파일과 연관된 비디오에 대한 요청을 수신하면, 시스템은 동적 레이어들의 가변 부분을 채우고, 사전 렌더링된 정적 레이어들과 채워진 동적 레이어들의 합성을 수행하여 요청에 대한 응답으로 제시될 최종 비디오를 생성할 수 있다. 일부 구현예에서, 시스템은 비디오의 상이한 버전과 같은, 비디오의 하나 이상의 인스턴스화를 위해 동적 레이어들의 가변 부분을 채우고, 사전 렌더링된 정적 레이어들 및 채워진 동적 레이어들을 합성한다.
도 1은 효율적인 동적 비디오 편집 및 렌더링을 위한 예시적 환경(100)의 블록도이다. 예시적 환경(100)은 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷 또는 그들의 조합과 같은 네트워크(102)를 포함한다. 네트워크(102)는 전자 문서 서버(104), 사용자 디바이스(106), 디지털 컴포넌트 서버(106) 및 디지털 컴포넌트 배포 시스템(110)(또한 DCDS(110)으로도 지칭됨)을 연결한다. 예시적 환경(100)은 많은 상이한 전자 문서 서버(104) 및 사용자 디바이스(106)를 포함할 수 있다.
사용자 디바이스(106)는 네트워크(102)를 통해 리소스들(예를 들어, 전자 문서들)을 요청하고 수신할 수 있는 전자 디바이스이다. 예시적 사용자 디바이스들(106)은 퍼스널 컴퓨터들, 모바일 통신 디바이스들 및 네트워크(102)를 통해 데이터를 송수신할 수 있는 기타 디바이스들을 포함한다. 사용자 디바이스(106)는 일반적으로 네트워크(102)를 통해 데이터의 송수신을 지원하기 위한 웹 브라우저와 같은 사용자 애플리케이션을 포함하지만, 사용자 디바이스(106)에 의해 실행되는 네이티브 애플리케이션(native application)도 네트워크(102)를 통해 데이터의 송수신을 지원할 수 있다.
하나 이상의 서드파티(150)는 비디오, 제품 및/또는 서비스의 디자인, 개발, 마케팅 또는 배포에 관련된 콘텐츠 제공자, 제품 디자이너, 제품 제조업체 및 기타 당사자를 포함한다.
전자 문서는 사용자 디바이스(106)에서 콘텐츠의 세트를 제시하는 데이터이다. 전자 문서들의 예시들은 웹페이지, 워드 프로세싱 문서, PDF(Portable Document Format) 문서, 이미지, 비디오, 검색 결과 페이지 및 피드 소스를 포함한다. 모바일, 태블릿 또는 데스크톱 컴퓨팅 디바이스들에 설치된 어플리케이션과 같은 네이티브 어플리케이션들(예: "앱들")도 전자 문서들의 예시들이다. 전자 문서들(105)은 전자 문서 서버(104)에 의해 사용자 디바이스(106)에 제공될 수 있다. 예를 들어, 전자 문서 서버들(104)은 퍼블리셔 웹사이트를 호스팅하는 서버들을 포함할 수 있다. 이 예시에서, 사용자 디바이스(106)는 주어진 퍼블리셔 웹페이지에 대한 요청을 개시할 수 있고, 상기 주어진 퍼블리셔 웹페이지를 호스팅하는 전자 문서 서버(104)는 사용자 디바이스(106)에서 상기 주어진 웹페이지의 제시를 개시하는 기계 HTML 코드를 송신함으로써 상기 요청에 응답할 수 있다.
전자 문서들은 다양한 콘텐츠를 포함할 수 있다. 예를 들어, 전자 문서(105)는 전자 문서 자체 내에 있는 및/또는 시간 경과에 따라 변하지 않는 정적 콘텐츠(예: 텍스트 또는 기타 특정 내용)을 포함할 수 있다. 또한, 전자 문서들은 시간이 지남에 따라 또는 요청 기반으로 변경될 수 있는 동적 콘텐츠를 포함할 수 있다. 예를 들어, 주어진 전자 문서의 퍼블리셔는 전자 문서의 일부를 채우기 위해 사용되는 데이터 소스를 유지할 수 있다. 이 예시에서, 주어진 전자 문서는 사용자 디바이스(106)에 의해 주어진 전자 문서가 프로세싱(예를 들어, 렌더링 또는 실행)되는 경우, 사용자 디바이스(106)로 하여금 데이터 소스로부터 콘텐츠를 요청하게 하는 태그 또는 스크립트를 포함할 수 있다. 사용자 디바이스(106)는 데이터 소스로부터 획득된 콘텐츠를 상기 주어진 전자 문서의 제시에 통합하여, 상기 데이터 소스로부터 획득된 콘텐츠를 포함하는 복합 전자 문서를 생성한다.
일부 경우에, 주어진 전자 문서는 디지털 컴포넌트 배포 시스템(110)을 참조하는 디지털 콘텐츠 태그들 또는 디지털 콘텐츠 스크립트를 포함할 수 있다. 이들 상황에서, 디지털 콘텐츠 태그 또는 디지털 콘텐츠 스크립트는 주어진 전자 문서가 사용자 디바이스(106)에 의해 프로세싱되는 경우, 사용자 디바이스(106)에 의해 실행된다. 디지털 콘텐츠 태그 또는 디지털 콘텐츠 스크립트의 실행은 사용자 디바이스(106)를 구성하여, 디지털 콘텐츠에 대한 요청(108)을 생성하며, 상기 디지털 콘텐츠는 네트워크(102)를 통해 DCDS(110)에 전송된다. 예를 들어, 디지털 콘텐츠 태그 또는 디지털 콘텐츠 스크립트는 사용자 디바이스(106)로 하여금 헤더 및 페이로드 데이터를 포함하는 패킷화된 데이터 요청을 생성하게 한다. 요청(108)은 디지털 콘텐츠가 요청되는 서버의 이름(또는 네트워크 위치), 요청하는 디바이스(예를 들어, 사용자 디바이스(106))의 이름(또는 네트워크 위치) 및/또는 상기 요청에 응답하여 제공되는 디지털 콘텐츠를 선택하기 위해 디지털 콘텐츠 배포 시스템(110)이 사용할 수 있는 정보를 포함할 수 있다. 요청(108)은 사용자 디바이스(106)에 의해, 네트워크(102)(예를 들어, 통신 네트워크)를 통해, 디지털 콘텐츠 배포 시스템(110)의 서버로 전송된다.
요청(108)은 전자 문서 및 디지털 콘텐츠가 제시될 수 있는 위치들의 특성들을 를 특정하는 데이터를 포함할 수 있다. 예를 들어, 디지털 콘텐츠가 제시될 전자 문서(예: 웹페이지)에 대한 참조(예: URL), 디지털 콘텐츠를 제시하기 위해 사용가능한 전자 문서들의 사용가능한 위치들(예: 디지털 콘텐츠 슬롯들), 상기 사용가능한 위치들의 크기들, 전자 문서의 제시 내에서 사용 가능한 위치들의 포지션들 및/또는 상기 위치들에서 제시하기에 적합한 미디어 유형들을 특정하는 데이터가 디지털 콘텐츠 배포 시스템(110)에 제공될 수 있다. 유사하게, 전자 문서에 의해 참조되는 상기 전자 문서와 연관된 키워드들("문서 키워드") 또는 엔티티들(예를 들어, 사람들, 장소들 또는 사물들)의 선택을 위해 지정된 키워드를 특정하는 데이터는 또한 상기 요청(108)에 포함되고(예를 들어, 페이로드 데이터로서), 디지털 콘텐츠 배포 시스템(110)에 제공되어 전자 문서와의 제시에 적합한 디지털 콘텐츠 아이템의 식별을 용이하게 한다.
또한, 요청들(108)은 사용자가 제공했던 정보, 요청이 제출되었던 주(state) 또는 지역을 표시하는 지리적 정보 또는 디지털 콘텐츠가 디스플레이될 환경에 대한 컨텍스트를 제공하는 기타 정보(예: 모바일 디바이스 또는 태블릿 디바이스와 같이 디지털 콘텐츠가 디스플레이될 디바이스의 유형)와 같은 기타 정보와 관련된 데이터를 포함할 수 있다. 사용자에게 제공된 정보는 사용자 디바이스(106)의 사용자에 대한 인구통계 데이터를 포함할 수 있다. 예를 들어, 인구통계 정보는 연령, 성별, 지리적 위치, 교육 수준, 결혼 여부, 가구 소득, 직업, 취미, 소셜 미디어 데이터, 사용자가 특정한 아이템을 소유하고 있는지 여부 등을 포함할 수 있다.
본 명세서에서 논의된 시스템들이 사용자들에 관한 개인 정보를 수집하거나 또는 개인 정보를 사용하는 경우들에 있어서, 사용자들에게 프로그램들 또는 구성들이 개인 정보 예를 들면, 사용자의 소셜 네트워크, 소셜 액션들 또는 활동들, 직업, 사용자의 선호들 또는 사용자의 현재 위치에 관한 정보를 수집할 것인지 여부를 제어할, 사용자와 더 관련된 콘텐츠 서버로부터의 콘텐츠를 수신할지 및/또는 어떻게 수신할지 제어할 기회가 제공될 수 있다. 추가로, 특정 데이터는 그것이 저장되거나 사용되기 전에 하나 이상의 다양한 방식들로 익명화되어, 개인적으로 식별가능한 정보는 제거된다. 예를 들면, 사용자의 신원은 사용자에 관한 개인적으로 식별가능한 정보가 결정될 수 없도록 익명화되거나 또는 사용자의 지리적 위치는 위치 정보가 획득된 곳에서 일반화되어(시, 우편번호 또는 주 수준으로), 사용자의 특정한 위치가 결정될 수 없도록 한다. 따라서, 사용자는 그 또는 그녀에 관한 정보가 어떻게 수집되는지 그리고 콘텐츠 서버에 의해 사용되는지에 관한 제어를 가질 수 있다.
또한, 사용자 디바이스(106)의 모델을 식별하는 정보, 사용자 디바이스(106)의 구성 또는 전자 문서가 제시되는 전자 디스플레이(예: 터치스크린 또는 데스크톱 모니터)의 크기(예: 물리적 크기 또는 해상도)와 같은 사용자 디바이스(106)의 특성들을 특정하는 데이터도 상기 요청(108)에서 제공될 수 있다. 요청들(108)은 예를 들어, 패킷화된 네트워크를 통해 전송될 수 있고, 요청들(108) 자체는 헤더 및 페이로드 데이터를 갖는 패킷화된 데이터로서 포맷팅될 수 있다. 상기 헤더는 상기 패킷의 목적지를 특정할 수 있고, 상기 페이로드 데이터는 상기 논의된 임의의 정보를 포함할 수 있다.
디지털 컴포넌트 배포 시스템(110)은 요청(108)의 수신 및/또는 상기 요청(108)에 포함된 정보의 사용에 응답하여, 주어진 전자 문서와 함께 제시될 디지털 콘텐츠를 선택한다. 일부 구현예에서, 디지털 콘텐츠 배포 시스템(110)은 예를 들어, 상호연결되고, 그리고 요청들(108)에 응답하여 디지털 콘텐츠를 식별하고 배포하는 서버 및 다수의 컴퓨팅 디바이스들의 세트를 포함하는 분산 컴퓨팅 시스템(또는 환경)에서 구현된다. 다수의 컴퓨팅 디바이스(114)의 세트는 수백만의 사용가능한 디지털 콘텐츠의 코퍼스 중에서 전자 문서에 제시되기에 적합한 디지털 콘텐츠의 세트를 식별하기 위해 함께 동작한다. 수백만의 사용가능한 디지털 콘텐츠는 예를 들어, 디지털 컴포넌트 데이터베이스(112)에서 색인될 수 있다. 각 디지털 콘텐츠 색인 항목은 대응하는 디지털 콘텐츠를 참조하거나 및/또는 대응하는 디지털 콘텐츠의 배포를 조건화하는 배포 파라미터들(예: 선택 기준)을 포함할 수 있다.
일부 구현예에서, 디지털 컴포넌트 데이터베이스(112)로부터의 디지털 컴포넌트는 서드파티(150)에 의해 제공되는 콘텐츠를 포함할 수 있다. 예를 들어, 디지털 컴포넌트 데이터베이스(112)는 공도를 탐색하기 위해 기계 학습 및/또는 인공 지능을 사용하는 서드파티(150)로부터 공공 교차로의 사진을 수신할 수 있다. 다른 예에서, 디지털 컴포넌트 데이터베이스(112)는 자전거 라이더에게 서비스를 제공하는 서드파티(150)로부터 서드파티(150)가 사용자로부터 응답을 원하는 특정 질문을 수신할 수 있다. 추가적으로, DCDS(110)는 예를 들어 비디오 렌더링 프로세서(130)로부터의 콘텐츠 및 디지털 컴포넌트 데이터베이스(112)에 저장된 비디오 렌더링 프로세서(130)에 의해 제공되는 비디오 콘텐츠를 포함하는 비디오 콘텐츠를 제시할 수 있다.
적합한 디지털 콘텐츠의 식별은 다수의 컴퓨팅 디바이스들의 세트 내의 컴퓨팅 디바이스들 사이에 할당되는 다수의 작업들로 세분될 수 있다. 예를 들어, 상이한 컴퓨팅 디바이스들은 디지털 컴포넌트 데이터베이스(112)의 상이한 부분을 각각 분석하여 요청(108)에 포함된 정보와 매칭되는 배포 파라미터들을 갖는 다양한 디지털 콘텐츠를 식별할 수 있다.
디지털 콘텐츠 배포 시스템(110)은 다수의 컴퓨팅 디바이스들(114)의 세트로부터 수신된 결과들을 집합시키고, 상기 집합된 결과들과 연관된 정보를 사용하여, 요청(108)에 응답하여 제공될 디지털 콘텐츠의 하나 이상의 인스턴스들을 선택한다. 차례로, 디지털 컴포넌트 배포 시스템(110)은 사용자 디바이스(106)로 하여금 디지털 콘텐츠의 선택된 세트를 주어진 전자 문서에 통합하게 하는 응답 데이터(114)를 생성하고, 네트워크(102)를 통해 전송할 수 있어, 디지털 콘텐츠의 선택된 세트와 상기 전자 문서의 콘텐츠가 사용자 디바이스(106)의 디스플레이에 함께 제시되도록 한다.
비디오 합성 프로그램(VCP)(120)은 사용자가 비디오 프로젝트 파일들을 생성할 수 있게 한다. 비디오 프로젝트 파일들은 비디오 렌더링을 위한 데이터 컬렉션을 표현한다. 일부 구현예에서, 비디오 프로젝트 파일들은 각각 조작될 수 있고, 아이템의 컬렉션 내의 객체에 대한 정보를 제공할 수 있는 컴포지션 아이템이다. 예를 들어, 컴포지션 아이템들은 알파 채널이 함께 블렌딩된 여러 레이어들을 포함하는 아이템들일 수 있다. 설명의 편의를 위해, VCP(120)는 비디오 합성 프로그램으로 설명되지만, VCP(120)는 또한 디지털 시각 효과, 모션 그래픽 및/또는 합성 프로세싱을 수행할 수 있다. 예를 들어, VCP(120)은 비디오의 사후 제작 프로세싱을 위한 프로그램일 수 있다.
비디오 렌더링 프로세서(VRP)(130)는 VCP(120)로부터 비디오 프로젝트 파일들을 수신하고, 비디오 프로젝트 파일 컴포넌트를 검출, 라벨링, 채우기 및 렌더링하기 위해 비디오 프로젝트 파일을 프로세싱한다. VRP(130)는 평탄화기(flattener)(132), 분류기(134) 및 내보내기(exporter)(136)를 포함한다. 평탄화기(132)는 수신된 비디오 프로젝트 파일의 레이어들과 같은 컴포넌트를 평탄화한다. 분류기(134)는 수신된 비디오 프로젝트 파일의 레이어들을 분류하고 라벨링한다. 내보내기(136)는 템플릿 파일을 생성하기 위해 라벨링된 레이어를 프로세싱하는 방법 및 최종 출력을 위해 템플릿 파일 및 하나 이상의 변경되거나 채워진 레이어를 프로세싱하는 방법을 결정한다.
설명의 편의를 위해, 평탄화기(132), 분류기(134) 및 내보내기(136)가 도 1에 VRP(130)의 별도 컴포넌트로서 도 1에 도시된다. VRP(130)은 비일시적 컴퓨터 판독 가능 매체에서 단일 시스템으로 구현될 수 있다. 일부 구현예에서, 하나 이상의 평탄화기(132), 분류기(134) 및 내보내기(136)는 단일 시스템의 통합된 컴포넌트로서 구현될 수 있다. VRP(130), 그 컴포넌트 평탄화기(132), 분류기(134), 내보내기(136) 및 각각의 출력은 아래에서 더 자세히 설명된다.
템플릿 인스턴스화 시스템(140)은 VRP(130)에 의해 생성된 템플릿을 인스턴스화하여 템플릿의 동적 레이어들을 채우고 및/또는 변경한다. 일부 구현예에서, 템플릿 인스턴스화 시스템(140)은 예를 들어, 비디오의 각 버전에 대해 하나 이상의 템플릿을 인스턴스화함으로써, 비디오의 하나 이상의 버전의 동적 레이어들을 채우고 및/또는 변경할 수 있다. 이 특정 구현예에서, 템플릿 인스턴스화 시스템(140)은 VRP(130)와 별개로 도시된다. 템플릿 인스턴스화 시스템(140)은 예를 들어 특정 레이어가 어떻게 인스턴스화되어야 하는지를 나타내는 입력을 수신할 수 있다. 템플릿 인스턴스화 시스템(140)은 사용자 디바이스(106), VCP(120) 및 서드파티(150)를 포함하는 시스템(100)의 다른 컴포넌트로부터 입력을 수신할 수 있다. 일부 구현예에서, 템플릿 인스턴스화 시스템(140)은 VRP(130)에 의해 생성된 템플릿의 특정 레이어들을 채우기 위한 미리 결정된 값을 포함한다. 템플릿 인스턴스화 시스템(140)은 예를 들어, 사용자 디바이스(106), VCP(120) 및/또는 서드파티(150)로부터의 입력에 기초하여 템플릿을 채울 상이한 값들을 결정할 수 있다.
일부 구현예에서, 템플릿 인스턴스화 시스템(140)은 VRP(130)와 통합되거나 VRP(130)의 컴포넌트일 수 있다. 예를 들어, 템플릿 인스턴스화 시스템(140)은 VRP(130)의 모듈일 수 있고, 시스템(100)의 다른 컴포넌트와 통신할 수 있다.
템플릿 인스턴스화 시스템(140)은 최종 렌더링 및 출력을 위해 인스턴스화된 템플릿을 VRP(130)에 제공한다. 예를 들어, 템플릿 인스턴스화 시스템(140)은 각각의 동적 레이어를 레이어의 가변 컴포넌트가 채워진 객체로서 인스턴스화할 수 있다. 이러한 객체는 컬렉션에 저장되어 최종 렌더링을 위해 VRP(130)에 전달될 수 있다. 일부 구현예에서, 템플릿 인스턴스화 시스템(140)은 VRP(130)에 다중 레이어 렌더링 요청으로서 상기 컬렉션을 제공할 수 있다.
아래에 설명된 기법을 통해 시스템은 복잡성에 관계없이 효율적으로 비디오를 편집하고 렌더링할 수 있다.
도 2는 도 1의 예시적인 환경에서의 효율적인 동적 비디오 편집 및 렌더링 프로세스의 예시적 데이터 흐름(200)을 도시한다. 데이터 흐름(200)의 동작은 시스템(100)의 다양한 컴포넌트에 의해 수행된다. 예를 들어, 데이터 흐름(200)의 동작은 DCDS(110), 비디오 합성 프로그램(120), 템플릿 인스턴스화 시스템(140) 및 사용자 디바이스(106)와 통신하는 비디오 렌더링 프로세서(130)에 의해 수행될 수 있다.
흐름은 VCP(120)가 비디오 프로젝트 파일(202)을 VRP(130)에 제공하는 단계 A에서 시작한다. 비디오 프로젝트 파일(202)은 컴포지션을 표현하는 객체이다. 예를 들어, 비디오 프로젝트 파일(202)은 아이템 컬렉션을 갖는 CompItem 객체일 수 있다. 비디오 프로젝트 파일(202)은 조작될 수 있고, 객체 및 그것의 아이템 컬렉션에 대한 정보가 획득될 수 있다. 일부 구현예에서, 비디오 프로젝트 파일(202)의 컬렉션 내의 아이템은 컬렉션 내의 포지션 인덱스 번호에 의해 액세스될 수 있다. 이러한 아이템은 비디오를 구성하는 다른 컴포넌트 중에서 이미지, 텍스트, 오디오 및/또는 객체를 포함하는 비디오 레이어들과 같은 객체이다.
비디오 프로젝트 파일(202)은 VCP(120)의 사용자에 의해 생성될 수 있다. 예를 들어, 비디오 제작자 또는 디자이너는 비디오 프로젝트 파일(202)을 생성할 수 있다. 사용자는 비디오에서 교체하거나 변경할 수 있는 부분을 나타낼 수 있다. 일부 구현예에서, 사용자는 특정한 레이어를 동적으로 표시하기 위해 코멘트 필드와 같은 VCP(120)의 내장 필드를 사용할 수 있다. 예를 들어, VCP(120)의 사용자는 레이어의 코멘트 필드를 사용하여, 변수 "var"를 true로 설정할 수 있으며, 따라서 레이어의 적어도 일부가 교체되거나 변경될 수 있음을 나타낼 수 있다. 일부 구현예에서, 사용자는 레이어의 표시된 부분이 교체되거나 변경되지 않는 경우 사용될 기존 레이어와 같은 기본값을 나타낼 수 있다. 일부 구현에서, 사용자는 사용자 선호도, 사용자 인구통계, 위치 정보 및 수신된 기타 정보와 같은 인자에 기초하여 레이어의 표시된 부분 대신 사용될 미리 결정된 값 세트를 나타낼 수 있다.
흐름은 단계 B로 계속되는데, 여기서 VRP(130)는 비디오 프로젝트 파일(202)의 DOM(문서 객체 모델)을 평탄화한다. DOM은 논리적 트리 구조로 문서를 표현하는 크로스 플랫폼 및 언어 독립적 인터페이스이며, 여기서 각 노드는 문서의 일부를 표현하는 객체이다. 트리의 각 분기는 노드에서 끝나고, 각 노드는 객체를 포함한다. 일부 구현예에서, 비디오 프로젝트 파일(202)의 레이어들 중 하나는 계층 또는 깊이 지점을 제공하는 다른 컴포지션에 대한 포인터이다. VRP(130)의 평탄화기(132)는 비디오 프로젝트 파일(202)의 DOM에 있는 객체들에 대해 반복할 수 있다. 예를 들어, VRP(130)의 평탄화기(132)는 비디오 프로젝트 파일(202)의 DOM 내의 모든 레이어들의 깊이 우선 평탄화를 수행할 수 있다. 깊이 우선 평탄화는 예를 들어, 비디오 프로젝트 파일(202)의 DOM의 시작 노드를 선택하고, 모든 인접 노드를 스택으로 푸시하고, 스택에서 노드를 팝핑하여 방문할 다음 노드를 선택하고, 해당 노드의 모든 인접 노드를 스택으로 푸시하고, 스택이 비워질 때까지 프로세스를 반복함으로써 구현될 수 있다. 일부 구현예에서, 평탄화기(132)는 z-깊이 순서로 또는 폭-방향 순서로 각 레이어에 걸쳐 반복할 수 있다. 예를 들어, 비디오 프로젝트 파일(202)의 DOM 루트에서 시작하고 다음 깊이 레벨의 노드로 계속 진행하기 전에 현재 깊이에서 모든 인접 노드를 탐색함으로써, 깊이 우선 평면화와 같은 반대 전략을 사용하여 폭-방향 평탄화를 구현할 수 있다.
흐름은 단계 C로 계속되는데, 여기서 VRP(130)는 비디오 프로젝트 파일(202)의 각각의 레이어를 분류하여 나중에 사용하기 위해 적절한 내보내기 모듈이 식별될 수 있도록 한다. 일부 구현예에서, 단계 C는 단계 B와 동시에 수행되어, VRP(130)는 깊이 우선 알고리즘을 통해 평탄화될 때 레이어들을 분류한다. 예를 들어, 평탄화기(132)가 각각의 노드를 탐색함에 따라, 분류기(134)는 각각의 검출된 레이어에 대한 특정한 파일 포맷을 검출하고 VRP(130)가 레이어를 렌더링하기 위한 적절한 내보내기 모듈을 선택할 수 있도록 레이어에 라벨을 붙일 수 있다.
분류기(134)는 레이어가 동적 레이어(변경될 수 있는 가변 컴포넌트 또는 컴포넌트를 갖는 레이어) 또는 정적 레이어(변경될 수 있는 가변 컴포넌트 또는 컴포넌트를 갖지 않는 레이어)인지 여부를 검출할 수 있다. 예를 들어, 정적 레이어는 비디오 배경에 남아있는 태양 이미지와 같은 이미지일 수 있다. 일부 구현예에서 정적 레이어는 최종 렌더링에서 변경되지 않을 레이어일 수 있다. 예를 들어, 비디오의 정적 레이어들은 가변 컴포넌트가 없고 요청 전에 렌더링될 수 있는 모든 레이어를 포함할 수 있다. 일부 구현예에서, 동적 레이어는 예를 들어 비디오 장면 주위에 배치되거나 이동되어야 하는 2D 또는 3D 이미지 또는 비디오일 수 있다. 예를 들어, 동적 레이어는 별 등급(별 5개 중 등급)과 같은 비즈니스 로직 이미지 엘리먼트 또는 녹색 배경과 같은 색상 레이어일 수 있다.
일부 구현예에서, 분류기(134)는 레이어의 필드가 특정한 값을 갖는지 여부를 결정함으로써 레이어가 동적 레이어인지 여부를 식별할 수 있다. 분류기(134)는 예를 들어 레이어의 코멘트 필드가 특정 변수 또는 텍스트 세트를 포함하는지 여부를 결정할 수 있다. 일 예에서, 분류기(134)는 특정 레이어에 대한 Layer.comment.contains('var=true')의 값이 TRUE인지 여부를 확인하여, 레이어가 동적인지 결정할 수 있다.
레이어가 동적인지 정적인지 여부를 결정하는 것 외에도, 분류기(134)는 레이어 내에 포함된 데이터 유형에 기초하여 각 레이어를 분류하고 라벨링할 수 있다. 이러한 레이블을 사용하여 레이어 렌더링에 적합한 내보내기 모듈을 결정할 수 있다. 예를 들어, 분류기(134)는 Layer.constructor == AVLayer 의 값이 TRUE인지 여부를 확인하여, 레이어가 비디오 레이어인지 여부를 결정할 수 있다. 비디오 레이어는 예를 들어 오디오 또는 이미지 데이터를 포함할 수 있다.
다른 예에서, 분류기(134)는 Layer.constructor == TextLayer 의 값이 TRUE인지 여부를 확인하여 레이어가 텍스트 레이어인지 여부를 결정할 수 있다. 예를 들어, 레이어가 동적 텍스트 레이어인 경우, 변경될 수 있는 레이어의 특성은 텍스트 자체, 배치, 투명도, 크기, 색상 및 글꼴 등을 포함할 수 있다. 텍스트 레이어는 예를 들어 2D 또는 3D 텍스트를 포함할 수 있다.
다른 예에서, 분류기(134)는 Layer.source.typeName == 'Composition' 의 값이 TRUE인지 여부를 확인하여, 레이어가 DOM의 계층 노드인지 결정할 수 있다. 예를 들어, 분류기(134)가 레이어를 계층 노드라고 결정하면, VRP(130)는 이 노드를 DOM 계층의 한 지점으로 사용하고, 전체 트리가 순회될 때까지 비디오 프로젝트 파일(202)의 DOM을 계속 평탄화하기 위해 재귀를 사용한다.
다른 예에서, 분류기(134)는 Layer.comment DOES NOT contain('var = true') 의 값이 TRUE인지 여부를 확인하여, 레이어가 정적 레이어인지 결정할 수 있다. 정적 레이어는 최종 렌더링시 변경되지 않으므로 동적 레이어와 다르게 취급될 수 있다. 정적 및 동적 레이어들의 처리는 다음 단계에서 자세히 설명된다.
흐름은 단계 D로 계속되는데, 여기서 VRP(130)는 비디오 프로젝트 파일(202)의 평탄화되고 분류된 레이어들을 사용하여 템플릿을 생성한다. 예를 들어, 내보내기(136)는 비디오 프로젝트 파일(202)의 동적 및 정적 레이어들을 표현하는 템플릿을 생성할 수 있다. 각 레이어가 분류된 후, 내보내기(136)는 대기열을 이루는 클래스로 레이어를 래핑할 수 있다. 예를 들어, 내보내기(136)는 레이어를 렌더링하는데 필요한 모든 소스 재료를 포함하는 클래스로 레이어를 래핑할 수 있다. 이러한 아이템들은 대기열에 저장되어 템플릿으로 내보내질 수 있다. 일부 구현예에서, 레이어가 클래스로 래핑되고 해당 클래스의 아이템이 인스턴스화된 후에, 비디오 프로젝트 파일(202)에 대한 추가 참조가 만들어지지 않는다. 이 포맷은 VRP(130)가 비디오 프로젝트 파일(202)에 대한 참조 및 액세스의 수를 감소시켜, 비디오를 렌더링하는데 필요한 컴퓨팅 리소스의 양을 감소시킨다.
일부 구현예에서, 둘 이상의 정적 레이어가 클래스의 단일 아이템으로 래핑될 수 있다. 예를 들어, z-깊이 순서의 연속 정적 레이어 또는 기타 적절한 순서 체계를 사전 렌더링된 이미지로 함께 템플릿으로 내보낼 수 있다. 예를 들어, 내보내기(136)는 z-깊이 순서로 3개의 연속된 정적 레이어를 단일 PNG로 렌더링할 수 있다. 일부 구현예에서, 내보내기(136)는 단일 이미지로 내보내질 정적 레이어들의 시퀀스를 식별할 수 있다. 예를 들어, 내보내기(136)는 정적 레이어가 검출되면 시퀀스를 시작하고, 동적 레이어를 검출하면 시퀀스를 종료하여 시퀀스가 동적 레이어를 포함하지 않도록 할 수 있다. 한 번에 다수의 정적 레이어를 내보내면, 내보내기(136)는 정적 레이어들을 저장하는데 필요한 스토리지 리소스의 양을 줄이고 최종 렌더링 프로세스에 걸리는 시간을 감소시킨다.
일부 구현예에서, 다른 유형들은 하나의 레이어만 포함한다. 예를 들어, 하나의 동적 레이어만 클래스의 단일 아이템으로 래핑될 수 있다. 동적 레이어들을 포함하는 클래스의 아이템들은 다른 정보 중에서도 아이템의 구조에 관한 명령어 및 변수인 레이어 부분과 같은 정보를 포함할 수 있다.
일부 구현예에서, 내보내기(136)는 대기열 아이템들의 저장을 처리하고, 아이템들을 출력 형식으로 내보내 템플릿을 생성하고, 템플릿이 인스턴스화될 때 내보내기(136)는 템플릿을 채우고 채워진 템플릿을 디스크에 저장한다. 예를 들어, 내보내기(136)는 템플릿 자체를 JSON(JavaScript Object Notation) 형식의 프로토콜 버퍼 객체로 저장할 수 있다. 프로토콜 버퍼 객체 또는 메시지는 상대 경로를 사용하여 저장된 소스 자료를 참조할 수 있다.
템플릿이 인스턴스화된 후, 내보내기(136)는 템플릿 변수를 비디오 프로젝트 파일(202)의 속성으로 채운다. 예를 들어, 내보내기(136)는 비디오 프로젝트 파일(202)로부터의 비디오 파라미터로 인스턴스화된 템플릿을 채울 수 있다. 내보내기(136)는 변환 라이브러리를 사용하여 템플릿을 파라미터들로 채운다.
변환을 사용하면 레이어를 시간에 따라 조정할 수 있다. 하나 이상의 변환을 레이어 내의 주어진 프레임에 적용할 수 있다. 예를 들어, 내보내기(136)는 포지션, 투명도, 마스크, 블러 및 텍스처 변환과 같은 변환을 적용할 수 있다. 예를 들어, 내보내기(136)는 이미지 시퀀스를 사용하여 마스크 변환을 수행할 수 있다. 다른 예에서, 내보내기(136)는 객체의 포지션을 계산하는 변환을 수행할 수 있다. 예를 들어, 내보내기(136)는 각 엘리먼트의 코너에 null 엘리먼트 유형을 배치 및 잠그고, 각 null 엘리먼트의 코너에 다른 유형의 null 엘리먼트를 추가하여, 각 프레임에서 객체의 2D 투영 이미지 포지션을 계산하는 라이브러리를 사용할 수 있다. 예를 들어, 내보내기(136)는 null 3D 엘리먼트를 각 엘리먼트의 코너에 배치하고 잠그고, 각 3D 엘리먼트의 코너에 2D null을 추가할 수 있다. 일부 구현에서, 내보내기(136)는 VCP(120)와 같은 프로그램의 기존 라이브러리를 사용할 수 있다.
각 프레임에 대한 변환 그룹은 해당 프레임 내에서 객체를 조정하는데 필요한 모든 데이터를 제공한다. 변환은 키프레임이 필요하지 않도록 주어진 프레임 내에 자체 포함되며, 전방 및 후방 추정 외삽이 필요하지 않으므로 병렬화가 가능하다. 예를 들어, 내보내기(136)는 프로세싱 시간을 줄이기 위해 모든 프레임 변환을 병렬로 수행할 수 있다. 변환은 각 프레임에서 시작 시간, 종료 시간 및 타임 스탬프를 공유한다. 내보내기(136)는 이러한 값 중 하나만 사용하여 필요한 저장 리소스의 양을 줄임으로써, 다른 두 값이 오류 검출 및 수정에 사용될 수 있도록 한다. 예를 들어, 내보내기(136)는 특정 프레임에 투명도 변환을 적용하기 위해 타임스탬프를 사용할 수 있고, 투명도 변환의 시간적 속성에 오류가 포함되지 않았 음을 확인하기 위해 시작 시간을 사용할 수 있다.
내보내기(136)는 레이어의 각 유형에 대한 내보내기 모듈을 포함한다. VRS에 의한 분류에 기초하여, 내보내기(136)는 적절한 출력을 생성하기 위해 특정 내보내기 모듈을 선택하고 사용할 수 있다. 예를 들어, 내보내기 모듈은 VCP(120)의 내보내기 모듈과 유사하게 동작할 수 있다.
내보내기(136)는 다른 유형의 내보내기 모듈 중에서 정적 레이어 내보내기 모듈, 미디어 레이어 내보내기 모듈 및 텍스트 레이어 내보내기 모듈을 포함한다.
내보내기(136)의 정적 레이어 내보내기 모듈은 정적으로 분류된 레이어를 수신하고 정적 레이어 메시지로 지정된 프로토콜 버퍼 메시지를 출력한다. 정적 레이어 내보내기 모듈은 하나 이상의 정적 레이어로부터 프로토콜 버퍼 메시지를 출력한다. 예를 들어, 정적 레이어 내보내기 모듈은 6개의 정적 레이어를 수신하고, 6개의 정적 레이어를 나타내는 프로토콜 버퍼 메시지를 출력할 수 있다. 정적 레이어 내보내기 모듈은 비디오 프로젝트 파일(202)의 모든 정적 레이어를 출력할 수 있다. 일부 구현예에서 정적 레이어들 연속적이어야 한다. 정적 레이어 내보내기 모듈은 예를 들어, 정적 레이어 이외의 유형으로 분류된 비디오 프로젝트 파일(202)의 모든 레이어를 비활성화하고, 정적 레이어로 분류된 비디오 프로젝트 파일(202)의 모든 레이어를 활성화하고, 각 프레임에 대해 저장된 이미지를 호출함으로써 정적 레이어들을 내보낼 수 있다. 일부 구현예에서, 내보내기(136)의 정적 레이어 내보내기 모듈은 각 프레임에 대해 저장된 이미지를 호출함으로써 비디오 프로젝트 파일(202)의 모든 정적 레이어를 사전 렌더링한다. 왜냐하면 이러한 프레임은 최종 렌더링에서 변경되지 않으므로 최종 렌더링에서 비디오를 완성하기 위해 프로세싱해야 하는 양을 감소시킨다.
내보내기(136)의 미디어 레이어 내보내기 모듈은 동적 미디어 레이어로 분류된 레이어들을 수신하고, 동적 미디어 레이어 메시지로 지정된 프로토콜 버퍼 메시지를 출력한다. 동적 미디어 레이어는 이미지와 비디오를 포함한다. 예를 들어, 동적 미디어 레이어 내보내기 모듈은 가변적이고 교체 가능한 이미지를 포함하는 레이어를 수신하고, 동적 미디어 레이어를 나타내는 프로토콜 버퍼 메시지를 내보낼 수 있다. 동적 미디어 레이어는 예를 들어 로고 및 사진과 같은 이미지, 비디오 로고, 제품 클립, 대변인의 메시지와 같은 비디오, 색상 및 질감과 같은 시각적 요소, 태그 라인, 슬로건 또는 이름과 같은 텍스트 등을 포함할 수 있다.
템플릿이 인스턴스화될 때, 미디어 레이어 내보내기 모듈은 템플릿 변수를 비디오 프로젝트 파일(202)의 속성으로 채운다. 예를 들어, 미디어 레이어 내보내기 모듈은 VCP(120)의 라이브러리를 사용하여 특정 동적 미디어 레이어에 대한 템플릿 변수의 측면 및 포지션 속성을 채울 수 있다.
흐름은 DCDS(110)가 사용자 디바이스(106)로부터 콘텐츠에 대한 요청(108)을 수신하는 단계 E로 계속된다. 요청(108)은 클라이언트 디바이스가 디지털 콘텐츠와 인터렉션할 때 사용자 디바이스(106)에 의해 DCDS(110)로 전송된다. 예를 들어, 사용자 디바이스(106)의 사용자가 쇼핑 애플리케이션을 다운로드하기 위해 링크를 클릭하면, 링크는 사용자 디바이스(106)가 요청(108)을 DCDS(110)에 전송하게 할 수 있다. 요청(108)은 클라이언트 디바이스(106)으로부터 데이터를 추정하는 인터렉션을 포함할 수 있다. 예를 들어, 요청(108)은 인터렉션의 표시, 사용자 디바이스(106)가 인터렉션한 디지털 콘텐츠 및 사용자 디바이스(106)를 고유하게 식별하는 식별자와 같은 추적 데이터를 포함할 수 있다. 일부 구현예에서, 요청(108)은 디지털 콘텐츠 제공자의 표시 및 요청된 리소스를 호스팅하는 목적지 서버의 위치를 포함한다.
DCDS(110)는 요청을 프로세싱하고, 커스터마이징 정보를 포함하는 특정 비디오에 대한 요청을 템플릿 인스턴스화 시스템(140)에 포워딩한다. 예를 들어, DCDS(110)는 도 1과 관련하여 전술한 콘텐츠 선택 프로세스를 사용하여 특정 비디오를 선택하고, 템플릿 인스턴스화 시스템(140)에 대한 개인화 정보를 결정한다. 일부 구현예에서, DCDS(110)는 사용자 디바이스(106)의 사용자에 대한 사용자 정보에 기초하여 개인화 정보를 결정한다. 일부 구현예에서, DCDS(110)는 예를 들어, 콘텐츠를 DCDS(110)에 제공하는 서드파티(140)로부터의 정보에 기초하여 개인화 정보를 결정한다.
일부 구현에서, 단계 E는 데이터 흐름(200)에서 발생하지 않으며, VCP(120), VRP(130) 또는 사용자 디바이스(106)의 사용자는 템플릿 인스턴스화 시스템(140)에 직접 변경된 비디오에 대한 요청을 제공할 수 있다.
흐름은 단계 F로 계속되는데, 여기서 템플릿 인스턴스화 시스템(140)은 템플릿을 인스턴스화하고, 템플릿의 변수 부분을 채우는 방법에 관한 변수 정의 또는 명령어를 제공하고, 내보내기(136)가 변수들을 채운다. 일부 구현예에서 변수 정의들은 템플릿 내에서 특정 변수들을 정의하는 데이터를 포함한다. 예를 들어, 템플릿 인스턴스화 시스템(140)은 동적 레이어들의 가변 컴포넌트의 채우기에 관한 명령어로 템플릿을 인스턴스화하여, 다중 레이어 요청을 생성한다. 템플릿 인스턴스화 시스템(140)은 그 다음 내보내기(136)에 다중 레이어 요청을 제공한다.
내보내기(136)는 다중 레이어 요청을 수신하고, 비디오의 최종 렌더링을 수행하기 위해 다중 레이어 요청에서 템플릿 인스턴스화 시스템(140)에 의해 제공된 명령어 및 정적 레이어 프로토콜 버퍼 메시지의 형태로 미리 렌더링된 정적 레이어를 사용한다. 비디오 프로젝트 파일(202)에 대한 템플릿이 생성된 때 정적 레이어가 사전 렌더링 되었기 때문에, 요청시 수행된 최종 렌더링 동작은 변수의 채우기와 레이어의 합성만 포함한다. 예를 들어, 내보내기(136)는 비디오 프로젝트 파일(202)의 최종 렌더링을 생성하기 위해 정적 레이어 프로토콜 버퍼 메시지 및 채워진 동적 레이어들에서 이미지의 알파 블렌딩을 수행할 수 있다. 이러한 동작은 템플릿이 생성된 때 정적 레이어가 사전 렌더링 되었기 때문에 다양한 수준의 그래픽 복잡도의 비디오를 요청시 렌더링 시간이 O(1)이 되도록 VRP(130)에서 최적화된다. 따라서, 시스템(100) 및 시스템(100)에 의해 수행되는 프로세스(200)는 기존의 비디오 변경 및 렌더링 해결책에 비해 기술적 개선을 제공한다.
흐름은 단계 G로 계속되는데, 여기서 VRP(130)는 렌더링된 비디오를 DCDS(110)에 제공하여 사용자 디바이스(106)에 표시하거나 응답(114)과 함께 제공한다. 전술한 바와 같이, 응답 데이터(114)는 요청된 전자 문서에 추가하여 VRP(130)에 의해 렌더링된 비디오 콘텐츠를 표시할 수 있다. 응답 데이터(114)는 DCDS(110)가 요청(108)을 수신하고, 수신된 배포 파라미터 및 요청(108)에 표시된 사용자 데이터에 기초하여 배포 파라미터가 만족되는지를 결정하는 것에 응답하여 DCDS(110)에 의해 사용자 디바이스(106)로 전송된다.
도 3는 비디오를 효율적이고 동적으로 변경 및 렌더링하기 위한 예시적 프로세스(300)의 흐름도이다. 프로세스(300)는 하나 이상의 시스템에 의해 수행될 수 있다. 예를 들어, 프로세스(300)는 도 1 내지 도 2의 VRP(130), DCDS(110), 사용자 디바이스(106) 및/또는 서드파티(140)에 의해 구현될 수 있다. 일부 구현예에서, 프로세스(300)는 비일시적 컴퓨터 판독가능 매체에 저장된 명령어들로서 구현될 수 있고, 명령어들이 하나 이상의 서버들에 의해 실행될 때, 명령어들은 하나 이상의 서버로 하여금 프로세스(300)의 동작들을 수행하게 할 수 있다.
프로세스(300)은 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함하는 비디오를 렌더링하기 위한 파일을 식별하는 단계(302)로 시작한다. 예를 들어, VRP(130)는 VCP(120)에 의해 생성된 비디오를 렌더링하기 위한 비디오 프로젝트 파일(202)을 수신하거나 식별할 수 있다. 비디오 프로젝트 파일(202)은 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함할 수 있다. 일부 구현예에서, VCP(120)는 비디오 프로젝트 파일(202)을 VRP(130)에 제공한다. 일부 구현예에서, VRP(130)는 저장 디바이스로부터 비디오 프로젝트 파일(202)을 검색할 수 있다.
프로세스(300)는 비디오를 렌더링하기 위해 상기 파일의 하나 이상의 필드들을 분석하는 것에 기초하여, 상기 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 검출하는 단계로 계속되며(304), 각각의 동적 레이어는 가변 컴포넌트를 표시하는 코멘트를 포함한다. 예를 들어, VRP(130)의 평탄화기(132)는 비디오 프로젝트 파일(202)의 DOM을 평탄화할 수 있다. 동시에, VRP(130)의 분류기(134)는 비디오 프로젝트 파일(202)의 하나 이상의 필드를 분석하여, 예를 들어 특정 레이어가 정적인지 동적인지 또는 가변인지를 나타내는 코멘트 필드를 검출할 수 있다.
프로세스(300)는 파일의 하나 이상의 정적 레이어를 렌더링함으로써 계속된다(306). 예를 들어, 내보내기(136)는 레이어를 래핑하고 프로토콜 버퍼 메시지로 내보낼 수 있다. 내보내기(136)는 동적 레이어 및 사전 렌더링된 정적 레이어에 대한 변수를 포함하는 템플릿을 생성한다. 예를 들어, 내보내기(136)는 정적 레이어 프레임의 저장된 이미지를 호출하고 저장된 이미지를 내보내는 방식으로 각 정적 레이어를 사전 렌더링할 수 있다. 파일의 하나 이상의 정적 레이어들의 렌더링은 요청 시간 전에 또는 사용자 정보를 포함하는 비디오에 대한 요청 수신시 발생하여, 정적 레이어들은 사전 렌더링되고 요청시 이루어져야 하는 렌더링의 양을 감소시킨다.
프로세스(300)은 사용자 디바이스로부터, 사용자 정보를 포함하는 상기 비디오에 대한 요청을 수신하는 단계로 계속된다(308). 예를 들어, DCDS(110)는 사용자 디바이스(106)의 사용자로부터 요청(108)을 수신하고 요청을 템플릿 인스턴스화 시스템(140)에 포워딩할 수 있다.
프로세스(300)는 상기 사용자 정보에 기초하여, 동적 레이어에 삽입되도록 지정된 변수 정의들을 결정하는 단계로 계속된다(310). 예를 들어, 템플릿 인스턴스화 시스템(140)은 DCDS(110)에 의해 포워딩된 요청에 제공된 사용자 정보에 기초하여 동적 레이어들의 변수를 변경 또는 교체하기 위한 명령어를 결정할 수 있다. 템플릿 인스턴스화 시스템(140)은 그 다음 내보내기(136)에 의해 생성된 템플릿을 인스턴스화할 수 있다.
프로세스(300)는 변수 정의들을 사용하여 하나 이상의 동적 레이어들을 렌더링하는 단계로 계속된다(312). 예를 들어, VRP(130)의 내보내기(136)는 템플릿 인스턴스화 시스템(140)에 의해 제공되는 동적 레이어들의 변수를 변경 또는 교체하기 위한 명령어에 기초하여 템플릿 인스턴스화 시스템(140)에 의해 인스턴스화된 템플릿을 채울 수 있다.
프로세스(300)는 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 단계를 포함한다(314). 예를 들어, VRP(130)의 내보내기(136)는 재생을 위한 비디오를 생성하기 위해 채워진 템플릿을 사용하여 비디오 프로젝트 파일(202)의 비디오의 최종 렌더링을 수행할 수 있다. 템플릿은 정적 레이어들의 사전 렌더링이 포함되어 있기 때문에, 최종 렌더링 프로세스의 상대적으로 상당한 양은 레이어들을 함께 알파 블렌딩하는 것이며, 템플릿 채우기로 인한 추가 프로세싱 시간은 최종 렌더링 프로세스의 상당 부분을 구성하지 않는다. 따라서, 시스템(100)은 일정한 시간에 다양한 그래픽 복잡도의 비디오를 변경하고 동적으로 렌더링하기 위한 효율적인 해결책을 제공한다.
도 4는 상기 기술된 동작들을 수행하는데 사용될 수 있는 예시적 컴퓨터 시스템(400)의 블록 다이어그램이다. 시스템(400)은 프로세서(410), 메모리(420), 저장 디바이스(430) 및 입력/출력 디바이스(440)를 포함한다. 컴포넌트들(410, 420, 430 및 440) 각각은 예를 들면, 시스템 버스(450)를 사용하여 상호 연결될 수 있다. 프로세서(410)는 시스템(400) 내에서 실행하기 위한 명령어들을 프로세싱할 수 있다. 일 구현예에서, 프로세서(410)는 단일-스레드 프로세서이다. 다른 구현예에서, 프로세서(410)는 멀티-스레드 프로세서이다. 프로세서(410)는 메모리(420) 또는 저장 디바이스(430)에 저장된 명령어들을 프로세싱할 수 있다.
메모리(420)는 시스템(400) 내에 정보를 저장한다. 일 구현예에서, 메모리(420)는 컴퓨터 판독가능 매체이다. 일 구현예에서, 메모리(420)는 휘발성 메모리 유닛이다. 다른 구현예에서, 메모리(420)는 비휘발성 메모리 유닛이다.
저장 디바이스(430)는 시스템(400)에 대한 대형 저장소를 제공할 수 있다. 일 구현예에서, 저장 디바이스(430)는 컴퓨터 판독가능 매체이다. 다양한 상이한 구현예에서, 저장 디바이스(430)는 예를 들면, 하드 디스크 디바이스, 광학 디스크 디바이스, 다수의 컴퓨팅 디바이스들(예를 들면, 클라우드 저장 디바이스)에 의해 네트워크를 통해 공유되는 저장 디바이스 또는 일부 기타 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(440)는 시스템(400)에 대한 입력/출력 동작들을 제공한다. 일 구현예에서, 입력/출력 디바이스(440)는 네트워크 인터페이스 디바이스들 예를 들어, 이더넷 카드, 직렬 통신 디바이스(예를 들어, RS-232 포트) 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현예에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 다른 입력/출력 디바이스들 예를 들어, 키보드, 프린터 및 디스플레이 디바이스들(460)에 송신하도록 구성된 드라이버 디바이스들을 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스들, 모바일 통신 디바이스들, 셋톱 박스 텔레비전 클라이언트 디바이스들 등과 같은 다른 구현예들도 사용될 수 있다.
예시적 프로세싱 시스템이 도 4에서 기술되었지만, 본 발명의 구현예들 및 본 명세서에 기술된 기능적 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 다른 유형의 디지털 전자 회로에서, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다.
전자 문서(간단히 문서로 지칭됨)는 반드시 파일에 해당하는 것은 아니다. 문서는 다른 문서를 보관하는 파일의 일부, 문제의 문서 전용 단일 파일 또는 다수의 조정된 파일에 저장될 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장 매체(또는 매체들)에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트들 또는 매체(예를 들면, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나 또는 그에 포함될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치"는 예시로서 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩 또는 앞서 언급된 것들 중 다수의 것들 또는 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 객체로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들)를 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들(예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 몇 가지만 나열하면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 실시예들은 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹브라우저에 웹페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 실시예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 어플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함한다.
컴퓨팅 시스템은 사용자들 및 서버들을 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 인터렉션한다. 사용자와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 실시예에서, 서버는(예를 들어, 사용자 디바이스와 인터렉션하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위해) 사용자 디바이스에 데이터(예를 들어, HTML 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 실시예의 컨텍스트에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 컨텍스트에서 기술된 다양한 구성들은 또한 다수의 실시예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
따라서, 본 발명의 특정한 실시예들이 기술되었다. 다른 실시예들도 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다.

Claims (20)

  1. 효율적인 동적 비디오 렌더링을 위한 컴퓨터로 구현되는 방법으로서,
    하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함하는 비디오를 렌더링하기 위한 파일을 식별하는 단계, 동적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함하고, 정적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함하지 않으며;
    비디오를 렌더링하기 위해 상기 파일의 하나 이상의 필드들을 분석하는 것에 기초하여, 상기 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 검출하는 단계, 각각의 동적 레이어는 상기 파일의 코멘트 필드에 해당 레이어가 동적이라고 표시하는 코멘트를 포함하며;
    상기 하나 이상의 정적 레이어들을 검출하는 것에 응답하여, 상기 파일의 하나 이상의 정적 레이어들을 렌더링하는 단계;
    상기 렌더링된 하나 이상의 정적 레이어들에 기초하여, 상기 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 표시하는 템플릿을 생성하는 단계;
    상기 렌더링된 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 가진 상기 템플릿을 인스턴스화하는 단계;
    상기 파일의 하나 이상의 정적 레이어들을 렌더링한 후, 사용자 디바이스로부터, 사용자 정보를 포함하는 상기 비디오에 대한 요청을 수신하는 단계;
    상기 사용자 정보에 기초하여, 동적 레이어에 삽입되도록 지정된 변수 정의들을 결정하는 단계;
    상기 변수 정의들을 사용하여 상기 인스턴스화된 템플릿을 채움으로써, 상기 하나 이상의 동적 레이어들을 렌더링하는 단계; 및
    상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    깊이-우선 순회 알고리즘(depth-first traversal algorithm)을 사용하여, 상기 비디오를 렌더링하기 위해 상기 파일의 문서 객체 모델(document object model)을 평탄화(flattening)하는 단계를 더 포함하는, 방법.
  3. 삭제
  4. 삭제
  5. 청구항 1에 있어서,
    상기 파일은 하나 이상의 프레임들을 포함하고, 상기 파일의 상기 하나 이상의 정적 레이어들을 렌더링하는 단계는 상기 하나 이상의 정적 레이어들 중 각 레이어에 대해, 각 프레임의 이미지를 저장하는 단계를 포함하는, 방법.
  6. 청구항 1에 있어서,
    상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 단계는 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들을 결합하기 위해 알파 블렌딩 동작을 수행하는 단계를 포함하는, 방법.
  7. 청구항 1에 있어서,
    상기 하나 이상의 동적 레이어들 중 적어도 하나는 로고, 텍스트, 비디오 및 색상을 나타내는 이미지 중 적어도 하나를 포함하는, 방법.
  8. 시스템으로서,
    하나 이상의 프로세서; 및
    명령어를 포함하는 하나 이상의 메모리 엘리먼트를 포함하며, 상기 명령어는 실행시 상기 하나 이상의 프로세서로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함하는 비디오를 렌더링하기 위한 파일을 식별하는 동작, 동적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함하고, 정적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함하지 않으며;
    비디오를 렌더링하기 위해 상기 파일의 하나 이상의 필드들을 분석하는 것에 기초하여, 상기 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 검출하는 동작, 각각의 동적 레이어는 상기 파일의 코멘트 필드에 해당 레이어가 동적이라고 표시하는 코멘트를 포함하며;
    상기 하나 이상의 정적 레이어들을 검출하는 것에 응답하여, 상기 파일의 하나 이상의 정적 레이어들을 렌더링하는 동작;
    상기 렌더링된 하나 이상의 정적 레이어들에 기초하여, 상기 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 표시하는 템플릿을 생성하는 동작;
    상기 렌더링된 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 가진 상기 템플릿을 인스턴스화하는 동작;
    상기 파일의 하나 이상의 정적 레이어들을 렌더링한 후, 사용자 디바이스로부터, 사용자 정보를 포함하는 상기 비디오에 대한 요청을 수신하는 동작;
    상기 사용자 정보에 기초하여, 동적 레이어에 삽입되도록 지정된 변수 정의들을 결정하는 동작;
    상기 변수 정의들을 사용하여 상기 인스턴스화된 템플릿을 채움으로써, 상기 하나 이상의 동적 레이어들을 렌더링하는 동작; 및
    상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 동작을 포함하는, 시스템.
  9. 청구항 8에 있어서,
    깊이-우선 순회 알고리즘(depth-first traversal algorithm)을 사용하여, 상기 비디오를 렌더링하기 위해 상기 파일의 문서 객체 모델(document object model)을 평탄화(flattening)하는 동작을 더 포함하는, 시스템.
  10. 삭제
  11. 삭제
  12. 청구항 8에 있어서,
    상기 파일은 하나 이상의 프레임들을 포함하고, 상기 파일의 상기 하나 이상의 정적 레이어들을 렌더링하는 동작은 상기 하나 이상의 정적 레이어들 중 각 레이어에 대해, 각 프레임의 이미지를 저장하는 동작을 포함하는, 시스템.
  13. 청구항 8에 있어서,
    상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 동작은 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들을 결합하기 위해 알파 블렌딩 동작을 수행하는 동작을 포함하는, 시스템.
  14. 청구항 8에 있어서,
    상기 하나 이상의 동적 레이어들 중 적어도 하나는 로고, 텍스트, 비디오 및 색상을 나타내는 이미지 중 적어도 하나를 포함하는, 시스템.
  15. 명령어가 인코딩된 비일시적 컴퓨터 저장 매체로서, 상기 명령어는 분산 컴퓨팅 시스템에 의해 실행될 때, 상기 분산 컴퓨팅 시스템으로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 포함하는 비디오를 렌더링하기 위한 파일을 식별하는 동작, 동적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함하고, 정적 레이어는 최종 렌더링 전에 채워지거나 변경될 가변 컴포넌트를 포함하지 않으며;
    비디오를 렌더링하기 위해 상기 파일의 하나 이상의 필드들을 분석하는 것에 기초하여, 상기 하나 이상의 정적 레이어들 및 하나 이상의 동적 레이어들을 검출하는 동작, 각각의 동적 레이어는 상기 파일의 코멘트 필드에 해당 레이어가 동적이라고 표시하는 코멘트를 포함하며;
    상기 하나 이상의 정적 레이어들을 검출하는 것에 응답하여, 상기 파일의 하나 이상의 정적 레이어들을 렌더링하는 동작;
    상기 렌더링된 하나 이상의 정적 레이어들에 기초하여, 상기 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 표시하는 템플릿을 생성하는 동작;
    상기 렌더링된 하나 이상의 정적 레이어들 및 상기 하나 이상의 동적 레이어들을 가진 상기 템플릿을 인스턴스화하는 동작;
    상기 파일의 하나 이상의 정적 레이어들을 렌더링한 후, 사용자 디바이스로부터, 사용자 정보를 포함하는 상기 비디오에 대한 요청을 수신하는 동작;
    상기 사용자 정보에 기초하여, 동적 레이어에 삽입되도록 지정된 변수 정의들을 결정하는 동작;
    상기 변수 정의들을 사용하여 상기 인스턴스화된 템플릿을 채움으로써, 상기 하나 이상의 동적 레이어들을 렌더링하는 동작; 및
    상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 동작을 포함하는, 비일시적 컴퓨터 저장 매체.
  16. 청구항 15에 있어서,
    깊이-우선 순회 알고리즘(depth-first traversal algorithm)을 사용하여, 상기 비디오를 렌더링하기 위해 상기 파일의 문서 객체 모델(document object model)을 평탄화(flattening)하는 동작을 더 포함하는, 비일시적 컴퓨터 저장 매체.
  17. 삭제
  18. 삭제
  19. 청구항 15에 있어서,
    상기 파일은 하나 이상의 프레임들을 포함하고, 상기 파일의 상기 하나 이상의 정적 레이어들을 렌더링하는 동작은 상기 하나 이상의 정적 레이어들 중 각 레이어에 대해, 각 프레임의 이미지를 저장하는 동작을 포함하는, 비일시적 컴퓨터 저장 매체.
  20. 청구항 15에 있어서,
    상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들로부터 재생을 위한 합성 비디오를 생성하는 동작은 상기 렌더링된 하나 이상의 정적 레이어들과 상기 렌더링된 하나 이상의 동적 레이어들을 결합하기 위해 알파 블렌딩 동작을 수행하는 동작을 포함하는, 비일시적 컴퓨터 저장 매체.
KR1020217021523A 2020-05-14 2020-05-14 동적 컴포넌트를 포함하는 비디오의 효율적 렌더링 KR102519049B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/032889 WO2021230872A1 (en) 2020-05-14 2020-05-14 Rendering video having dynamic components

Publications (2)

Publication Number Publication Date
KR20210141444A KR20210141444A (ko) 2021-11-23
KR102519049B1 true KR102519049B1 (ko) 2023-04-06

Family

ID=71016631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217021523A KR102519049B1 (ko) 2020-05-14 2020-05-14 동적 컴포넌트를 포함하는 비디오의 효율적 렌더링

Country Status (6)

Country Link
US (1) US20230058512A1 (ko)
EP (1) EP3928223A1 (ko)
JP (1) JP7248802B2 (ko)
KR (1) KR102519049B1 (ko)
CN (1) CN113966619A (ko)
WO (1) WO2021230872A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11587208B2 (en) * 2021-05-26 2023-02-21 Qualcomm Incorporated High quality UI elements with frame extrapolation
CN117667278A (zh) * 2022-08-31 2024-03-08 华为技术有限公司 一种界面显示方法、设备及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002115B1 (en) * 2014-09-29 2018-06-19 Amazon Technologies, Inc. Hybrid rendering of a web page
KR101980414B1 (ko) 2015-02-06 2019-08-29 전자부품연구원 확장형 비디오 렌더링 방법 및 시스템
US20200042637A1 (en) * 2018-07-31 2020-02-06 Salesforce.Com, Inc. Flattening hierarchal database records using inverted indexing

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4167747B2 (ja) * 1998-04-13 2008-10-22 株式会社ルネサステクノロジ 周波数可変発振回路及びそれを用いた位相同期回路
US7292257B2 (en) * 2004-06-28 2007-11-06 Microsoft Corporation Interactive viewpoint video system and process
WO2012160499A1 (en) * 2011-05-23 2012-11-29 Strangeloop Networks, Inc. Optimized rendering of dynamic content
WO2013116577A1 (en) * 2012-01-31 2013-08-08 Newblue, Inc. Systems and methods for media personalization using templates
MX2015012744A (es) * 2013-03-14 2016-06-21 Wix Com Ltd Dispositivo, sistema y metodo de construcción de sitio web utilizando listas de datos.
GB2520334B (en) * 2013-11-18 2015-11-25 Helen Bradley Lennon A video broadcast system and a method of disseminating video content
US9361635B2 (en) * 2014-04-14 2016-06-07 Yahoo! Inc. Frequent markup techniques for use in native advertisement placement
US9996976B2 (en) * 2014-05-05 2018-06-12 Avigilon Fortress Corporation System and method for real-time overlay of map features onto a video feed
CN105320662B (zh) * 2014-06-10 2019-09-20 腾讯科技(北京)有限公司 网页生成方法及装置
US11412312B2 (en) * 2016-09-28 2022-08-09 Idomoo Ltd System and method for generating customizable encapsulated media files
CN109308729B (zh) * 2017-07-27 2023-01-24 阿里巴巴集团控股有限公司 图片合成处理方法、装置及系统
CN110580163B (zh) * 2018-06-07 2022-03-08 腾讯科技(深圳)有限公司 通过模板制作挂件的方法、装置及存储设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002115B1 (en) * 2014-09-29 2018-06-19 Amazon Technologies, Inc. Hybrid rendering of a web page
KR101980414B1 (ko) 2015-02-06 2019-08-29 전자부품연구원 확장형 비디오 렌더링 방법 및 시스템
US20200042637A1 (en) * 2018-07-31 2020-02-06 Salesforce.Com, Inc. Flattening hierarchal database records using inverted indexing

Also Published As

Publication number Publication date
EP3928223A1 (en) 2021-12-29
JP7248802B2 (ja) 2023-03-29
US20230058512A1 (en) 2023-02-23
JP2022536009A (ja) 2022-08-12
CN113966619A (zh) 2022-01-21
WO2021230872A1 (en) 2021-11-18
KR20210141444A (ko) 2021-11-23

Similar Documents

Publication Publication Date Title
CN109863527B (zh) 用于展现的本地内容的服务器侧渲染的方法和系统
KR102626274B1 (ko) 이미지 교체 복원
US8640023B1 (en) Method and system for providing HTML page annotations using AJAX and JAVA enterprise edition
US20130326333A1 (en) Mobile Content Management System
CN106575298A (zh) 包含动态内容和陈旧内容的网站的快速呈现
WO2015041711A1 (en) Systems and methods for managing loading priority or sequencing of fragments of a web object
CN102027476A (zh) 经由管道应用的文件访问
Liepinš et al. OWLGrEd ontology visualizer
CN110235181A (zh) 用于编写跨浏览器html5运动路径动画的系统和方法
KR102519049B1 (ko) 동적 컴포넌트를 포함하는 비디오의 효율적 렌더링
US20150242908A1 (en) Determining a configuration of a content item display environment
CN110213105A (zh) 一种跨平台微应用创建方法
US10467186B2 (en) Managing white space in a portal web page
CN113495730A (zh) 资源包的生成及解析方法和装置
CN113934957A (zh) 一种网页生成渲染sketch文件方法及系统
CN113228003A (zh) 基于与单个内容项的变化用户交互来提供不同的内容页面
KR102499733B1 (ko) 리소스에 대한 단일 스타일 정의 식별자의 조건부 해석
Himschoot et al. Single-Page Applications and Routing
JP2022548060A (ja) クラウドベースのコンテンツハブ環境内の動的サイトコンパイルのための自動提案および自動選択のためのシステムならびに方法
CN116991506B (zh) 一种网页渲染方法、装置、终端和存储介质
WO2024032087A1 (zh) 局部动态化页面生成方法、装置、电子设备、计算机可读存储介质及计算机程序产品
US20170315972A1 (en) Transforming web-based digital content to enable native rendering
CN116257707A (zh) 一种应用发布方法、装置、电子设备及存储介质
CN117951409A (zh) 页面嵌套关系元素处理方法、装置、设备及存储介质
CN114385900A (zh) 页面中推荐信息遮挡确定方法和装置

Legal Events

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