KR102453083B1 - 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅 - Google Patents

대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅 Download PDF

Info

Publication number
KR102453083B1
KR102453083B1 KR1020227002275A KR20227002275A KR102453083B1 KR 102453083 B1 KR102453083 B1 KR 102453083B1 KR 1020227002275 A KR1020227002275 A KR 1020227002275A KR 20227002275 A KR20227002275 A KR 20227002275A KR 102453083 B1 KR102453083 B1 KR 102453083B1
Authority
KR
South Korea
Prior art keywords
computing device
orientation
media item
device orientation
video
Prior art date
Application number
KR1020227002275A
Other languages
English (en)
Other versions
KR20220013955A (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
Priority claimed from US15/201,079 external-priority patent/US10622023B2/en
Priority claimed from US15/201,049 external-priority patent/US10623662B2/en
Application filed by 스냅 인코포레이티드 filed Critical 스냅 인코포레이티드
Publication of KR20220013955A publication Critical patent/KR20220013955A/ko
Application granted granted Critical
Publication of KR102453083B1 publication Critical patent/KR102453083B1/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/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/234363Processing 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 altering the spatial resolution, e.g. for clients with a lower screen resolution
    • 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
    • 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/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04845Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/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/234363Processing 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 altering the spatial resolution, e.g. for clients with a lower screen resolution
    • H04N21/234372Processing 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 altering the spatial resolution, e.g. for clients with a lower screen resolution for performing aspect ratio conversion
    • 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/44008Processing 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 operations for analysing video streams, e.g. detecting features or characteristics in the video stream
    • 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
    • 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/440218Processing 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 transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • 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/440263Processing 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 altering the spatial resolution, e.g. for displaying on a connected PDA
    • 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/440263Processing 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 altering the spatial resolution, e.g. for displaying on a connected PDA
    • H04N21/440272Processing 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 altering the spatial resolution, e.g. for displaying on a connected PDA for performing aspect ratio conversion
    • 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/472End-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/4728End-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 selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20132Image cropping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/22Cropping

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • User Interface Of Digital Computer (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

컴퓨팅 디바이스에서 복수의 프레임을 포함하는 비디오를 수신하고, 컴퓨팅 디바이스에 의해, 비디오에 대해 수직 크롭핑이 수행되어야 한다고 결정하기 위한 시스템들 및 방법들이 설명된다. 컴퓨팅 디바이스는 복수의 프레임 중의 각각의 프레임에 대해, 프레임을 분석하여 프레임 내의 관심 영역을 결정하고 - 프레임은 제1 프레임임 -, 프레임 내의 관심 영역에 기초하여 제1 프레임을 크롭핑하여, 비디오에 대해 수직 크롭핑된 프레임을 생성하고, 제1 프레임 바로 앞의 제2 프레임을 결정하고, 제2 프레임으로부터 수직 크롭핑된 프레임까지의 궤적을 평활화함으로써 비디오를 처리한다. 수직 크롭핑된 프레임은 제1 프레임을 대신하여 사용자에게 디스플레이된다.

Description

대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅{PROCESSING AND FORMATTING VIDEO FOR INTERACTIVE PRESENTATION}
우선권 주장
본 출원은 2016년 7월 1일자로 출원된 미국 특허 출원 제15/201,049호의 우선권의 혜택을 주장하고; 본 출원은 또한 2016년 7월 1일자로 출원된 미국 특허 출원 제15/201,079호의 우선권의 혜택을 주장하며, 이들 각각의 우선권의 혜택이 여기에 주장되며, 이들 각각의 전체 내용은 참조에 의해 본 명세서에 포함된다.
기술 분야
본 개시내용은 일반적으로 대화형 프레젠테이션(interactive presentation)을 위해 비디오를 처리하고 포맷팅하기 위한 메커니즘에 관한 것이다.
대면 통신이 항상 가능하지는 않다. 따라서, 모바일 디바이스 또는 개인용 컴퓨터와 같은 컴퓨팅 디바이스 상에서 비디오를 통해 통신하는 다양한 형태들이 더 널리 보급되고 있다. 모바일 디바이스 상에서의 비디오의 통신 및 공유는 더욱 심리스한 경험을 보장하기 위해 다양한 기술적 도전과제들을 갖는다. 예를 들어 디바이스가 수직으로 배향된 때 모바일 디바이스 상에서 가로방향 비디오(landscape video)를 공유하고 시청하는 것은 화면의 상단 및 하단에 큰 검은색 막대들이 나타나는 것을 야기할 수 있고, 특히 작은 화면 크기를 갖는 디바이스 상에서는 비디오를 시청하기가 더 어려울 수 있다. 더욱이, 비디오 콘텐츠를 제시하는 대화형 방식이 부족하다.
첨부 도면의 다양한 도면들은 단지 본 개시내용의 예시적인 실시예들을 도시할 뿐이고, 그것의 범위를 제한하는 것으로 간주되어서는 안 된다.
도 1은 일부 예시적인 실시예들에 따라 대화형 프레젠테이션을 위해 비디오를 처리하고 포맷팅하기 위한 네트워크화된 시스템을 도시하는 블록도이다.
도 2는 일부 예시적인 실시예들에 따라 대화형 프레젠테이션을 위해 비디오를 처리하고 포맷팅하기 위한 방법의 양태들을 도시하는 흐름도이다.
도 3a 내지 도 3d는 일부 예시적인 실시예들에 따른 예시적인 디스플레이들을 도시한다.
도 4는 일부 예시적인 실시예들에 따라 디바이스 배향을 검출하고 연관된 비디오 소스를 제공하기 위한 방법의 양태들을 도시하는 흐름도이다.
도 5 및 도 6은 일부 예시적인 실시예들에 따른 예시적인 디스플레이들을 도시한다.
도 7은 일부 예시적인 실시예들에 따라 사용자 입력을 검출하고 연관된 비디오 소스를 제공하기 위한 방법의 양태들을 도시하는 흐름도이다.
도 8은 일부 예시적인 실시예들에 따라, 머신 상에 설치될 수 있는 소프트웨어 아키텍처의 예를 도시하는 블록도이다.
도 9는 예시적인 실시예에 따라, 머신으로 하여금 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위해 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템 형태의 머신의 개략도를 도시한다.
본 명세서에 설명된 시스템들 및 방법들은 대화형 프레젠테이션을 위해 비디오를 처리하고 포맷팅하는 것에 관한 것이다. 위에서 설명된 바와 같이, 더욱 심리스한 비디오 통신 경험을 보장하기 위해 다양한 기술적 도전과제들이 존재한다. 예를 들어, 디바이스가 수직으로 배향된 때 모바일 디바이스 상에서 가로방향 비디오를 공유하고 시청하는 것은 화면의 상단 및 하단에 큰 검은색 막대들이 나타나는 것을 야기할 수 있고, 특히 작은 화면 크기를 갖는 디바이스 상에서는 비디오를 시청하기가 더 어려울 수 있다. 더욱이, 비디오 콘텐츠를 제시하는 대화형 방식이 부족하다.
본 명세서에 설명된 실시예들은 비디오의 대화형 프레젠테이션을 위해 비디오를 처리하고 포맷팅하기 위한 기술들을 제공한다. 본 명세서에 설명된 시스템들은 미디어 콘텐츠(예를 들어, 사진, 비디오, 오디오, 텍스트 등)를 포함하는 콘텐츠 메시지들을 수신할 수 있다. 콘텐츠 메시지들은 컴퓨팅 디바이스(예를 들어, 모바일 디바이스, 퍼스널 컴퓨터 등) 또는 제3자 서버들을 통해 사용자들에 의해 송신될 수 있다. 사용자들은 컴퓨팅 디바이스 상의 애플리케이션을 이용하여 콘텐츠 메시지들을 생성하고 및/또는 콘텐츠 메시지들을 수신할 수 있다. 서버 시스템은 콘텐츠를 제시하는 대화형 방식들을 제공하기 위해 서버 시스템에 의해 처리될 수 있는 비디오, 멀티미디어, 또는 다른 콘텐츠를 포함할 수 있는 (더 많지 않다면) 수만 개의 콘텐츠 메시지를 수신할 수 있다.
예를 들어, 일 실시예에서, 컴퓨팅 디바이스(예를 들어, 서버 컴퓨터, 클라이언트 디바이스 등)는 복수의 프레임을 포함하는 비디오를 수신하고, 비디오가 대화형 프레젠테이션을 위해 처리되고 포맷팅되어야 한다고 결정한다. 예를 들어, 컴퓨팅 디바이스는 수직 크롭핑(vertical cropping)이 수행되어야 한다고 결정할 수 있다. 컴퓨팅 디바이스는 복수의 프레임 중의 각각의 프레임을 분석하여 각각의 프레임 내의 관심 영역을 결정하고, 각각의 프레임 내의 관심 영역에 기초하여 각각의 프레임을 크롭핑할 수 있다. 컴퓨팅 디바이스는 선행하는 프레임과 현재의 프레임 사이의 궤적을 평활화(smooth)할 수 있다.
다른 예시적인 실시예에서, 컴퓨팅 디바이스는 복수의 비디오 소스를 수신할 수 있다. 컴퓨팅 디바이스는 비디오 소스들을 분석하여 각각의 비디오 소스에 연관시킬 디바이스 배향을 결정하고, 디바이스 배향을 각각의 비디오 소스에 연관시키고, 비디오 소스들 및 연관된 배향을 저장할 수 있다. 컴퓨팅 디바이스는 디바이스 배향을 검출하고, 디바이스 배향에 연관된 비디오 소스를 결정하고, 디바이스 배향에 연관된 비디오 소스를 제공할 수 있다.
또 다른 예시적인 실시예에서, 컴퓨팅 디바이스는 복수의 비디오 소스를 수신할 수 있다. 컴퓨팅 디바이스는 비디오 소스들을 분석하여 각각의 비디오 소스에 연관시킬 영역 또는 객체를 결정하고, 영역 또는 객체를 각각의 비디오 소스에 연관시키고, 비디오 소스들 및 연관된 영역 또는 객체를 저장할 수 있다. 컴퓨팅 디바이스는 영역 또는 객체의 선택을 나타내는 사용자 입력을 검출하고, 영역 또는 객체에 연관된 비디오 소스를 결정하고, 영역 또는 객체에 연관된 비디오 소스를 제공할 수 있다.
도 1은 일부 예시적인 실시예들에 따라 대화형 프레젠테이션을 위해 비디오를 처리하고 포맷팅하도록 구성된 네트워크화된 시스템(100)을 도시하는 블록도이다. 시스템(100)은 클라이언트 디바이스(110)와 같은 하나 이상의 클라이언트 디바이스를 포함할 수 있다. 클라이언트 디바이스(110)는 이동 전화, 데스크톱 컴퓨터, 랩탑, 개인용 디지털 정보기기(PDA), 스마트폰, 태블릿, 울트라 북, 넷북, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍가능한 가전장치, 게임 콘솔, 셋톱 박스, 차량 내의 컴퓨터, 또는 사용자가 네트워크화된 시스템(100)에 액세스하기 위해 이용할 수 있는 임의의 다른 통신 디바이스를 포함할 수 있지만, 이에 제한되지 않는다. 일부 실시예들에서, 클라이언트 디바이스(110)는 (예를 들어, 사용자 인터페이스들의 형태로) 정보를 디스플레이하는 디스플레이 모듈(도시되지 않음)을 포함할 수 있다. 다른 실시예들에서, 클라이언트 디바이스(110)는 터치 화면들, 가속도계들, 자이로스코프들, 카메라들, 마이크로폰들, 전지구적 측위 시스템(Global Positioning System)(GPS) 디바이스들 등 중 하나 이상을 포함할 수 있다.
클라이언트 디바이스(110)는 (예를 들어, 사진, 비디오, 오디오, 텍스트 등을 포함하는) 콘텐츠 메시지들을 송신 및 수신하는 것, 콘텐츠 메시지들을 검색 및 디스플레이하는 것, 콘텐츠 메시지들로부터의 미디어 콘텐츠를 포함하는 미디어 컬렉션들을 보고 참여하는 것 등을 위해 사용되는 사용자의 디바이스일 수 있다. 일 실시예에서, 시스템(100)은 대화형 프레젠테이션을 위해 미디어 콘텐츠를 처리하고 포맷팅하는 미디어 콘텐츠 처리 및 최적화 시스템이다.
하나 이상의 사용자(106)는 클라이언트 디바이스(110)와 상호작용하는 사람, 머신, 또는 다른 수단일 수 있다. 예시적인 실시예들에서, 사용자(106)는 시스템(100)의 일부가 아닐 수 있지만, 클라이언트 디바이스(110) 또는 다른 수단을 통해 시스템(100)과 상호작용할 수 있다. 예를 들어, 사용자(106)는 클라이언트 디바이스(110)에 입력(예를 들어, 터치 화면 입력 또는 영숫자 입력)을 제공할 수 있고, 입력은 네트워크(104)를 통해 시스템(100) 내의 다른 엔티티들[예를 들어, 제3자 서버들(130), 서버 시스템(102) 등]에 통신될 수 있다. 이 경우, 시스템(100) 내의 다른 엔티티들은 사용자(106)로부터 입력을 수신하는 것에 응답하여, 사용자(106)에게 제시되도록 정보를 네트워크(104)를 통해 클라이언트 디바이스(110)에 통신할 수 있다. 이러한 방식으로, 사용자(106)는 클라이언트 디바이스(110)를 사용하여 시스템(100) 내의 다양한 엔티티들과 상호작용할 수 있다.
시스템(100)은 네트워크(104)를 더 포함할 수 있다. 네트워크(104)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설 네트워크(VPN), 근거리 네트워크(LAN), 무선 LAN(WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), 도시 영역 네트워크(MAN), 인터넷의 일부, 공중 교환 전화망(Public Switched Telephone Network)(PSTN)의 일부, 셀룰러 전화 네트워크, 무선 네트워크, WiFi 네트워크, WiMax 네트워크, 다른 유형의 네트워크, 또는 둘 이상의 그러한 네트워크의 조합일 수 있다.
클라이언트 디바이스(110)는 웹 클라이언트(112)(예를 들어, 워싱턴주 레드몬드의 Microsoft® Corporation에 의해 개발된 Internet Explorer® 브라우저와 같은 브라우저)를 통해 시스템(100) 내의 다른 엔티티들에 의해 제공되는 다양한 데이터 및 애플리케이션들, 또는 하나 이상의 클라이언트 애플리케이션(114)에 액세스할 수 있다. 클라이언트 디바이스(110)는 웹 브라우저, 메시징 애플리케이션, 전자 메일(이메일) 애플리케이션, 전자 상거래 사이트 애플리케이션, 매핑 또는 위치 애플리케이션, 콘텐츠 제작 및 편집 애플리케이션 등과 같은, 그러나 그에 제한되지 않는 하나 이상의 애플리케이션(114)(또는 "앱들"이라고도 지칭됨)을 포함할 수 있다. 일부 실시예들에서, 하나 이상의 애플리케이션(114)은 클라이언트 디바이스(110) 중 주어진 클라이언트 디바이스에 포함될 수 있으며, 로컬로 이용가능하지 않은 데이터 및/또는 처리 능력들[예를 들어, 콘텐츠 메시지들에의 액세스, 미디어 콘텐츠의 처리, 콘텐츠 메시지들의 라우팅, 사용자(106)의 인증, 지불 방법의 검증 등]을 위해, 필요에 따라 시스템(100) 내의 다른 엔티티들[예를 들어, 제3자 서버들(130), 서버 시스템(102) 등]과 통신하도록 구성된 애플리케이션(114)으로 사용자 인터페이스 및 기능들의 적어도 일부를 로컬로 제공하도록 구성될 수 있다. 반대로, 하나 이상의 애플리케이션(114)은 클라이언트 디바이스(110)에 포함되지 않을 수 있고, 다음으로, 클라이언트 디바이스(110)는 자신의 웹 브라우저를 사용하여 시스템(100) 내의 다른 엔티티들[예를 들어, 제3자 서버들(130), 서버 시스템(102) 등] 상에서 호스트되는 하나 이상의 애플리케이션에 액세스할 수 있다.
서버 시스템(102)은 네트워크(104)[예를 들어, 인터넷 또는 광역 네트워크(WAN)]를 통해 하나 이상의 제3자 서버(130) 및/또는 하나 이상의 클라이언트 디바이스(110)에 서버측 기능을 제공할 수 있다. 서버 시스템(102)은 하나 이상의 데이터베이스(126)와 통신 가능하게 결합될 수 있는 콘텐츠 처리 서버(120)를 포함할 수 있다. 데이터베이스들(126)은 콘텐츠 메시지들, 처리된 콘텐츠 메시지들 등과 같은 정보를 저장하는 저장 디바이스들일 수 있다.
콘텐츠 처리 서버(120)는 예로서 대화형 프레젠테이션을 위한 비디오 처리 및 포맷팅을 수행하는 기능을 제공할 수 있다. 콘텐츠 처리 서버(120)는 비디오의 처리 및 포맷팅에 사용하기 위해 저장된 데이터를 검색하고, 처리 및 포맷팅된 비디오를 저장하기 위해 하나 이상의 데이터베이스(126)에 액세스할 수 있다. 서버 시스템(102)은 복수의 사용자(106)로부터 미디어 콘텐츠를 포함하는 콘텐츠 메시지들을 수신할 수 있고, 콘텐츠 메시지들을 처리하고 콘텐츠 메시지들을 복수의 사용자(106)에게 송신할 수 있고, 콘텐츠 메시지들을 하나 이상의 사용자(106)에 의한 시청을 위해 하나 이상의 미디어 컬렉션에 추가할 수 있고, 또는 그렇지 않으면 콘텐츠 메시지들로부터의 콘텐츠 메시지들 또는 미디어 콘텐츠를 하나 이상의 사용자(106)가 이용할 수 있게 할 수 있다.
시스템(100)은 하나 이상의 제3자 서버(130)를 더 포함할 수 있다. 하나 이상의 제3자 서버(130)는 하나 이상의 제3자 애플리케이션(들)(132)을 포함할 수 있다. 제3자 서버(들)(130) 상에서 실행되는 하나 이상의 제3자 애플리케이션(들)(132)은 콘텐츠 처리 서버(120)를 통해 서버 시스템(102)과 상호작용할 수 있다. 예를 들어, 하나 이상의 제3자 애플리케이션(들)(132)은 제3자에 의해 호스팅되는 웹사이트 또는 제3자에 의해 호스팅되는 애플리케이션에서 하나 이상의 피처 또는 기능을 지원하기 위해, 콘텐츠 처리 서버(120)를 통해 서버 시스템(102)으로부터 정보를 요청하고 이용할 수 있다. 예를 들어, 제3자 웹 사이트 또는 애플리케이션(132)은 서버 시스템(102) 내의 관련 기능 및 데이터에 의해 지원되는 비디오, 멀티미디어 및 다른 콘텐츠(예를 들어, 전문 비디오들, 광고들 등)를 생성 또는 제공할 수 있다. 제3자 서버들(130)에 의해 생성되거나 제공된 비디오, 멀티미디어 및 다른 콘텐츠는 [예를 들어, 콘텐츠 처리 서버(120)를 통해] 서버 시스템(102)에 의해 처리될 수 있고, 처리된 콘텐츠는 [클라이언트 애플리케이션(114), 제3자 애플리케이션(132), 또는 다른 수단을 통해] 하나 이상의 사용자(106)에 의한 시청을 위해 이용가능하게 될 수 있다.
도 2는 일부 예시적인 실시예들에 따라, 대화형 프레젠테이션을 위해 비디오를 처리하고 포맷팅하기 위한 방법(200)의 양태들을 도시하는 흐름도이다. 설명의 목적으로, 방법(200)은 도 1의 네트워크화된 시스템(100)과 관련하여 설명된다. 방법(200)은 다른 실시예들에서 다른 시스템 구성들로 실시될 수 있다는 것을 이해해야 한다.
위에서 설명된 바와 같이, 서버 시스템(102)은 처리될 복수의 콘텐츠 메시지를 수신할 수 있고, 그러한 콘텐츠 메시지들은 콘텐츠 메시지들을 특정 사용자 또는 사용자들에게 라우팅하는 것, 콘텐츠 메시지들 또는 콘텐츠 메시지들로부터의 미디어 콘텐츠를 하나 이상의 사용자(106)에 의해 액세스가능한 미디어 컬렉션 내에 포함시키는 것 등에 의해, 하나 이상의 사용자(106)에게 이용가능해질 수 있다. 각각의 콘텐츠 메시지는 미디어 콘텐츠(예를 들어, 사진, 비디오, 오디오, 텍스트 등)를 포함할 수 있고, 서버 시스템(102)에 의해 처리될 수 있다(예를 들어, 비디오 처리, 미디어 오버레이 추가 등).
일 실시예에서, 서버 시스템(102)은 복수의 사용자(106) 또는 복수의 제3자 서버(130)로부터 비디오와 같은 미디어 콘텐츠를 포함하는 복수의 콘텐츠 메시지를 수신할 수 있다. 서버 시스템(102)은 콘텐츠 처리 서버(120)를 통해 각각의 콘텐츠 메시지를 처리할 수 있다. 예를 들어, 콘텐츠 처리 서버(120)는 동작(202)에 보여진 바와 같이, 복수의 프레임을 포함하는 비디오를 수신할 수 있다. 비디오 소스는 수직 또는 세로방향(portrait)(예를 들어, 그것의 높이가 그것의 폭보다 큼), 또는 수평 또는 가로방향(landscape)(예를 들어, 그것의 폭이 그것의 높이보다 큼) 중 어느 하나일 수 있다.
콘텐츠 처리 서버(120)는 비디오에 대해 처리가 수행되어야 한다고 결정할 수 있다. 동작(204)에서, 콘텐츠 처리 서버(120)는 수직 크롭핑이 수행되어야 한다고 결정한다. 콘텐츠 처리 서버(120)는 사용자(106), 제3자 서버(130)로부터 수신된 표시에 기초하여, 또는 단순히 비디오를 수신하는 것에 기초하여, 처리가 수행되어야 한다고, 또는 수직 크롭핑이 수행되어야 한다고 결정할 수 있다. 예를 들어, 사용자(106)는 클라이언트 디바이스(110)와 같은 컴퓨팅 디바이스의 디스플레이와 상호작용하여, (예를 들어, 컴퓨팅 디바이스를 수직 배향으로 돌리는 것, 메뉴 항목을 선택하는 것, 관심 영역을 나타내는 것 등에 의해) 수직 크롭핑이 수행되어야 함을 나타낼 수 있다. 사용자 상호작용의 몇몇 예들은 디바이스를 세로방향 또는 가로방향 모드로 돌리는 것; 디바이스를 기울이는 것; 화면을 태핑(tapping)하는 것, 드래그/스와이프하는 것, 또는 누르는 것을 포함한다.
디바이스를 돌리는 사용자 상호작용의 예가 도 3a에 도시된다. 제1 디스플레이(302)는 디바이스의 제1 배향을 나타내고, 제2 디스플레이(304)는 디바이스의 제2 배향을 나타낸다. 예를 들어, 가로방향 배향으로 비디오를 시청하는 사용자는 제1 디스플레이(302)를 보고 있을 수 있고, 사용자가 디바이스를 세로방향 배향으로 돌릴 때, 결과는 제2 디스플레이(304)일 수 있다. 가로방향 배향의 제1 디스플레이(312) 및 세로방향 배향의 제2 디스플레이(316)를 구비하는 다른 예가 도 3c에 도시된다. 가로방향 배향의 제1 디스플레이(318), 및 제1 부분(320) 및 제2 부분(322)을 갖는 분할 화면을 포함하는 제2 디스플레이를 갖는 또 다른 예가 도 3d에 도시된다. 이러한 예들은 이하에 더 상세하게 설명된다.
다른 예에서, 콘텐츠 메시지 또는 비디오는 비디오 처리에 대한 요청과 함께 제3자 서버(130)에 의해 송신될 수 있다. 또 다른 예에서, 콘텐츠 처리 서버(120)는 비디오 자체의 특성들(예를 들어, 비디오는 가로방향 뷰로 생성되었고 디바이스 상에서 세로방향 뷰로 시청될 수 있음)에 기초하여, 또는 단순히 그것이 비디오를 수신했다는 사실에 기초하여, 수직 처리가 수행되어야 한다고 결정할 수 있다.
도 2로 돌아가서, 복수의 프레임 중의 각각의 프레임에 대해, 콘텐츠 처리 서버(120)는 비디오를 처리한다. 예를 들어, 동작(206)에서, 콘텐츠 처리 서버(120)는 각각의 프레임을 분석하여 각각의 프레임 내의 관심 영역을 결정한다.
일례에서, 프레임(예를 들어, 제1 프레임)을 분석하여 관심 영역을 결정하는 것은 제1 프레임을 분석하여 제1 프레임 바로 앞의 제2 프레임으로부터 장면 변경이 없다고 결정하고, 제2 프레임 내의 관심 영역에 기초하여 제1 프레임 내의 관심 영역을 결정하는 것을 포함할 수 있다. 예를 들어, 장면 변경이 없다면, 콘텐츠 처리 서버(120)는 제2 프레임으로부터의 관심 영역을 제1 프레임에 대한 관심 영역으로서 사용할 수 있다.
장면 변경 또는 숏 경계 검출(shot boundary detection)은 제1 프레임과 제2 프레임을 비교하여, 컬러 히스토그램 또는 방향성 히스토그램을 매칭시키는 것에 기초하여 제1 프레임이 숏 경계를 포함하는지 여부를 분류함으로써 결정될 수 있다. 컬러 히스토그램은 이미지 내에서의 적색, 녹색 및 청색의 분포와 그것들의 강도들을 표현하는 한편, 방향성 히스토그램은 그 이미지 내의 이미지 그래디언트 방향들의 분포를 표현한다. 두 개의 프레임 사이에 장면 변경이 있는지 여부를 검출하기 위해, 두 개의 프레임 사이의 컬러 히스토그램 및 방향성 히스토그램의 거리가 사용될 수 있다. 일례에서, 합계를 미리 정의된 임계치와 비교하여 장면 변경이 있는지 여부를 결정하기 위해, 두 개의 거리의 가중된 합계가 사용될 수 있다. 다른 예는 장면 변경을 갖는 이웃 프레임 및 장면 변경을 갖지 않는 이웃 프레임의 예들에 기초하여 분류기를 트레이닝하는 것이다. 장면 변경들을 검출하는 다른 방법들은 모션 추정 등을 사용하는 픽셀 강도 통계의 직접 비교를 포함할 수 있다.
제2 프레임 내의 관심 영역에 기초한 제1 프레임 내의 관심 영역은 시각적 추적 방법[예를 들어, 압축 추적기(compressive tracker) 등]을 사용하여 제2 프레임으로부터 제1 프레임 및 장래 프레임들까지 관심 영역을 자동으로 추적하여 결정될 수 있다. 시각적 추적 방법의 일례는 이미지 기반 추적일 수 있다. 예를 들어, (예를 들어, 관심 영역 내의) 타겟 주위의 다양한 샘플 포인트들에서 샘플링된 컬러 값들의 콜렉션을 갖는 타겟 템플릿은 타겟을 추적하기 위해 사용될 수 있다. 타겟이 비디오의 후속 프레임에서 이동할 때, 타겟 템플릿의 값들에 가장 가깝게 일치하는 매칭 패턴을 결정함으로써 타겟을 식별하기 위해 템플릿 샘플들에 기초하여 변경들이 계산될 수 있다. 추적은 또한 모션 추정들, 광학적 흐름들, 입자 필터들, 딥 러닝 메소드들 등에 기초하여 수행될 수 있다. 콘텐츠 처리 서버(120)는 시각적(또는 다른 형태의) 추적의 결과들에 기초하여 관심 영역을 설정할 수 있다.
다른 예에서, 제1 프레임을 분석하여 제1 프레임 내의 관심 영역을 결정하는 것은 (장면 변경을 결정하는 것에 관하여 위에서 설명된 바와 같이) 제1 프레임을 분석하고 제2 프레임으로부터 제1 프레임으로의 장면 변경이 있다고 결정하는 것을 포함할 수 있다. 일단 장면 변경이 결정되고 나면, 콘텐츠 처리 서버(120)는 관심 영역을 결정하기 위해 제1 프레임의 현출성 분석을 수행할 수 있다. 예를 들어, 콘텐츠 처리 서버(120)는 프레임의 위치 (x, y)에서의 각각의 픽셀의 중요도를 나타내는 제1 프레임의 현출성 맵을 생성할 수 있다. 콘텐츠 처리 서버(120)는 현출성 맵을 분석하여 미리 결정된 크기의 가장 두드러진 윈도우(예를 들어, 가장 높은 현출성 값들을 포함함)를 결정할 수 있다. 미리 결정된 크기의 윈도우는 출력 디바이스의 화면 크기에 의해 결정될 수 있다. 예를 들어, 콘텐츠 처리 서버(120)는 출력 디바이스[예를 들어, 모바일 디바이스와 같은 클라이언트 디바이스(110)] 및 대응하는 화면 크기를 결정할 수 있다. 콘텐츠 처리 서버(120)는 출력 디바이스 화면의 종횡비에 기초하여 가장 두드러진 윈도우를 결정할 수 있다. 콘텐츠 처리 서버(120)는 현출성 맵을 수평축 상에 투영(예를 들어, 2차원 현출성 맵을 수평 치수에 대한 1차원 현출성 맵으로 분해)할 수 있고, 그에 의해, 가장 두드러진 콘텐츠를 갖는 미리 결정된 크기의 윈도우를 검색하는 것은 미리 결정된 크기 세그먼트를 검색하는 더 간단한 문제로 바뀔 수 있게 된다. 일례에서, 미리 결정된 크기는 프레임/비디오의 수직 컷에 대해 동일한 높이이지만 더 작은 폭을 갖는 고정된 크기일 수 있다. spectral_residual 메소드, ObjectnessBING 등과 같은 임의의 현출성 분석 알고리즘들이 사용될 수 있다.
다른 예에서, 제1 프레임을 분석하여 제1 프레임 내의 관심 영역을 결정하는 것은 프레임과의 사용자 상호작용을 검출하는 것, 및 상호작용(예를 들어, 상호작용의 위치 등)에 기초하여 관심 영역을 설정하는 것을 포함할 수 있다. 사용자 상호작용은 터치 입력, 입력 디바이스(예를 들어, 마우스, 터치 패드 등)를 통한 입력 등을 포함할 수 있다. 사용자 상호작용은 사용자 상호작용이 발생했음을 나타내는, 사용자(106)에 연관된 클라이언트 디바이스(110)로부터의 표시를 수신함으로써 콘텐츠 처리 서버(120)에 의해 검출될 수 있다. 예를 들어, 클라이언트 디바이스(110)는 사용자 상호작용을 검출할 수 있고, 사용자 상호작용의 표시를 콘텐츠 처리 서버(120)에 송신할 수 있다.
일례에서, 클라이언트 디바이스(110)를 사용하는 사용자(106)는 클라이언트 디바이스(110)와 상호작용하여, 비디오 내의 특정 객체 상에서 화면을 터치(예를 들어, 누르거나 태핑)함으로써, 또는 입력 디바이스를 사용하여 비디오 내의 특정 객체를 가리킴으로써 관심 영역을 나타낼 수 있다. 도 3b는 제1 디스플레이(306), 및 사용자(106)가 디바이스 상의 디스플레이 또는 화면을 터치한 위치의 표시(310)를 보여준다. 제2 디스플레이(308)는 사용자 상호작용에 기초하여 결과적인 디스플레이를 보여준다. 이 예에서, 관심 영역은 사용자가 화면을 터치하는(예를 들어, 누르는) 위치 또는 그것이 마지막으로 터치된(예를 들어, 태핑된) 위치를 검출함으로써 확대(예를 들어, 줌인)된다. 이것은 이산 신호(예를 들어, 화면상의 위치)를 사용하여 관심 영역을 선택하는 예이다. 다른 예에서, 제1 디스플레이(306)는 가로방향 배향으로 있을 수 있고, 사용자 상호작용(310)에 의해 나타난 관심 영역은 수직 배향의 제2 디스플레이(예를 들어, 줌인되거나 줌인되지 않음)를 초래하도록 수직 비디오를 크롭핑하기 위해 관심 영역을 결정할 수 있다.
다른 예에서, 클라이언트 디바이스(110)를 사용하는 사용자(106)는 클라이언트 디바이스(110)와 상호작용하여, 관심 영역을 터치하고 드로잉(예를 들어, 객체 또는 관심 영역 주위의 원, 정사각형, 직사각형, 또는 다른 형상을 드로잉)하는 것, 입력 디바이스를 사용하여 관심 영역을 그리는 것 등에 의해 관심 영역을 나타낼 수 있다. 일례에서, 사용자는 마우스를 클릭하여 유지할 수 있고, 비디오는 일시 정지하여 사용자가 관심 영역을 그릴 수 있게 할 것이다. 다른 예에서, 사용자는 컴퓨팅 디바이스[예를 들어, 클라이언트 디바이스(110)]의 디스플레이 상의 관심 영역을 터치하거나, 관심 영역을 통해 스와이프하는 등을 할 수 있다. 도 3c는 제1 디스플레이(312), 및 사용자(106)가 디바이스 상의 디스플레이 또는 화면을 터치한 위치의 표시(314)를 보여준다. 제2 디스플레이(316)는 사용자 상호작용에 기초하여 결과적인 디스플레이를 보여준다. 이 예에서, 클라이언트 디바이스(110)는 [예를 들어, 애플리케이션(114)을 통해] 디바이스의 경사각의 변화를 감지할 수 있고, 사용자는 화면을 가로질러 스와이프하거나 관심 영역 주위에 형상을 그림으로써 관심 영역을 이동시킬 수 있다. 이는 연속 신호(예를 들어, 디바이스의 배향 또는 경사각, 또는 스와이프 모션 등)를 사용하여 관심 영역을 선택하는 예이다.
도 3d는 사용자가 관심 영역을 선택하는 것을 허용하는 디바이스 배향 및 분할 화면의 조합을 사용하는 예를 보여준다. 예를 들어, 제1 디스플레이(318)는 가로방향 배향일 수 있다. 제2 디스플레이는 제1 부분(320) 및 제2 부분(322)을 갖는 분할 화면을 포함할 수 있다. 제1 부분(320)은 관심 영역을 디스플레이할 수 있다. 제2 부분(322)은 전체 비디오(예를 들어, 가로방향 배향 콘텐츠의 축소 버전)를 보여줄 수 있다. 사용자는 사용자 상호작용(324)(예를 들어, 디스플레이를 누르는 것, 입력 디바이스를 사용하여 관심 영역을 선택하는 것 등)에 의해 관심 영역을 선택하거나 변경할 수 있다.
도 2로 돌아가면, 동작(208)에서, 콘텐츠 처리 서버(120)는 각각의 프레임 내의 관심 영역에 기초하여 각각의 프레임을 크롭핑한다. 예를 들어, 콘텐츠 처리 서버(120)는 비디오에 대한 수직 크롭핑된 프레임을 생성하기 위해 프레임 내의 관심 영역에 기초하여 제1 프레임을 크롭핑한다.
동작(210)에서, 콘텐츠 처리 서버(120)는 각각의 프레임 바로 앞의 프레임을 결정한다. 예를 들면, 콘텐츠 처리 서버(120)는 제1 프레임 바로 앞의 제2 프레임을 결정한다. 콘텐츠 처리 서버(120)는 동작(212)에 보여진 바와 같이, 제2 프레임으로부터 수직 크롭핑된 프레임으로의 궤적을 평활화한다. 이러한 방식으로, 출력은 지터없이 재생되도록 평활하게 변화하는 수직 비디오 크롭핑일 것이다. 실시간 크롭핑에 대해, 크롭핑 위치들에 대한 재귀 필터링(recursive filtering)이 사용될 수 있다.
수직 크롭핑된 프레임은 (예를 들어, 제1 프레임을 대신하여) 사용자에게 디스플레이될 수 있다. 콘텐츠 처리 서버(120)는 비디오를 위해 수직 크롭핑된 프레임을 저장할 수 있다. 수직 크롭핑된 프레임은 즉시 또는 소정의 나중의 시간에 비디오의 일부로서 사용자에게 제공될 수 있다. 예를 들어, 도 2에 설명된 방법은 콘텐츠 처리 서버(120)에 의해 수신된 비디오(예를 들어, 전문적으로 생성된 비디오, 광고, 사용자 생성된 비디오 등)에 대해 미리 수행될 수 있거나, 비디오가 사용자에게 제공되고 있는 동안(예를 들어, 사용자가 비디오를 시청하고 있는 동안) 실시간으로 또는 실질적으로 실시간으로 수행될 수 있다.
더욱이, 도 2에서 설명된 방법은 콘텐츠 처리 서버(120)에 의해 수행되는 것으로서 설명된다. 다른 실시예들에서, 방법은 다른 컴퓨팅 디바이스들[예를 들어, 클라이언트 디바이스(110)]에 의해, 또는 컴퓨팅 디바이스들의 조합[예를 들어, 클라이언트 디바이스(110) 및 콘텐츠 처리 서버(120)]에 의해 수행될 수 있다.
또한, 상기 예는 비디오에 대한 수직 크롭핑된 프레임을 생성하는 것을 설명한다. 다른 실시예들은 수평 크롭핑된 프레임을 생성할 수 있다. 예를 들어, 비디오 프레임의 소스는 수직 또는 수평일 수 있고, 시스템은 비디오 프레임에 대한 수직 크롭핑된 프레임, 또는 비디오 프레임에 대한 수평 크롭핑된 프레임, 또는 둘 다를 생성할 수 있다.
예시적인 실시예에 따른 예시적인 알고리즘 의사 코드는 다음과 같을 수 있다:
Figure 112022007824627-pat00001
위에서 설명된 바와 같이, 본 명세서에 설명된 실시예들은 사용자가 비디오와 상호작용하여 비디오의 어느 영역을 디스플레이할지(예를 들어, 관심 영역)를 선택할 수 있는 능력을 제공한다. 다른 실시예들에서, 비디오 콘텐츠는 복수의 동시적인 비디오 소스를 통해 사용자의 디바이스[예를 들어, 클라이언트 디바이스(110)]에 전달될 수 있다. 이미지들은 이러한 비디오 소스들로부터 선택될 수 있고, 사용자의 디바이스 상에서의 디스플레이를 위해 조합될 수 있다. 또한, 어느 소스들이 선택되는지, 및 그것들이 어떻게 결합되는지는 사용자와 디바이스의 상호작용을 통해 제어될 수 있다.
도 3a 내지 도 3d 및 도 5 및 도 6은 프레젠테이션이 사용자와 컴퓨팅 디바이스와의 상호작용을 통해 어떻게 제어될 수 있는지에 대한 예들과 함께, 비디오 콘텐츠를 제시하는 다양한 방식들을 도시한다. 도 3a 내지 도 3d는 사용자가 디스플레이할 하나의 비디오 소스의 관심 영역을 디스플레이하는 것을 어떻게 선택할 수 있는지의 예로서 위에서 설명되었다. 도 3a 및 도 5 및 도 6은 사용자가 복수의 비디오 소스로부터 선택된 하나의 비디오 소스를 디스플레이하는 것을 어떻게 선택할 수 있는지의 예를 보여준다. 본 명세서에 설명된 실시예들은 사용자가 한 번에 사용자에게 디스플레이될 복수의 비디오 소스들로부터의 하나의 비디오 소스를 선택하는 것을 허용한다. 이는 사용자에게 어느 비디오 소스가 선택되는지에 대한 제어권을 제공하고, 다양한 대화형 시청 경험들을 만들어낸다.
예를 들어, 콘서트, 인터뷰, 쇼, 스포츠 이벤트 등과 같은 특정 이벤트에 대해 (예를 들어, 복수의 카메라를 사용하여) 복수의 비디오 소스가 생성될 수 있다. 사용자가 비디오를 시청하고 있는 디바이스와의 사용자 상호작용(예를 들어, 디바이스를 돌리거나 기울이는 것, 비디오 영역을 선택하는 것 등)에 기초하여, 사용자는 다른 비디오 소스(예를 들어, 가로방향 뷰, 세로방향 뷰, 특정 영역 또는 객체의 클로즈업, 특정 영역 또는 객체의 다양한 뷰들 등)를 시청할 수 있다.
하나의 예시적인 실시예는 사용자가 복수의 비디오 소스로부터 비디오 소스를 선택하기 위해 돌리는 것을 허용한다. 이러한 실시예의 예가 도 3a에 도시되어 있다(이것은 또한 단일 비디오 소스와 관련하여 위에서 설명되었음). 도 3a는 컴퓨팅 디바이스가 가로방향 또는 수평 배향으로 배향될 때의 디스플레이(302), 및 컴퓨팅 디바이스가 세로방향 또는 수직 배향으로 배향될 때의 디스플레이(304)를 도시한다. 컴퓨팅 디바이스는 디바이스가 사용자에 의해 유지되고 있는 배향(예를 들어, 세로방향, 가로방향 왼쪽, 가로방향 오른쪽, 거꾸로 된 세로방향)을 감지할 수 있다. 각각의 배향은 다른 비디오 소스에 연관될 수 있다. 컴퓨팅 디바이스는 (예를 들어, 컴퓨팅 디바이스 상의 애플리케이션을 통해) 현재 디바이스 배향을 감지함으로써 실시간으로 디스플레이할 적절한 비디오 소스를 선택할 수 있다. 이는 이산 신호(예를 들어, 디바이스 배향)를 사용하여 비디오 소스들의 세트로부터 선택하는 예이다.
다른 예시적인 실시예는 사용자가 복수의 비디오 소스로부터 비디오 소스를 선택하기 위해 기울이거나, 선택하기 위해 스와이프하는 것을 허용한다. 이러한 실시예의 예가 도 5에 도시되어 있다. 디바이스는 사용자에 의해 유지되고 있는 각도(예를 들어, 경사)를 감지할 수 있다. 또한, 디바이스는 사용자의 손가락이 화면을 터치하고 있는 동안 이동했는지(예를 들면, 스와이프)를 검출할 수 있다. 시퀀스 내의 각각의 비디오 소스가 일정 범위의 경사각에 연관되어 있을 때, 모바일 앱은 [디스플레이들(502-510)에 보여진 바와 같이] 현재 디바이스 경사를 송신함으로써 실시간으로 디스플레이할 적절한 비디오 소스를 선택할 수 있다. 마찬가지로, 사용자는 디바이스 상에서 왼쪽 및 오른쪽으로 스와이프하여 시퀀스 내의 이전 및 다음 비디오 소스를 시청하도록 선택할 수 있다. 이것은 연속적인 신호(예를 들어, 디바이스의 경사각) 또는 이산 신호(예를 들어, 스와이프 상호작용)를 사용하여 비디오 소스들의 시퀀스로부터 선택하는 예이다. 도 5의 예에서, 사용자가 디바이스를 왼쪽 및 오른쪽으로 기울이면 다른 비디오 소스가 디스플레이된다. 디바이스가 사용자에 대해 "불릿 타임(bullet time)" 효과를 생성하도록, 각각의 비디오 소스가 다른 카메라로부터 캡처되었다.
도 4는 일부 예시적인 실시예들에 따라 디바이스 배향을 검출하고 연관된 비디오 소스를 제공하기 위한 방법(400)의 양태들을 도시하는 흐름도이다. 설명의 목적을 위해, 방법(400)은 도 1의 네트워크화된 시스템(100) 및 도 3a의 예시적인 디스플레이와 관련하여 설명된다. 방법(400)은 다른 실시예들에서 다른 시스템 구성들로 실시될 수 있다는 것을 이해해야 한다.
일례에서, 이벤트의 비디오는 가로방향 뷰 및 세로방향 뷰의 숏일 수 있다. 가로방향 뷰를 위한 제1 비디오 소스 및 세로방향 뷰를 위한 제2 비디오 소스가 [예를 들어, 하나 이상의 제3자 서버(130), 하나 이상의 클라이언트 디바이스(110), 또는 다른 소스들을 통해] 서버 시스템(102)에 제공될 수 있다. 서버 시스템(102)은 동작(402)에 보여진 바와 같이, 복수의 비디오 소스를 수신할 수 있다. 이러한 예에서, 서버 시스템(102)은 가로방향 뷰를 위한 제1 비디오 소스 및 세로방향 뷰를 위한 제2 비디오 소스를 수신한다.
동작(404)에서, 서버 시스템(102)은 [예를 들어, 콘텐츠 처리 서버(120)를 통해] 복수의 비디오 소스 각각을 분석하여 각각의 소스에 어느 배향(들)을 연관시킬지를 결정할 수 있다. 예를 들어, 콘텐츠 처리 서버는 제1 비디오 소스 및 제2 비디오 소스를 분석하여, 각각의 소스에 어느 배향(들)을 연관시킬지를 결정할 수 있다. 콘텐츠 처리 서버(120)는 제1 비디오 소스가 가로방향 뷰이므로 제1 디바이스 배향(예를 들어, 가로방향 배향)에 연관되어야 한다고 결정할 수 있다. 콘텐츠 처리 서버(120)는 제2 비디오 소스가 세로방향 뷰이므로 제2 디바이스 배향(예를 들어, 세로방향 뷰)에 연관되어야 한다고 결정할 수 있다.
다른 예에서, 콘텐츠 처리 서버(120)는 디바이스 배향(예를 들어, 비디오 소스가 제시될 디바이스의 각도)을 결정하기 위해 비디오 또는 비디오 내의 대상(예를 들어, 영역 또는 객체)의 각도를 결정할 수 있다. 이러한 방식으로, 콘텐츠 처리 서버(120)는 디바이스 배향이 비디오의 대상의 각도에 기초한 경사각이라고 결정할 수 있다. 예를 들어, 비디오의 특정 대상의 3개의 뷰(예를 들어, 왼쪽 뷰, 중간 뷰 및 오른쪽 뷰)가 존재하는 경우, 디바이스 배향은 중간 뷰로 초기화되어 처음에 사용자에게 중간 뷰를 디스플레이할 수 있다. 디바이스가 왼쪽으로 기울어지면 왼쪽 뷰가 보여질 수 있고, 디바이스가 오른쪽으로 기울어지면 오른쪽 뷰가 보여질 수 있다. 경사각은 디바이스 상의 자이로 센서, 또는 경사각을 결정하기 위한 다른 기술 또는 메커니즘에 의해 결정될 수 있다.
콘텐츠 처리 서버(120)는 동작(406)에 보여진 바와 같이, 적어도 하나의 디바이스 배향을 각각의 비디오 소스에 연관시킨다. 동작(408)에서, 콘텐츠 처리 서버(120)는 비디오 소스들 및 연관된 배향을 저장한다. 예를 들어, 콘텐츠 처리 서버(120)는 비디오 소스들 및 연관된 배향을 하나 이상의 데이터베이스(126)에 저장할 수 있다.
컴퓨팅 디바이스[예를 들어, 클라이언트 디바이스(110)]를 사용하는 사용자(106)는 비디오 시청을 시작할 수 있다. 동작(410)에서, 서버 시스템(102)은 컴퓨팅 디바이스로부터 수신된 신호에 기초하여 클라이언트 디바이스(110)의 디바이스 배향을 검출할 수 있다. 예를 들어, 클라이언트 디바이스(110)는 디바이스 배향(예를 들어, 사용자가 비디오를 시청하고 있는 컴퓨팅 디바이스의 배향)을 검출하고, 디바이스 배향에 연관된 비디오 소스에 대한 요청을 서버 시스템(102)에 송신할 수 있다. 동작(412)에서, 서버 시스템(102)은 디바이스 배향에 연관된 비디오 소스를 결정한다. 예를 들어, 서버 시스템(102)은 디바이스 배향에 연관된 비디오 및 비디오 소스를 찾기 위해 하나 이상의 데이터베이스(126)에 액세스할 수 있다. 동작(414)에서, 서버 시스템(102)은 디바이스 배향에 연관된 비디오 소스를 클라이언트 디바이스(110)에 제공한다. 비디오 소스는 클라이언트 디바이스(110) 상에서의 시청을 위해 사용자에게 제공될 수 있다.
도 6은 디바이스의 디스플레이 또는 화면의 영역들 또는 객체들이 비디오 소스에 연관되는 예를 도시한다. 예를 들어, 사용자는 제1 디스플레이(604)를 보고 있을 수 있다. 클라이언트 디바이스(110)는 [예를 들어, 애플리케이션(114)을 통해] 사용자가 터치하고 있는 위치(예를 들어, 누른 위치) 사용자가 마지막으로 터치한 위치(예를 들어, 태핑한 위치)를 감지함으로써, (예를 들어, 실시간 또는 실질적으로 실시간으로) 디스플레이할 적절한 비디오 소스를 선택할 수 있다. 이는 비디오 소스들의 세트로부터 선택하기 위한 이산 신호(예를 들어, 디바이스의 화면의 영역들)의 다른 예이다. 예를 들어, 사용자 상호작용(610)은 제2 디스플레이(606)를 초래할 수 있고, 사용자 상호작용(608)은 제3 디스플레이(602)를 초래할 수 있다. 각각의 비디오 소스는 상이한 카메라로부터 캡처될 수 있으며, 이에 따라 고유한 시점(perspective)을 제공한다.
도 7은 일부 예시적인 실시예들에 따라 디스플레이의 영역에서의 사용자 입력을 검출하고 연관된 비디오 소스를 제공하기 위한 방법(700)의 양태를 도시하는 흐름도이다. 설명의 목적을 위해, 방법(700)은 도 1의 네트워크화된 시스템(100), 및 도 6의 예시적인 디스플레이와 관련하여 설명된다. 방법(700)은 다른 실시예들에서 다른 시스템 구성들로 실시될 수 있다는 것을 이해해야 한다.
동작(702)에서, 서버 시스템(102)은 복수의 비디오 소스를 수신할 수 있다. 서버 시스템(102)은 특정 비디오 소스에 대응할 수 있는 비디오 소스들 내의 다양한 영역들 및/또는 객체들을 결정할 수 있다. 동작(704)에서, 서버 시스템(102)은 [예를 들어, 콘텐츠 처리 서버(120)를 통해] 복수의 비디오 소스 각각을 분석하여, 어느 영역 또는 객체를 각각의 소스에 연관시킬지를 결정할 수 있다. 일례에서, 화면은 상이한 영역들로 분할될 수 있고, 각각의 영역은 특정 비디오 소스에 대응한다. 사용자가 화면 상의 위치를 선택할 때(예를 들어, 화면 상에서 누를 때, 입력 디바이스를 사용하여 화면 상의 위치를 선택할 때 등), 서버 컴퓨터는 사용자가 어느 영역을 선택했는지를 결정하고 대응하는 비디오 소스를 제시할 수 있다.
간단한 예를 사용하면, 3개의 비디오 소스가 있을 수 있다. 도 6에 도시된 바와 같이, 제1 비디오 소스(604)는 콘서트에서 연주하는 모든 뮤지션을 보여줄 수 있고, 제2 비디오 소스(602)는 제1 뮤지션을 보여줄 수 있으며, 제3 비디오 소스(606)는 제2 뮤지션을 보여줄 수 있다. 콘텐츠 처리 서버는 제1 비디오 소스를 분석하여, 각각의 비디오 소스에 어느 영역 또는 객체를 연관시킬지를 결정할 수 있다. 따라서, 콘텐츠 처리 서버(120)는 동작(706)에 보여진 바와 같이, 적어도 하나의 영역 또는 객체(예를 들어, 제1 뮤지션, 제2 뮤지션, 모든 뮤지션이 있는 전체 무대)를 각각의 비디오 소스에 연관시킨다.
동작(708)에서, 콘텐츠 처리 서버(120)는 비디오 소스들, 및 연관된 영역 또는 객체를 저장한다. 예를 들어, 콘텐츠 처리 서버(120)는 비디오 소스들 및 연관된 영역 또는 객체를 하나 이상의 데이터베이스(126)에 저장할 수 있다.
컴퓨팅 디바이스[예를 들어, 클라이언트 디바이스(110)]를 사용하는 사용자(106)는 비디오의 시청을 시작할 수 있다. 동작(710)에서, 서버 시스템(102)은 클라이언트 디바이스(110)로부터 수신된 신호에 기초하여 사용자 입력[예를 들어, 클라이언트 디바이스(110)의 디스플레이(예를 들어, 디스플레이 화면)을 누르거나 태핑하는 것]을 검출할 수 있다. 예를 들어, 클라이언트 디바이스(110)는 사용자 입력을 검출하고, 사용자 입력에 연관된 비디오 소스에 대한 요청을 서버 시스템(102)에 송신할 수 있다. 요청은 사용자 입력, 디스플레이 상의 또는 비디오 내의 사용자 입력의 위치, 비디오에 대한 타임 스탬프, 또는 다른 데이터를 포함할 수 있다. 동작(712)에서, 서버 시스템(102)은 사용자 입력의 위치에 가장 가까운 영역 또는 객체에 연관된 비디오 소스를 결정한다. 예를 들어, 서버 시스템(102)은 사용자 입력이 대응하는 영역 또는 객체를 결정할 수 있고, 영역 또는 객체에 연관된 비디오 및 비디오 소스를 찾기 위해 하나 이상의 데이터베이스(126)에 액세스할 수 있다. 동작(714)에서, 서버 시스템(102)은 영역 또는 객체에 연관된 비디오 소스를 클라이언트 디바이스(110)에 제공한다. 비디오 소스는 클라이언트 디바이스(110) 상에서의 시청을 위해 사용자에게 제공될 수 있다.
도 8은 위에서 설명된 디바이스들 중 임의의 하나 이상의 디바이스 상에 설치될 수 있는 소프트웨어 아키텍처(802)를 도시하는 블록도(800)이다. 예를 들어, 다양한 실시예들에서, 클라이언트 디바이스들(110), 및 서버 시스템들(130, 102, 122 및 124)은 소프트웨어 아키텍처(802)의 요소들의 일부 또는 전부를 이용하여 구현될 수 있다. 도 8은 단지 소프트웨어 아키텍처의 비제한적인 예일 뿐이며, 본 명세서에 설명된 기능을 용이하게 하기 위해 많은 다른 아키텍처들이 구현될 수 있다는 것을 알 것이다. 다양한 실시예들에서, 소프트웨어 아키텍처(802)는 프로세서들(910), 메모리(930), 및 I/O 컴포넌트들(950)을 포함하는 도 8의 머신(900)과 같은 하드웨어에 의해 구현된다. 이러한 예에서, 소프트웨어 아키텍처(802)는 각각의 계층이 특정 기능을 제공할 수 있는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(802)는 운영 체제(804), 라이브러리들(806), 프레임워크들(808), 및 애플리케이션들(810)과 같은 계층들을 포함한다. 동작 상, 애플리케이션들(810)은 일부 실시예들과 일관되게, 소프트웨어 스택을 통해 애플리케이션 프로그래밍 인터페이스(API) 호출들(812)을 불러오고, API 호출들(812)에 응답하여 메시지들(814)을 수신한다.
다양한 구현들에서, 운영 체제(804)는 하드웨어 자원들을 관리하고 공통 서비스들을 제공한다. 운영 체제(804)는 예를 들어 커널(820), 서비스들(822) 및 드라이버들(824)을 포함한다. 커널(820)은 일부 실시예들과 일관되게, 하드웨어와 다른 소프트웨어 계층들 사이의 추상화 층으로서 작용한다. 예를 들어, 커널(820)은 다른 기능 중에서도, 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워킹, 및 보안 설정을 제공한다. 서비스들(822)은 다른 소프트웨어 계층들에 대한 다른 공통 서비스들을 제공할 수 있다. 일부 실시예들에 따르면, 드라이버들(824)은 기저 하드웨어를 제어하거나 기저 하드웨어와 인터페이싱할 책임이 있다. 예를 들어, 드라이버들(824)은 디스플레이 드라이버들, 카메라 드라이버들, BLUETOOTH® 또는 BLUETOOTH® 저에너지 드라이버들, 플래시 메모리 드라이버들, 직렬 통신 드라이버들[예를 들어, USB(Universal Serial Bus) 드라이버들], WI-FI® 드라이버들, 오디오 드라이버들, 전력 관리 드라이버들 등을 포함할 수 있다.
일부 실시예들에서, 라이브러리들(806)은 애플리케이션들(810)에 의해 이용되는 저레벨 공통 인프라구조를 제공한다. 라이브러리들(806)은 메모리 할당 기능들, 문자열 조작 함수들, 수학 함수들 등과 같은 함수들을 제공할 수 있는 시스템 라이브러리들(830)(예를 들어, C 스탠다드 라이브러리)을 포함한다. 추가로, 라이브러리들(806)은 미디어 라이브러리들[예를 들어, MPEG4(Moving Picture Experts Group-4), 고급 비디오 코딩(H.264 또는 AVC), MP3(Moving Picture Experts Group Layer-3), 고급 오디오 코딩(AAC), 적응형 멀티레이트(AMR) 오디오 코덱, JPEG 또는 JPG(Joint Photographic Experts Group), 또는 PNG(Portable Network Graphics)와 같은 다양한 미디어 포맷들의 프레젠테이션 및 조작을 지원하기 위한 라이브러리들], 그래픽 라이브러리들[예를 들어, 디스플레이 상의 그래픽 콘텐츠 내에 2차원(2D) 및 3차원(3D)으로 렌더링하기 위해 이용되는 OpenGL 프레임워크], 데이터베이스 라이브러리들(예를 들어, 다양한 관계형 데이터베이스 기능들을 제공하기 위한 SQLite), 웹 라이브러리들(예를 들어, 웹 브라우징 기능을 제공하기 위한 WebKit) 등과 같은 API 라이브러리들(832)을 포함할 수 있다. 라이브러리들(806)은 또한 애플리케이션들(810)에 많은 다른 API들을 제공하기 위해 광범위하게 다양한 다른 라이브러리들(834)을 포함할 수 있다.
프레임워크들(808)은 일부 실시예들에 따라, 애플리케이션들(810)에 의해 이용될 수 있는 고레벨 공통 인프라구조를 제공한다. 예를 들어, 프레임워크들(808)은 다양한 그래픽 사용자 인터페이스(GUI) 기능들, 하이레벨 자원 관리, 하이레벨 위치 서비스들 등을 제공한다. 프레임워크들(808)은 애플리케이션들(810)에 의해 이용될 수 있는 광범위한 스펙트럼의 다른 API들을 제공할 수 있으며, 그들 중 일부는 특정 운영 체제(804) 또는 플랫폼에 특정한 것일 수 있다.
예시적인 실시예에서, 애플리케이션들(810)은 홈 애플리케이션(850), 연락처 애플리케이션(852), 브라우저 애플리케이션(854), 북 리더 애플리케이션(856), 로케이션 애플리케이션(858), 미디어 애플리케이션(860), 메시징 애플리케이션(862), 게임 애플리케이션(864), 및 제3자 애플리케이션들(866)과 같은 다른 애플리케이션들의 광범위한 모음을 포함한다. 일부 실시예에 따르면, 애플리케이션들(810)은 프로그램들 내에 정의된 기능들을 실행하는 프로그램들이다. 객체 지향 프로그래밍 언어들(예를 들어, Objective-C, Java, 또는 C ++) 또는 절차적 프로그래밍 언어들(예를 들어, C 또는 어셈블리어)과 같은 다양한 방식으로 구조화된 하나 이상의 애플리케이션(810)을 생성하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다. 구체적인 예에서, 제3자 애플리케이션(866)[예를 들어, 특정 플랫폼의 공급 업체가 아닌 엔티티에 의해 ANDROID™ 또는 IOS™ 소프트웨어 개발 키트(SDK)를 이용하여 개발된 애플리케이션]은 IOS™, ANDROID™, WINDOWS® 전화, 또는 다른 모바일 운영 체제와 같은 모바일 운영 체제 상에서 실행되는 모바일 소프트웨어일 수 있다. 이러한 예에서, 제3자 애플리케이션(866)은 본 명세서에 설명된 기능을 용이하게 하기 위해 운영 체제(804)에 의해 제공되는 API 호출들(812)을 불러올 수 있다.
일부 실시예들은 구체적으로 콘텐츠 메시징 애플리케이션(867)을 포함할 수 있다. 특정 실시예들에서, 이것은 제3자 서버들(130) 또는 서버 시스템(102)과 같은 서버 시스템과의 통신을 관리하도록 동작하는 독립형 애플리케이션일 수 있다. 다른 실시예들에서, 이 기능은 메시징 애플리케이션(862), 미디어 애플리케이션(860) 또는 다른 그러한 애플리케이션과 같은 다른 애플리케이션과 통합될 수 있다. 콘텐츠 메시징 애플리케이션(867)은 사용자가 미디어 콘텐츠(예를 들어, 사진, 비디오 등)를 캡처하고, 다른 사용자들 및 제3자 소스들에 의해 제공되는 콘텐츠 메시지들 및 미디어 콘텐츠를 검토 및 요청하는 것을 허용할 수 있다. 콘텐츠 메시징 애플리케이션은 사용자가 터치 인터페이스, 키보드를 통해, 또는 머신(900)의 카메라 디바이스를 사용하여 미디어 콘텐츠, 및 미디어 콘텐츠 또는 콘텐츠 메시지들에 관련된 입력 데이터를 캡처하는 능력, I/O 컴포넌트들(950)을 통한 서버 시스템과의 통신, 및 콘텐츠 메시지들 및 미디어 콘텐츠의 수신 및 메모리(930)에의 저장을 제공할 수 있다. 미디어 콘텐츠 및 미디어 콘텐츠에 연관된 사용자 입력들의 프레젠테이션은 상이한 프레임워크들(808), 라이브러리(806) 요소들, 또는 머신(900) 상에서 동작하는 운영 체제(804) 요소들을 이용하여 콘텐츠 메시징 애플리케이션(867)에 의해 관리될 수 있다.
도 9는 머신 판독가능한 매체(예를 들어, 머신 판독가능한 저장 매체)로부터 명령어들을 판독하고 본 명세서에 논의된 방법들 중 임의의 하나 이상의 방법을 수행할 수 있는, 일부 실시예에 따른 머신(900)의 컴포넌트들을 도시하는 블록도이다. 구체적으로, 도 9는 머신(900)이 본 명세서에서 논의된 방법들 중 임의의 하나 이상의 방법을 수행하게 하기 위한 명령어들(916)[예를 들어, 소프트웨어, 프로그램, 애플리케이션(810), 애플릿, 앱 또는 다른 실행 가능한 코드]이 실행될 수 있는, 컴퓨터 시스템의 예시적인 형태로 된 머신(900)의 개략도를 도시한다. 대안적인 실시예들에서, 머신(900)은 독립형 디바이스로서 동작하거나 다른 머신들에 결합(예를 들어, 네트워크화)될 수 있다. 네트워크화된 배치에서, 머신(900)은 서버-클라이언트 네트워크 환경 내의 서버 머신(130, 102, 120, 122, 124 등) 또는 클라이언트 디바이스(110)의 용량으로, 또는 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(900)은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 개인용 디지털 정보기기(PDA), 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 시계), 스마트 홈 디바이스(예를 들어, 스마트 어플라이언스), 다른 스마트 디바이스들, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(900)에 의해 취해질 동작들을 지정하는 명령어들(916)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신(900)만이 도시되어 있지만, "머신"이라는 용어는 본 명세서에 논의된 방법들 중 임의의 하나 이상의 방법을 수행하기 위해 개별적으로 또는 공동으로 명령어들(916)을 실행하는 머신들(900)의 컬렉션을 포함하는 것으로 받아들여져야 한다.
다양한 실시예들에서, 머신(900)은 버스(902)를 통해 서로 통신하도록 구성될 수 있는 프로세서들(910), 메모리(930), 및 I/O 컴포넌트들(950)을 포함한다. 예시적인 실시예에서, 프로세서들(910)[예를 들어, 중앙 처리 장치(CPU), 축약된 명령어 세트 컴퓨팅(reduced instruction set computing)(RISC) 프로세서, 복합 명령어 세트 컴퓨팅(complex instruction set computing)(CISC) 프로세서, 그래픽 처리 유닛(graphics processing unit)(GPU), 디지털 신호 프로세서(DSP), 주문형 집적 회로(application specific integrated circuit)(ASIC), 무선 주파수 집적 회로(radio-frequency integrated circuit)(RFIC), 다른 프로세서, 또는 그것들의 임의의 적절한 조합]은 예를 들어 명령어들(916)을 실행할 수 있는 프로세서(912) 및 프로세서(914)를 포함한다. "프로세서"라는 용어는 명령어들(916)을 동시에 실행할 수 있는 둘 이상의 독립적인 프로세서(912, 914)("코어"라고도 지칭됨)를 포함할 수 있는 멀티코어 프로세서들(910)을 포함하도록 의도된다. 도 9는 복수의 프로세서(910)를 보여주지만, 머신(900)은 단일 코어를 갖는 단일 프로세서(910), 복수의 코어[예를 들어, 다중 코어 프로세서(910)]를 갖는 단일 프로세서(910), 단일 코어를 갖는 복수의 프로세서(912, 914), 복수의 코어를 갖는 복수의 프로세서(910, 912), 또는 그것들의 임의의 조합을 포함할 수 있다.
일부 실시예에 따르면, 메모리(930)는 메인 메모리(932), 정적 메모리(934), 및 프로세서들(910)이 버스(902)를 통해 액세스할 수 있는 저장 유닛(936)을 포함한다. 저장 유닛(936)은 본 명세서에 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어들(916)이 저장되는 머신 판독가능한 저장 매체(938)를 포함할 수 있다. 명령어들(916)은 또한 머신(900)에 의한 실행 동안, 메인 메모리(932) 내에, 정적 메모리(934) 내에, 프로세서들(910) 중 적어도 하나의 프로세서 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 그것들의 임의의 적절한 조합 내에 완전하게 또는 적어도 부분적으로 상주할 수 있다. 따라서, 다양한 실시예들에서, 메인 메모리(932), 정적 메모리(934), 및 프로세서들(910)은 머신 판독가능한 매체(938)로 고려된다.
본 명세서에 사용될 때, "메모리"라는 용어는 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 머신 판독가능한 저장 매체(938)를 지칭하며, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 버퍼 메모리, 플래시 메모리, 및 캐시 메모리를 포함하지만 이에 한정되지는 않는 것으로 받아들여 질 수 있다. 예시적인 실시예에서는 머신 판독가능한 저장 매체(938)가 단일 매체인 것으로 도시되지만, "머신 판독가능한 매체"라는 용어는 명령어들(916)을 저장하거나 보유할 수 있는 단일 매체 또는 다중 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스, 또는 연관된 캐시들 및 서버들)를 포함하는 것으로 받아들여져야 한다. "머신 판독가능한 매체"라는 용어는 또한 명령어들(916)이 머신(900)의 하나 이상의 프로세서[예를 들어, 프로세서들(910)]에 의해 실행될 때 머신(900)으로 하여금 본 명세서에 설명된 방법들 중 임의의 하나 이상을 수행하도록 하는, 머신[예를 들어, 머신(900)]에 의한 실행을 위한 명령어들[예를 들어, 명령어들(916)]을 저장하거나 지닐 수 있는 임의의 매체, 또는 복수의 매체의 조합을 포함하는 것으로 받아들여져야 한다. 따라서, "머신 판독가능한 매체"는 단일 저장 장치 또는 디바이스뿐만 아니라, 복수의 저장 장치 또는 디바이스를 포함하는 "클라우드 기반" 저장 시스템들 또는 저장 네트워크들을 지칭한다. 따라서, "머신 판독가능한 매체"라는 용어는 고체 상태 메모리(예를 들어, 플래시 메모리), 광학 매체, 자기 매체, 다른 비휘발성 메모리[예를 들어, 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM)], 또는 그것들의 임의의 적절한 조합의 형태인 하나 이상의 데이터 리포지토리를 포함하지만 그에 제한되지 않는 것으로 받아들여져야 한다. "머신 판독가능한 매체"라는 용어는 머신 판독가능한 저장 매체, 또는 캐리어 매체, 또는 신호들과 같은 전송 매체를 포함한다.
I/O 컴포넌트들(950)은 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정들을 캡처하는 등을 위한 광범위하게 다양한 컴포넌트들을 포함한다. 일반적으로, I/O 컴포넌트들(950)은 도 9에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있음을 알 것이다. I/O 컴포넌트들(950)은 단지 다음의 논의를 단순화하기 위한 기능에 따라 그룹화되며, 그룹화는 결코 제한적인 것이 아니다. 다양한 예시적인 실시예들에서, I/O 컴포넌트들(950)은 출력 컴포넌트들(952) 및 입력 컴포넌트들(954)을 포함한다. 출력 컴포넌트들(952)은 비주얼 컴포넌트들[예를 들어, 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터, 또는 음극선관(CRT)과 같은 디스플레이], 음향 컴포넌트들(예를 들어, 스피커들), 햅틱 컴포넌트들(예를 들어, 진동 모터), 다른 신호 발생기들 등을 포함한다. 입력 컴포넌트들(954)은 영숫자 입력 컴포넌트들[예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 광-광학 키보드(photo-optical keyboard), 또는 다른 영숫자 입력 컴포넌트들], 포인트 기반 입력 컴포넌트들(예를 들어, 마우스, 터치 패드, 트랙볼, 조이스틱, 모션 센서 또는 다른 포인팅 기기), 촉각 입력 컴포넌트들(예를 들어, 물리적 버튼, 터치들 또는 터치 제스처들의 위치 및 힘을 제공하는 터치 스크린, 또는 다른 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예를 들어, 마이크로폰) 등을 포함한다.
일부 추가의 예시적인 실시예들에서, I/O 컴포넌트들(950)은 광범위한 배열의 다른 컴포넌트들 중에서도 생체 인식 컴포넌트들(956), 모션 컴포넌트들(958), 환경 컴포넌트들(960), 또는 위치 컴포넌트들(962)을 포함한다. 예를 들어, 생체 인식 컴포넌트들(956)은 표현들(예를 들어, 손 표현, 표정, 음성 표현, 몸짓 또는 눈 추적)을 검출하고, 생체 신호들(예를 들어, 혈압, 심박수, 체온, 땀 또는 뇌파)을 측정하고, 개인을 식별하는(예를 들어, 음성 식별, 망막 식별, 안면 식별, 지문 식별 또는 뇌파 기반 식별) 등을 위한 컴포넌트들을 포함한다. 모션 컴포넌트들(958)은 가속도 센서 컴포넌트들(예를 들어, 가속도계), 중력 센서 컴포넌트들, 회전 센서 컴포넌트들(예를 들어, 자이로스코프) 등을 포함한다. 환경 컴포넌트들(960)은 예를 들어 조명 센서 컴포넌트들(예를 들어, 광도계), 온도 센서 컴포넌트들(예를 들어, 주변 온도를 검출하는 하나 이상의 온도계), 습도 센서 컴포넌트들, 압력 센서 컴포넌트들(예를 들어, 기압계), 음향 센서 컴포넌트들(예를 들어, 배경 노이즈를 검출하는 하나 이상의 마이크로폰), 근접 센서 컴포넌트들(예를 들어, 근처의 객체들을 검출하는 적외선 센서들), 가스 센서 컴포넌트들(예를 들어, 머신 후각 검출 센서, 안전을 위해 유해 가스의 농도를 검출하거나 대기 중의 오염 물질을 측정하기 위한 가스 검출 센서들), 또는 주변의 물리적 환경에 대응하는 표시들, 측정치들, 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함한다. 위치 컴포넌트들(962)은 위치 센서 컴포넌트들[예를 들어, GPS(Global Positioning System) 수신기 컴포넌트], 고도 센서 컴포넌트들(예를 들어, 고도계들, 또는 고도가 유도될 수 있는 공기압을 검출하는 기압계들), 배향 센서 컴포넌트들(예를 들어, 자력계) 등을 포함한다.
통신은 광범위하게 다양한 기술들을 사용하여 구현될 수 있다. I/O 컴포넌트들(950)은 각각 결합(982) 및 결합(972)을 통해 머신(900)을 네트워크(980) 또는 디바이스들(970)에 결합하도록 동작가능한 통신 컴포넌트들(964)을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(964)은 네트워크(980)와 인터페이스하기 위한 네트워크 인터페이스 컴포넌트 또는 다른 적절한 디바이스를 포함한다. 다른 예들에서, 통신 컴포넌트들(964)은 다른 방식들을 통한 통신을 제공하기 위해, 유선 통신 컴포넌트들, 무선 통신 컴포넌트들, 셀룰러 통신 컴포넌트들, 근거리 통신(NFC) 컴포넌트들, BLUETOOTH® 컴포넌트들(예를 들어, BLUETOOTH® 저에너지), WI-FI® 컴포넌트들, 및 다른 통신 컴포넌트들을 포함할 수 있다. 디바이스들(970)은 다른 머신(900), 또는 광범위하게 다양한 주변 디바이스들[예를 들어, USB(Universal Serial Bus)를 통해 결합된 주변 디바이스] 중 임의의 것일 수 있다.
또한, 일부 실시예들에서, 통신 컴포넌트들(964)은 식별자들을 검출하거나, 식별자들을 검출하도록 동작가능한 컴포넌트들을 포함한다. 예를 들어, 통신 컴포넌트들(964)은 RFID(radio frequency identification) 태그 판독기 컴포넌트들, NFC 스마트 태그 검출 컴포넌트들, 광학 판독기 컴포넌트들[예를 들어, UPC(Universal Product Code) 바코드와 같은 1차원 바코드들, QR(Quick Response) 코드와 같은 다차원 바코드들, Aztec 코드, 데이터 매트릭스, Dataglyph, MaxiCode, PDF417, 울트라 코드, UCC RSS(Uniform Commercial Code Reduced Space Symbology) -2D 바코드들, 및 다른 광학 코드들을 검출하기 위한 광학 센서], 음향 검출 컴포넌트들(예를 들어, 태그된 오디오 신호들을 식별하는 마이크로폰), 또는 이들의 임의의 적절한 조합을 포함한다. 추가로, 인터넷 프로토콜(IP) 지오로케이션을 통한 위치, WI-FI® 신호 삼각측량을 통한 위치, 특정 위치를 나타낼 수 있는 BLUETOOTH® 또는 NFC 비컨 신호를 검출하는 것을 통한 위치 등과 같은 다양한 정보가 통신 컴포넌트들(964)을 통해 도출될 수 있다.
다양한 예시적인 실시예들에서, 네트워크(980)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설망(virtual private network)(VPN), 근거리 통신망(local area network)(LAN), 무선 LAN(wireless LAN)(WLAN), WAN(wide area network), 무선 WAN(wireless WAN)(WWAN), 도시 지역 네트워크(metropolitan area network)(MAN), 인터넷, 인터넷의 일부, PSTN(public switched telephone network)의 일부, POTS(plain old telephone service) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, WI-FI® 네트워크, 다른 타입의 네트워크, 또는 둘 이상의 그러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(980) 또는 네트워크(980)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 결합(982)은 CDMA(Code Division Multiple Access) 접속, GSM(Global System for Mobile communications) 접속, 또는 다른 타입의 셀룰러 또는 무선 결합일 수 있다. 이 예에서, 결합(982)은 1xRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G를 포함하는 3GPP(third Generation Partnership Project), 4G(fourth generation wireless) 네트워크들, UMTS(Universal Mobile Telecommunications System), HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준 설정 기구들에 의해 정의된 다른 것들, 다른 장거리 프로토콜들, 또는 다른 데이터 전송 기술과 같은 다양한 타입의 데이터 전송 기술 중 임의의 것을 구현할 수 있다.
예시적인 실시예들에서, 명령어들(916)은 네트워크 인터페이스 디바이스[예를 들어, 통신 컴포넌트들(964)에 포함된 네트워크 인터페이스 컴포넌트]를 통한 전송 매체를 사용하여, 그리고 다수의 잘 알려진 전송 프로토콜[예를 들어, HTTP(Hypertext Transfer Protocol)] 중 임의의 것을 사용하여 네트워크(980)를 통해 전송되거나 수신된다. 마찬가지로, 다른 예시적인 실시예들에서, 명령어들(916)은 디바이스들(970)에 대한 결합(972)(예를 들어, 피어-투-피어 결합)을 통해 전송 매체를 사용하여 전송되거나 수신된다. "전송 매체"라는 용어는 머신(900)에 의한 실행을 위해 명령어들(916)을 저장, 인코딩, 또는 전달할 수 있는 임의의 무형의 매체를 포함하는 것으로 받아들여져야 하고, 그러한 소프트웨어의 통신을 용이하게 하기 위한 디지털 또는 아날로그 통신 신호들 또는 다른 무형의 매체를 포함한다. 전송 매체는 머신 판독가능한 매체의 실시예이다.
본 명세서 전체에서, 복수의 인스턴스는 단일 인스턴스로서 설명된 컴포넌트들, 동작들 또는 구조들을 구현할 수 있다. 하나 이상의 방법의 개별 동작들이 개별적인 동작들로서 도시되고 설명되지만, 개별 동작들 중 하나 이상은 동시에 수행 될 수 있으며, 동작들이 도시된 순서대로 수행될 것을 요구하는 것은 없다. 예시적인 구성들에서 개별 컴포넌트들로서 제시된 구조들 및 기능은 결합된 구조 또는 컴포넌트로서 구현될 수 있다. 마찬가지로, 단일 컴포넌트로서 제시된 구조들 및 기능은 개별 컴포넌트들로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 본 명세서의 주제의 범위 내에 있다.
본 발명의 주제에 대한 개요가 특정한 예시적인 실시예들을 참조하여 설명되었지만, 본 개시내용의 실시예들의 더 넓은 범위를 벗어나지 않으면서 이러한 실시예들에 대해 다양한 수정들 및 변경들이 이루어질 수 있다.
본 명세서에 설명된 실시예들은 본 기술분야의 통상의 기술자가 개시된 교시들을 실시할 수 있게 하기에 충분히 상세하게 설명된다. 본 개시내용의 범위를 벗어나지 않고서 구조적 및 논리적 치환들 및 변경들이 이루어질 수 있도록, 다른 실시예들이 사용될 수 있고 이로부터 유도될 수 있다. 따라서, 상세한 설명은 제한적인 의미로 받아들여서는 안되며, 다양한 실시예들의 범위는 첨부된 청구항들과, 그러한 청구항들에 부여되는 등가물들의 전체 범위에 의해서만 정의된다.
본 명세서에서 사용될 때, 용어 "또는"은 포괄적인 또는 배타적인 의미로 해석될 수 있다. 또한, 본 명세서에서 단일 인스턴스로서 설명된 자원들, 동작들 또는 구조들에 대해 복수의 인스턴스가 제공될 수 있다. 추가로, 다양한 자원들, 동작들, 모듈들, 엔진들 및 데이터 저장소들 사이의 경계들은 다소 임의적이며, 구체적인 동작들은 특정한 예시적인 구성들의 맥락에서 설명된다. 기능의 다른 할당들이 예상되고, 본 개시내용의 다양한 실시예들의 범위 내에 있을 수 있다. 일반적으로, 예시적인 구성들에서 별도의 자원들로서 제시된 구조들 및 기능은 결합된 구조 또는 자원으로서 구현될 수 있다. 마찬가지로, 단일 자원으로서 제시된 구조들 및 기능은 별도의 자원으로서 구현될 수 있다. 마찬가지로, 이들 및 다른 변형, 수정, 추가 및 개선은 첨부된 청구항들에 의해 표현되는 본 개시내용의 실시예들의 범위 내에 있다. 따라서, 명세서 및 도면들은 제한적인 의미보다는 예시적인 것으로 간주되어야 한다.

Claims (20)

  1. 방법으로서,
    서버 시스템에 의해, 제1 컴퓨팅 디바이스에 대해 검출된 제1 디바이스 배향에 대응하는 디바이스 배향에서 캡처된, 이벤트에 관련된 비디오 콘텐츠를 각각 포함하는 복수의 저장된 미디어 항목 중의 상기 이벤트에 관련된 제1 미디어 항목을 결정하는 단계;
    상기 서버 시스템에 의해, 상기 제1 컴퓨팅 디바이스 상에 디스플레이될 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제1 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 제1 미디어 항목을 상기 제1 컴퓨팅 디바이스에 제공하는 단계;
    상기 제1 컴퓨팅 디바이스에 대한 상기 제1 디바이스 배향으로부터 제2 디바이스 배향으로의 검출된 변경에 응답하여, 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제2 디바이스 배향에 대응하는 디바이스 배향에서 캡처된 제2 미디어 항목을 결정하는 단계; 및
    상기 서버 시스템에 의해, 상기 제1 컴퓨팅 디바이스 상에 디스플레이될 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제2 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 제2 미디어 항목을 상기 제1 컴퓨팅 디바이스에 제공하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    제2 컴퓨팅 디바이스의 디바이스 배향을 검출하는 단계;
    상기 제2 컴퓨팅 디바이스에 대해 검출된 상기 디바이스 배향에 대응하는 디바이스 배향에서 캡처된 저장된 미디어 항목을 결정하는 단계; 및
    상기 제2 컴퓨팅 디바이스 상에 디스플레이될 상기 제2 컴퓨팅 디바이스의 상기 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 저장된 미디어 항목을 상기 제2 컴퓨팅 디바이스에 제공하는 단계
    를 더 포함하는, 방법.
  3. 제2항에 있어서, 상기 제2 컴퓨팅 디바이스의 상기 디바이스 배향을 검출하는 단계는 상기 제2 컴퓨팅 디바이스로부터 디바이스 배향을 수신하는 것에 기초하는, 방법.
  4. 제1항에 있어서, 상기 제1 디바이스 배향 또는 상기 제2 디바이스 배향은 가로방향 뷰 또는 세로방향 뷰인, 방법.
  5. 제1항에 있어서, 상기 제1 디바이스 배향 또는 상기 제2 디바이스 배향은 경사각 배향인, 방법.
  6. 제1항에 있어서, 상기 제1 디바이스 배향은 상기 비디오 콘텐츠의 대상의 각도에 기초하여 결정되는, 방법.
  7. 제1항에 있어서,
    상기 복수의 저장된 미디어 항목 중 각각의 미디어 항목의 상기 비디오 콘텐츠를 분석하여 상기 미디어 항목과 연관시킬 적어도 하나의 영역 또는 객체를 결정하는 단계;
    상기 적어도 하나의 영역 또는 객체를 상기 미디어 항목과 연관시키는 단계; 및
    상기 적어도 하나의 영역 또는 객체와 상기 미디어 항목의 상기 연관을 저장하는 단계
    를 더 포함하는, 방법.
  8. 제7항에 있어서,
    상기 제2 미디어 항목의 상기 비디오 콘텐츠의 영역 또는 객체의 선택을 표시하는 입력을 상기 제1 컴퓨팅 디바이스를 통해 검출하는 단계;
    상기 비디오의 상기 선택된 영역 또는 객체와 연관된 제3 미디어 항목을 결정하는 단계; 및
    상기 선택된 영역 또는 객체와 연관된 상기 제3 미디어 항목을 제공하는 단계
    를 더 포함하고, 상기 선택된 영역 또는 객체와 연관된 상기 제3 미디어 항목은 상기 제1 컴퓨팅 디바이스 상에 디스플레이되는, 방법.
  9. 제1항에 있어서, 상기 제1 디바이스 배향으로부터 상기 제2 디바이스 배향으로의 상기 변경은 상기 제1 컴퓨팅 디바이스 상에서의 상기 제1 미디어 항목의 디스플레이 동안 검출되는, 방법.
  10. 제1항에 있어서, 상기 복수의 비디오 콘텐츠 중 각각의 비디오 콘텐츠는 적어도 하나의 디바이스 배향을 사용하여 복수의 컴퓨팅 디바이스 각각에 의해 캡처되는, 방법.
  11. 서버 컴퓨터로서,
    프로세서; 및
    상기 프로세서와 결합된 컴퓨터 판독가능 매체
    를 포함하고, 상기 컴퓨터 판독가능 매체는 상기 서버 컴퓨터로 하여금 동작들을 수행하게 하기 위해 상기 프로세서에 의해 실행가능한 저장된 명령어들을 포함하고, 상기 동작들은:
    제1 컴퓨팅 디바이스에 대해 검출된 제1 디바이스 배향에 대응하는 디바이스 배향에서 캡처된, 이벤트에 관련된 비디오 콘텐츠를 각각 포함하는 복수의 저장된 미디어 항목 중의 상기 이벤트에 관련된 제1 미디어 항목을 결정하는 동작;
    상기 제1 컴퓨팅 디바이스 상에 디스플레이될 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제1 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 제1 미디어 항목을 상기 제1 컴퓨팅 디바이스에 제공하는 동작;
    상기 제1 컴퓨팅 디바이스에 대한 상기 제1 디바이스 배향으로부터 제2 디바이스 배향으로의 검출된 변경에 응답하여, 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제2 디바이스 배향에 대응하는 디바이스 배향에서 캡처된 제2 미디어 항목을 결정하는 동작; 및
    상기 제1 컴퓨팅 디바이스 상에 디스플레이될 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제2 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 제2 미디어 항목을 상기 제1 컴퓨팅 디바이스에 제공하는 동작
    을 포함하는, 서버 컴퓨터.
  12. 제11항에 있어서, 상기 동작들은:
    제2 컴퓨팅 디바이스의 디바이스 배향을 검출하는 동작;
    상기 제2 컴퓨팅 디바이스에 대해 검출된 상기 디바이스 배향에 대응하는 디바이스 배향에서 캡처된 저장된 미디어 항목을 결정하는 동작; 및
    상기 제2 컴퓨팅 디바이스 상에 디스플레이될 상기 제2 컴퓨팅 디바이스의 상기 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 저장된 미디어 항목을 상기 제2 컴퓨팅 디바이스에 제공하는 동작
    을 더 포함하는, 서버 컴퓨터.
  13. 제12항에 있어서, 상기 제2 컴퓨팅 디바이스의 상기 디바이스 배향을 검출하는 동작은 상기 제2 컴퓨팅 디바이스로부터 디바이스 배향을 수신하는 것에 기초하는, 서버 컴퓨터.
  14. 제11항에 있어서, 상기 제1 디바이스 배향 또는 상기 제2 디바이스 배향은 가로방향 뷰 또는 세로방향 뷰인, 서버 컴퓨터.
  15. 제11항에 있어서, 상기 제1 디바이스 배향 또는 상기 제2 디바이스 배향은 경사각 배향인, 서버 컴퓨터.
  16. 제11항에 있어서, 상기 제1 디바이스 배향은 상기 비디오 콘텐츠의 대상의 각도에 기초하여 결정되는, 서버 컴퓨터.
  17. 제11항에 있어서, 상기 동작들은:
    상기 복수의 저장된 미디어 항목 중 각각의 미디어 항목의 상기 비디오 콘텐츠를 분석하여 상기 미디어 항목과 연관시킬 적어도 하나의 영역 또는 객체를 결정하는 동작;
    상기 적어도 하나의 영역 또는 객체를 상기 미디어 항목과 연관시키는 동작; 및
    상기 적어도 하나의 영역 또는 객체와 상기 미디어 항목의 상기 연관을 저장하는 동작
    을 더 포함하는, 서버 컴퓨터.
  18. 제17항에 있어서, 상기 동작들은:
    상기 제2 미디어 항목의 상기 비디오 콘텐츠의 영역 또는 객체의 선택을 표시하는 입력을 상기 제1 컴퓨팅 디바이스를 통해 검출하는 동작;
    상기 비디오의 상기 선택된 영역 또는 객체와 연관된 제3 미디어 항목을 결정하는 동작; 및
    상기 선택된 영역 또는 객체와 연관된 상기 제3 미디어 항목을 제공하는 동작
    을 더 포함하고, 상기 선택된 영역 또는 객체와 연관된 상기 제3 미디어 항목은 상기 제1 컴퓨팅 디바이스 상에 디스플레이되는, 서버 컴퓨터.
  19. 제11항에 있어서, 상기 제1 디바이스 배향으로부터 상기 제2 디바이스 배향으로의 상기 변경은 상기 제1 컴퓨팅 디바이스 상에서의 상기 제1 미디어 항목의 디스플레이 동안 검출되는, 서버 컴퓨터.
  20. 컴퓨팅 디바이스로 하여금 동작들을 수행하게 하기 위해 적어도 하나의 프로세서에 의해 실행가능한 저장된 명령어들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 동작들은:
    제1 컴퓨팅 디바이스에 대해 검출된 제1 디바이스 배향에 대응하는 디바이스 배향에서 캡처된, 이벤트에 관련된 비디오 콘텐츠를 각각 포함하는 복수의 저장된 미디어 항목 중의 상기 이벤트에 관련된 제1 미디어 항목을 결정하는 동작;
    상기 제1 컴퓨팅 디바이스 상에 디스플레이될 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제1 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 제1 미디어 항목을 상기 제1 컴퓨팅 디바이스에 제공하는 동작;
    상기 제1 컴퓨팅 디바이스에 대한 상기 제1 디바이스 배향으로부터 제2 디바이스 배향으로의 검출된 변경에 응답하여, 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제2 디바이스 배향에 대응하는 디바이스 배향에서 캡처된 제2 미디어 항목을 결정하는 동작; 및
    상기 제1 컴퓨팅 디바이스 상에 디스플레이될 상기 제1 컴퓨팅 디바이스에 대해 검출된 상기 제2 디바이스 배향에 대응하는 상기 디바이스 배향에서 캡처된 상기 제2 미디어 항목을 상기 제1 컴퓨팅 디바이스에 제공하는 동작
    을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020227002275A 2016-07-01 2017-06-29 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅 KR102453083B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US15/201,079 2016-07-01
US15/201,079 US10622023B2 (en) 2016-07-01 2016-07-01 Processing and formatting video for interactive presentation
US15/201,049 US10623662B2 (en) 2016-07-01 2016-07-01 Processing and formatting video for interactive presentation
US15/201,049 2016-07-01
PCT/US2017/040045 WO2018005823A1 (en) 2016-07-01 2017-06-29 Processing and formatting video for interactive presentation
KR1020197002913A KR102355747B1 (ko) 2016-07-01 2017-06-29 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197002913A Division KR102355747B1 (ko) 2016-07-01 2017-06-29 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅

Publications (2)

Publication Number Publication Date
KR20220013955A KR20220013955A (ko) 2022-02-04
KR102453083B1 true KR102453083B1 (ko) 2022-10-11

Family

ID=59656150

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197002913A KR102355747B1 (ko) 2016-07-01 2017-06-29 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅
KR1020227002275A KR102453083B1 (ko) 2016-07-01 2017-06-29 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197002913A KR102355747B1 (ko) 2016-07-01 2017-06-29 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅

Country Status (3)

Country Link
KR (2) KR102355747B1 (ko)
CN (2) CN113079390B (ko)
WO (1) WO2018005823A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10622023B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US10623662B2 (en) 2016-07-01 2020-04-14 Snap Inc. Processing and formatting video for interactive presentation
US10475483B2 (en) 2017-05-16 2019-11-12 Snap Inc. Method and system for recording and playing video using orientation of device
CN110691259B (zh) * 2019-11-08 2022-04-22 北京奇艺世纪科技有限公司 视频播放方法、系统、装置、电子设备及存储介质
CN112218160A (zh) * 2020-10-12 2021-01-12 北京达佳互联信息技术有限公司 视频转换方法及装置和视频转换设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110228846A1 (en) * 2005-08-26 2011-09-22 Eran Eilat Region of Interest Tracking and Integration Into a Video Codec

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9240056B2 (en) * 2008-04-02 2016-01-19 Microsoft Technology Licensing, Llc Video retargeting
US20090262194A1 (en) * 2008-04-22 2009-10-22 Sony Ericsson Mobile Communications Ab Interactive Media and Game System for Simulating Participation in a Live or Recorded Event
JP5428210B2 (ja) * 2008-06-11 2014-02-26 ソニー株式会社 情報処理装置、撮像システム、録画制御方法及びプログラム
US20100053436A1 (en) * 2008-08-29 2010-03-04 Kabushiki Kaisha Toshiba Video Display Apparatus and Video Display Method
US9497386B1 (en) * 2009-09-22 2016-11-15 Altia Systems Inc. Multi-imager video camera with automatic exposure control
JP5774889B2 (ja) * 2011-03-31 2015-09-09 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理システム、および情報処理方法
JP5863330B2 (ja) * 2011-08-22 2016-02-16 国立大学法人旭川医科大学 画像処理装置、画像処理方法、およびプログラム
US8891009B2 (en) * 2011-08-29 2014-11-18 Futurewei Technologies, Inc. System and method for retargeting video sequences
US8953891B1 (en) * 2011-09-30 2015-02-10 Tribune Broadcasting Company, Llc Systems and methods for identifying a black/non-black frame attribute
US9148651B2 (en) * 2012-10-05 2015-09-29 Blackberry Limited Methods and devices for generating a stereoscopic image
US10032431B2 (en) * 2013-03-15 2018-07-24 Intel Corporation Mobile computing device technology and systems and methods utilizing the same
US9762848B2 (en) * 2013-03-15 2017-09-12 Google Inc. Automatic adjustment of video orientation
US8994838B2 (en) * 2013-04-16 2015-03-31 Nokia Corporation Motion adaptive cropping for video stabilization
US20150109408A1 (en) * 2013-10-21 2015-04-23 Stmicroelectronics International N.V. System and method for capturing and rendering a landscape image or video
CN103763505A (zh) * 2013-12-31 2014-04-30 华为技术有限公司 一种在视频通话中适应屏幕方向切换的方法和装置
EP3162074A1 (en) * 2014-06-27 2017-05-03 Koninklijke KPN N.V. Determining a region of interest on the basis of a hevc-tiled video stream
US9570113B2 (en) * 2014-07-03 2017-02-14 Gopro, Inc. Automatic generation of video and directional audio from spherical content
CN110401820A (zh) * 2019-08-15 2019-11-01 北京迈格威科技有限公司 多路视频处理方法、装置、介质及电子设备

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110228846A1 (en) * 2005-08-26 2011-09-22 Eran Eilat Region of Interest Tracking and Integration Into a Video Codec

Also Published As

Publication number Publication date
CN113079390A (zh) 2021-07-06
CN110089117B (zh) 2023-02-17
CN110089117A (zh) 2019-08-02
WO2018005823A1 (en) 2018-01-04
CN113079390B (zh) 2024-04-05
KR20220013955A (ko) 2022-02-04
KR20190025659A (ko) 2019-03-11
KR102355747B1 (ko) 2022-01-27

Similar Documents

Publication Publication Date Title
US11557324B2 (en) Processing and formatting video for interactive presentation
US11159743B2 (en) Processing and formatting video for interactive presentation
US11233952B2 (en) Selective identification and order of image modifiers
US11750770B2 (en) Real time painting of a video stream
KR102039505B1 (ko) 국지적 증강 현실 지속적 스티커 객체
KR102453083B1 (ko) 대화형 프레젠테이션을 위한 비디오의 처리 및 포맷팅
US10896346B1 (en) Image segmentation for object modeling
US10839007B1 (en) Generating a probability of music
KR102655540B1 (ko) 효율적인 병렬 광학 흐름 알고리즘 및 gpu 구현
US11668937B2 (en) Processing a media content based on device movement
KR102657053B1 (ko) 옵트아웃 인터스티셜을 이용한 미디어 컬렉션 탐색

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant