KR102266689B1 - 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어 - Google Patents

시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어 Download PDF

Info

Publication number
KR102266689B1
KR102266689B1 KR1020217004195A KR20217004195A KR102266689B1 KR 102266689 B1 KR102266689 B1 KR 102266689B1 KR 1020217004195 A KR1020217004195 A KR 1020217004195A KR 20217004195 A KR20217004195 A KR 20217004195A KR 102266689 B1 KR102266689 B1 KR 102266689B1
Authority
KR
South Korea
Prior art keywords
client
media stream
media
fingerprints
received
Prior art date
Application number
KR1020217004195A
Other languages
English (en)
Other versions
KR20210020166A (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 KR20210020166A publication Critical patent/KR20210020166A/ko
Application granted granted Critical
Publication of KR102266689B1 publication Critical patent/KR102266689B1/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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • H04N21/4316Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window
    • G06K9/00744
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/46Extracting features or characteristics from the video content, e.g. video fingerprints, representative shots or key frames
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/12Fingerprints or palmprints
    • G06V40/1365Matching; Classification
    • 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/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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43072Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device
    • 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/44016Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip
    • 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/440281Processing 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 temporal resolution, e.g. by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6543Transmission by server directed to the client for forcing some client operations, e.g. recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6582Data stored in the client, e.g. viewing habits, hardware capabilities, credit card number
    • 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/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Databases & Information Systems (AREA)

Abstract

컴퓨팅 시스템은 클라이언트에 의해서 프레임 레이트에서 생성된 쿼리 핑거프린트들과 수행된 핑거프린트 매칭에 기초하여, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한다. 그 후에, 컴퓨팅 시스템은 미디어 스트림 내의 실제 시간과 클라이언트의 클럭에 따른 클라이언트 시간 사이에 동기 락의 컴퓨팅 시스템에 의한 확립을 용이하게 하기 위해 클라이언트로 하여금 프레임 레이트를 증가시키게 한다. 그 후에 컴퓨팅 시스템은 확립된 동기 락을 기초로서 사용하여, 미디어 스트림에서 컨텐츠 수정이 수행되어야 하는 실제 시간 포인트를, 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트에 맵핑한다. 그리고 컴퓨팅 시스템은 결정된 클라이언트 시간 포인트에서 클라이언트가 컨텐츠 수정을 수행하도록 한다.

Description

시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어
관련 출원에 대한 참조
본 출원은 2018년 10월 22일에 출원된 미국 특허 출원 제16/166,561호 및 2018년 7월 16일에 출원된 미국 가특허 출원 제62/698,629호에 대한 우선권을 주장하며, 이 문헌들 각각은 전체가 본 명세서에 참조로서 포함된다.
본 출원은 또한 2018년 10월 22일에 출원된 미국 특허 출원 제16/166,948호와 관련된 것이며, 이 문헌 전체가 본 명세서에 참조로서 포함된다.
일반적인 미디어 클라이언트는 비디오 및/또는 오디오 컨텐츠와 같은 미디어 컨텐츠를 나타내는 아날로그 또는 디지털 미디어 스트림을 수신하고, 디스플레이 스크린 및/또는 오디오 스피커와 같은 사용자 인터페이스에서 미디어 컨텐츠를 출력하고/하거나 스트림을 전달하도록 동작한다. 이러한 클라이언트들의 예들로는 텔레비전, 컴퓨터 모니터, 프로젝션 시스템, 라우드 스피커, 헤드폰, 셋탑 박스(예를 들면, 케이블 또는 위성 TV 수신기), 디지털 비디오 레코더, 라디오, 개인용 컴퓨터, 모바일 통신 장치, 게임 콘솔, 스트리밍 미디어 플레이어 등을 포함한다.
예를 들어, 텔레비전은 방송 스트림(예를 들어, 무선으로, 셋탑 박스로부터, 인터넷 연결을 통해 또는 다른 방식으로)을 수신하고, 해당 방송 스트림의 미디어 컨텐츠를 사용자에게 프레젠테이션할 수 있다. 다른 예로서, 셋탑 박스는 다중 채널 비디오 프로그램 디스트리뷰터로부터 방송 스트림을 수신할 수 있으며, 재생을 위해 HDMI(High-Definition Multimedia Interface) 케이블 또는 기타 인터페이스를 통해 해당 스트림의 미디어 컨텐츠를 텔레비전 및/또는 오디오/비디오 수신기로 출력할 수 있다. 또 다른 예로서, 디지털 비디오 또는 오디오 레코더도 마찬가지로 방송 스트림을 수신할 수 있지만 나중에 재생하기 위해 방송 스트림을 저장할 수 있다. 또 다른 예로서 라우드 스피커 또는 헤드폰은 라디오, 컴퓨터 또는 기타 장치에서 방송 오디오 스트림을 수신할 수 있으며, 해당 스트림의 오디오 컨텐츠를 사용자에게 제공할 수 있다. 다른 많은 예도 가능하다.
미디어 클라이언트가 미디어 스트림을 수신할 때, 클라이언트가 스트림의 미디어 컨텐츠 일부를 수정하는 것이 특정 상황에서 유용할 수 있다. 예를 들어, 클라이언트가 광고 또는 미디어 컨텐츠의 다른 세그먼트를 대체 광고 또는 다른 대체 컨텐츠로 동적으로 대체함으로써, 컨텐츠가 사용자에게 재생될 때 원래 포함된 광고 대신에 사용자가 대체 광고를 수신할 수 있도록 하는 것이 유용할 수 있다. 다른 예로서, 클라이언트가 채널 식별, 컨텍스트 정보, 광고 컨텐츠 등과 같은 오버레이 또는 분할 화면 컨텐츠로 미디어 컨텐츠의 일부를 동적 보충함으로써, 컨텐츠가 사용자에게 재생될 때, 원래 포함된 컨텐츠와 함께 사용자가 부가 컨텐츠를 수신할 수 있도록 하는 것이 유용할 수 있다.
또한, 클라이언트가 미디어 스트림 내의 특정 시간 포인트에서 그러한 컨텐츠 수정을 수행하는 것이 바람직할 수 있다. 예를 들어, 클라이언트가 기존 광고를 대체 광고로 동적 대체해야 하는 경우, 클라이언트는 기존 광고가 시작될 미디어 스트림 내의 시점에서 대체 광고를 배치하는 것이 바람직할 수 있다. 마찬가지로, 클라이언트가 해당 부분과 관련된 오버레이로 미디어 컨텐츠의 특정 부분을 보충해야 하는 경우, 클라이언트는 해당 부분이 시작될 때 오버레이를 시작하는 것이 바람직할 수 있다. 다른 예도 가능하다.
특히, 해당 미디어 스트림이 비디오 프레임 및/또는 오디오 프레임과 같은 프레임 시퀀스를 정의할 수 있으며, 클라이언트는 프레임 단위로 컨텐츠 수정을 수행하는 것이 바람직할 수 있다. 예를 들어, 광고 대체의 경우, 클라이언트는 기존 광고의 첫 번째 프레임에서 정확하게 시작하는 기존 광고 대신에 대체 광고를 삽입하는 것이 바람직할 수 있다. 또한 미디어 스트림의 특정 부분에 오버레이를 추가하기 위해, 클라이언트는 미디어 스트림의 해당 부분의 첫 번째 프레임에서 또는 특정 관계로 오버레이를 시작하는 것이 바람직할 수 있다.
클라이언트가 이 컨텐츠 수정을 용이하게 수행하게 하기 위해, 클라이언트는 이 수정이 발생하는 특정 시간 포인트를 알고 있을 필요가 있을 수 있다. 그러나, 실제에 있어서 수정 시간 포인트는 클라이언트가 알 수 없는 타임라인(timeline)에 정의될 수 있다. 예를 들어, 수정 시간 포인트가 미디어 스트림 자체 내의 레퍼런스 타임라인에 정의될 수 있지만, 클라이언트는 해당 타임라인에 대한 컨텍스트를 가지고 있지 않을 수 있다. 따라서, 클라이언트에게 해당 수정 시간 포인트를 제공하면 클라이언트는 미디어 스트림 내의 원하는 시간 포인트에서 수정을 수행할 수 없다.
이에 대한 비제한적인 예로서, 텔레비전 방송 내에 나타날 수 있는 애드 포드(ad pod)를 정의하는 미디어 스트림을 고려한다. 애드 포드는 텔레비전 광고와 같은 일련의 광고로 구성된다. 이 예에서, 클라이언트는 특정 텔레비전 채널의 선형 브로드캐스트 피드를 수신하여 제공하는 텔레비전일 수 있으며, 애드 포드는 해당 피드 내의 임의의 시점에서 나타날 수 있다. 특히 스포츠 이벤트와 같은 라이브 방송의 경우, 이러한 피드에서 애드 포드가 나타나는 시간을 예측할 수 없다. 대안적으로는, 특별히 스케줄링된 시간에 애드 포드가 나타날 수 있다.
이 예에서, 원하는 수정은 애드 포드 내의 특정 광고의 대체일 수 있다(예를 들어, 광고를 다른 광고 또는 다른 대체 컨텐츠로 대체). 예를 들어, 애드 포드가 일련의 광고 A1, A2, A3, A4인 경우, 원하는 수정은 광고 A3의 대체일 수 있다.
이러한 상황에서, 애드 포드는 시간 T=0에서 시작하여 애드 포드의 끝까지 계속되는 내부 타임라인을 정의할 수 있으며, 광고 A3은 해당 타임라인의 시간 TA3에서 시작할 수 있다. 그러나, 클라이언트는 해당 타임라인에 대한 컨텍스트가 부족할 수 있다. 클라이언트에는 "클라이언트 시간(client time)"을 정의하는 타임라인(예를 들면, 시간 또는 기타 내부 타임 레퍼런스)을 가지는 자체 내부 클럭이 있을 수 있다. 그러나 클라이언트 시간 내에 애드 포드 타임라인이 어디에 있는지에 대한 고급 지식 없이, 원하는 컨텐츠 수정 시간 포인트로서 TA3 값만 주어지면 클라이언트는 원하는 광고 대체를 수행할 수가 없다.
이 문제를 해결하기 위한 한 가지 방법은 클라이언트에 의해 수신되고 있는 미디어 스트림의 타임스탬프된(timestamped) 쿼리 핑거프린트들을 기지의(known) 애드 포드 시퀀스와 같은 기지의 미디어 스트림의 타임스탬프된 레퍼런스 핑거프린트들과 비교하여, 핑거프린트 매칭을 수행하는 것이다.
예를 들어, 클라이언트는 클라이언트가 수신하고 있는 미디어 스트림의 프레임들에 대한 쿼리 핑거프린트들을 생성할 수 있고, 클라이언트의 내부 클럭에 기초하여 이러한 쿼리 핑거프린트들을 타임스탬프할 수 있으며, 컴퓨팅 시스템은 분석을 위해 이러한 타임스탬프된 쿼리 핑거프린트들을 수신할 수 있다. 또한, 컴퓨팅 시스템은 기지의 미디어 스트림 내의 타임라인을 따라 정의된 레퍼런스 시간 또는 "실제 시간(true time)"에 기초하여 타임스탬프된 기지의 애드 포드 시퀀스와 같은 기지의 미디어 스트림의 프레임들에 대한 레퍼런스 핑거프린트들로 프로비저닝될 수 있다. 따라서 컴퓨팅 시스템은 타임스탬프된 쿼리 핑거프린트들을 타임스탬프된 레퍼런스 핑거프린트들과 비교할 수 있으며, 핑거프린트 매칭을 발견하면, 매칭 쿼리 핑거프린트의 타임스탬프가 매칭 레퍼런스 핑거프린트의 타임스탬프와 일치한다고 결론을 내릴 수 있다.
매칭 쿼리 및 레퍼런스 핑거프린트들의 타임스탬프들 사이에 이러한 상관 관계를 확립하면 클라이언트 시간과 실제 시간 사이에 "동기 락(synchronous lock)" 또는 시간 맵핑의 확립을 구성할 수 있다. 예를 들어, 매칭 쿼리 핑거프린트 및 매칭 레퍼런스 핑거프린트의 타임스탬프들 사이의 차이는 클라이언트가 미디어 스트림을 수신할 때 기지의 미디어 스트림 내 실제 시간과 클라이언트 시간 사이의 시간 오프셋을 정의할 수 있다. 따라서 기지의 미디어 스트림 내 프레임의 실제 시간 포인트에 대한 지식이 주어지면, 컴퓨팅 시스템은 확립된 동기 락을 사용하여, 클라이언트에 의해 수신되고 있는 미디어 스트림에서 동일한 프레임의 관련 클라이언트 시간 포인트를 결정할 수 있다. 예를 들어, 컴퓨팅 시스템은 주어진 실제 시간 포인트에 대응하는 클라이언트 시간 포인트를 결정하기 위해, 실제 시간과 클라이언트 시간 사이의 시간 오프셋을 적용할 수 있다.
상기한 애드 포드 예를 계속하면, 컴퓨팅 시스템은 확립된 동기 락을 사용하여, 실제 시간 값 TA3을, 클라이언트에 의해 수신되고 있는 미디어 스트림에서 클라이언트가 광고 A3를 대체하는 클라이언트 시간 포인트(예를 들면, 클라이언트가 광고 대체를 시작해야 하는 클라이언트 시간 포인트)를 나타내는 클라이언트 시간 값에 맵핑할 수 있다. 또한 클라이언트는 결정된 클라이언트 시간 포인트에서 광고 A3의 대체를 수행할 수 있다.
그러나, 이 과정에서 발생할 수 있는 기술적 문제점은 클라이언트가 쿼리 핑거프린트들과 레퍼런스 핑거프린트들 사이의 신뢰도가 높은 핑거프린트 매칭을 용이하게 할 만큼 충분히 빠르게 쿼리 핑거프린트들을 생성하지 못할 수 있다는 것이다. 특히, 클라이언트에서 제한된 처리 능력, 메모리 및/또는 기타 리소스들을 보존하기 위해, 클라이언트는 상대적으로 낮은 프레임 레이트에서 핑거프린트들을 생성하도록 구성될 수 있으며, 이것은 클라이언트가 수신 중인 미디어 스트림의 프레임 레이트보다 훨씬 낮을 수 있다. 그 결과, 검출된 핑거프린트 매칭이 부정확하게 될 수 있고, 확립된 동기 락이 부정확할 수 있으며, 클라이언트는 미디어 스트림의 잘못된 포인트에서(가능하게는 너무 이르거나 너무 늦게) 원하는 컨텐츠 수정을 수행하게 될 수 있다.
예를 들어, 초당 30 프레임을 갖는 비디오에서, 클라이언트는 초당 2 프레임과 같은 낮은 프레임 레이트에서 쿼리 핑거프린트들을 생성하도록 설정될 수 있다. 그러나 낮은 레이트에서 핑거프린트 매칭을 수행하면, 신뢰도가 낮은 핑거프린트 매칭이 발생할 수 있다. 이에 대한 한 가지 이유는 미디어 스트림이 일정 기간 동안 미디어 컨텐츠가 전혀 변경되지 않는 미디어 시퀀스의 일부에 대응하는 동일하거나 거의 동일한 프레임들의 다양한 하위 시퀀스를 포함할 수 있기 때문이다. 결과적으로, 낮은 레이트에서 생성된 쿼리 핑거프린트들 중 일부가 여러 레퍼런스 핑거프린트들과 매칭됨으로써, 신뢰도가 낮은 매칭이 발생할 수 있다.
이러한 기술적 문제를 해결하는데 도움이되는 메커니즘이 개시된다.
본 개시에 따르면, 클라이언트가 일반적으로 비교적 낮은 레이트(예를 들어, 상기한 예에서 초당 2 프레임)로 쿼리 핑거프린트들을 확립하고, 컴퓨팅 시스템은 이러한 낮은 레이트 쿼리 핑거프린트들을 기초로서 사용하여 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 비교함으로써, 클라이언트에 의해 수신되고 있는 미디어 스트림이 기지의 미디어 스트림인지 초기에 판정하며, 즉 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한다.
이에 따라 클라이언트가 기지의 미디어 스트림을 수신하고 있다고 판정하면, 컴퓨팅 시스템은 클라이언트로 하여금 쿼리 핑거프린트 생성 레이트를 증가시키게 하며, 즉, 비교적 낮은 레이트에서 쿼리 핑거프린트들을 생성하는 것으로부터 비교적 높은 레이트(예를 들면, 상기 예에서 초당 16 또는 30 프레임)에서 쿼리 핑거프린트들을 생성하는 것으로 전환한다. 또한 컴퓨팅 시스템은 상대적으로 높은 신뢰도를 가지고 동기 락을 확립하기 위해 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 비교하기 위한 기초로서 높은 레이트의 쿼리 핑거프린트들을 사용한다. 컴퓨팅 시스템은 확립된 동기 락을 기초로 사용하여, 클라이언트에 의해 수신되고 있는 미디어 스트림의 특정 포인트에서 클라이언트가 컨텐츠 수정을 수행하도록 한다.
대표적인 구현에서, 컴퓨팅 시스템은 클라이언트에 의해 수신되고 있는 미디어 스트림을 나타내는 쿼리 핑거프린트들을 수신할 수 있으며, 여기서 쿼리 핑거프린트들은 클라이언트에 의해 제 1 프레임 레이트에서 생성된다("낮은 레이트 쿼리 핑거프린트들"). 컴퓨팅 시스템이 클라이언트에 의해 생성된 낮은 레이트의 쿼리 핑거프린트들을 수신하면, 컴퓨팅 시스템은 이러한 낮은 레이트의 쿼리 핑거프린트들을, 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과 비교한다. 그리고 이 비교에 기초하여, 컴퓨팅 시스템은 하나 이상의 제 1 매칭들을 검출하며, 이러한 매칭은 클라이언트에 의해 수신되고 있는 미디어 스트림이 기지의 미디어 스트림임을 나타낸다.
하나 이상의 매칭들을 검출한 것에 응답하여, 컴퓨팅 시스템은 클라이언트로 하여금 제 1 프레임 레이트에서 쿼리 핑거프린트들을 생성하는 것으로부터 제 1 프레임 레이트보다 높은 제 2 프레임 레이트에서 쿼리 핑거프린트들을 생성하는 것으로 전환하게 하고("높은 레이트의 쿼리 핑거프린트들"), 컴퓨팅 시스템은 클라이언트에 의해 생성된 높은 레이트의 쿼리 핑거프린트들을 수신하며, 각 높은 레이트의 쿼리 핑거프린트는 클라이언트의 클럭에 따라 각각의 쿼리 핑거프린트 타임스탬프를 갖는다.
컴퓨팅 시스템이 클라이언트에 의해 생성된 높은 레이트의 쿼리 핑거프린트들을 수신함에 따라, 컴퓨팅 시스템은 이러한 높은 레이트의 쿼리 핑거프린트들을 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과 추가로 비교하게 된다. 그리고 이 추가 비교에 기초하여, 컴퓨팅 시스템은 하나 이상의 제 2 매칭들을 검출하게 되며, 각각의 제 2 매칭은 쿼리 핑거프린트 타임스탬프들 중 하나와 연관된 것이다.
컴퓨팅 시스템은 각각의 제 2 매칭과 연관된 쿼리 핑거프린트 타임스탬프에 기초하여, 클라이언트에 의해 수신되고 있는 미디어 스트림에서 클라이언트가 컨텐츠 수정을 수행해야 하는 시간 - 이 시간은 클라이언트의 내부 클럭에 따라 정의됨 - 을 결정하게 된다. 그리고 컴퓨팅 시스템은 클라이언트가 결정된 시간에 컨텐츠 수정을 수행하도록 한다.
이들 및 다른 양태들, 이점들 및 대안들은 첨부 도면을 적절하게 참조하여 다음의 상세한 설명을 읽음으로써 당업자에게 명백해질 것이다. 또한, 이 요약 및 아래에서 제공되는 설명은 제한이 아닌 예로서 본 발명을 설명하기 위한 것임을 이해해야 한다.
도 1은 개시된 특징들이 구현될 수 있는 시스템의 간략 블록도이다.
도 2는 본 개시에 따라 수행될 수 있는 동작들을 나타내는 흐름도이다.
도 3은 본 개시에 따라 수행될 수 있는 동작들을 나타내는 다른 흐름도이다.
도 4는 본 개시에 따라 동작할 수 있는 컴퓨팅 시스템의 구성 요소들을 나타내는 간략 블록도이다.
도면들을 참조하면, 도 1은 다양한 개시된 원리들이 적용될 수 있는 예시적인 시스템의 간략 블록도이다. 그러나, 본 명세서에서 설명되는 이러한 구성과 다른 구성 및 처리들은 다양한 다른 형태를 취할 수 있음을 이해할 것이다. 예를 들어, 요소들 및 동작들은 재정렬, 분산, 복제, 결합, 생략, 추가 또는 수정될 수 있다. 또한, 하나 이상의 엔티티에 의해 수행되는 것으로 여기에서 설명되는 기능들은 하드웨어, 펌웨어, 및/또는 소프트웨어를 통해(예를 들어 프로그램 명령어 등을 실행하는 하나 이상의 처리 유닛들에 의해) 그러한 엔티티들에 의해 및/또는 이들을 대신하여 구현될 수 있음을 이해할 것이다.
도 1에 도시된 바와 같이, 본 예시적인 시스템은 미디어 소스(14)로부터 실시간으로 미디어 스트림을 수신하도록 구성되는 미디어 클라이언트(12)를 포함한다.
실제에 있어서, 미디어 클라이언트(12)는 미디어 소스(14)로부터 비디오 및/또는 오디오 컨텐츠와 같은 미디어 컨텐츠를 나타내는 아날로그 또는 디지털 미디어 스트림을 수신하고, 미디어 컨텐츠를 출력하며, 및/또는 디스플레이 스크린 및/또는 오디오 스피커와 같은 사용자 인터페이스에서 컨텐츠의 프레젠테이션을 위해 스트림을 포워딩하도록 전술한 바와 같이 동작하는 것으로 구성될 수 있다. 미디어 클라이언트는 다른 가능성들 중에서, 위에서 설명한 형태들 중 하나를 취할 수 있다.
미디어 소스(14)는 또한 미디어 클라이언트(12)의 형태에 따라 다양한 형태를 취할 수 있다. 예를 들어, 미디어 클라이언트(12)가 텔레비전인 경우, 미디어 소스(14)는 텔레비전에 의한 프레젠테이션을 위해 선택된 미디어 스트림을 출력하도록 구성된, 로컬 셋탑 박스(예를 들어, 케이블 또는 위성 수신기) 또는 스트리밍 미디어 서버일 수 있거나, 또는 미디어 소스(14)는 다른 가능성들 중에서, 방송 텔레비전국 등일 수 있다. 미디어 클라이언트가 컴퓨터인 경우, 미디어 소스는 인터넷 스트리밍 미디어 서버 또는 기타 미디어 프로바이더를 포함할 수 있다. 대안적으로, 미디어 소스(14)는 미디어 클라이언트(12)와 통합되고/되거나 미디어 클라이언트(12)에 의해 로컬로 액세스 가능한 데이터 스토리지일 수 있으며, 미디어 클라이언트는 재생을 위해 데이터 스토리지로부터 미디어 스트림을 수신(예를 들어, 검색)한다. 다른 예도 가능하다.
도 1에 추가로 도시된 바와 같이, 미디어 클라이언트(12)는 네트워크(예를 들어, 인터넷 또는 사설 네트워크)(16)를 통해, 미디어 소스(14)와 연관되고/되거나 통합될 수 있거나 그렇지 않을 수도 있는 네트워크 서버(18)와 통신할 수 있다.
예시적인 구현에서, 미디어 클라이언트(12) 및 네트워크 서버(18)는 위에서 언급된 바와 같은 동작들을 수행하는 것을 용이하게 하기 위해 데이터 통신에 참여할 수 있다. 예를 들어, 대표적인 컴퓨팅 시스템의 양태들이 클라이언트(12)와 연동하는 서버(18)에 의해 구현됨으로써 동기 락을 확립하고, 동기 락을 적용하여 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하고, 결정된 클라이언트 시간 포인트에 클라이언트가 컨텐츠 수정을 수행하게 할 수 있다. 추가적으로 또는 대안적으로, 대표적인 컴퓨팅 시스템의 양태들이 서버(18)와 연동하는 클라이언트(12)에 의해 구현됨으로써 유사한 동작들을 수행할 수 있다.
위에서 언급한 바와 같이, 클라이언트(12)와 같은 미디어 클라이언트가 미디어 스트림을 수신할 경우, 클라이언트가 스트림 컨텐츠의 세그먼트를 대체하거나 보충하는 것과 같이, 스트림 컨텐츠의 일부를 수정하는 것이 유용할 수 있다. 또한, 위에서 언급한 바와 같이, 클라이언트가 미디어 스트림 내의 특정 시간 포인트에서 그렇게 하는 것이 바람직할 수 있다. 예를 들어, 스트림이 비디오 프레임들 및/또는 오디오 프레임들과 같은 프레임 시퀀스를 정의하는 경우, 클라이언트가 시퀀스의 특정 프레임에서 시작하여 수정을 수행하는 것이 바람직할 수 있다.
이러한 컨텐츠 수정을 용이하게 하기 위해, 위에서 언급한 바와 같이, 컴퓨팅 시스템은 먼저 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별할 수 있다. 예를 들어, 컴퓨팅 시스템은 먼저 클라이언트에 의해 수신되는 미디어 스트림이 수정되어야 하는 특정 컨텐츠를 포함하는 스트림인지 결정할 수 있다. 미디어 스트림을 식별하면, 컴퓨팅 시스템은 클라이언트가 컨텐츠 수정을 수행해야 하는 미디어 스트림의 특정 포인트를 결정할 수 있으며, 또한 클라이언트가 결정된 포인트에서 컨텐츠 수정을 수행하게 할 수 있다.
클라이언트(12)에 의해 수신되는 미디어 스트림을 식별하는 한 가지 방법은 클라이언트(또는 부속 장치)가 클라이언트에 의해 수신되고 있는 미디어 컨텐츠를 나타내는 디지털 핑거프린트 데이터를 생성하게 하고, 서버(18)가 해당 핑거프린트 데이터를, 클라이언트가 기지의 미디어 스트림을 수신하고 있음을 나타내는 하나 이상의 핑거프린트 매칭들을 갖는, 기지의(known) 미디어 스트림의 미디어 컨텐츠를 나타내는 레퍼런스 핑거프린트 데이터와 비교하게 하는 것이다.
예시적인 구현에서, 서버(18) 또는 다른 그러한 엔티티는 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트 데이터를 확립하거나 그렇지 않으면 그것에 액세스할 수 있다. 예를 들어, 서버(18)는 기지의 미디어 스트림의 프레임들을 나타내는 일련의 레퍼런스 디지털 핑거프린트들을 확립하거나 프로비저닝될 수 있다. 서버 또는 다른 엔티티는 기지의 미디어 스트림의 프레임들을 프로그래밍 방식으로 분석하고, 기지의 미디어 스트림의 사본을 입력으로서 수신하고, 레퍼런스 핑거프린트를 생성하기 위한 것으로 현재 알려져 있거나 나중에 개발될 임의의 미디어 핑거프린팅 프로세스 또는 알고리즘을 적용함으로써 이러한 레퍼런스 핑거프린트들을 확립할 수 있다.
이러한 레퍼런스 핑거프린트들은 핑거프린트 매칭을 용이하게 하기 위해 비교적 높은 수준의 그래뉼래러티에서 생성될 수 있다. 예를 들어, 기지의 미디어 스트림의 각 프레임에 대해 레퍼런스 핑거프린트가 각각이 확립될 수 있다. 초당 30 프레임의 비디오를 포함하는 미디어 스트림의 경우, 그 시퀀스는 따라서 초당 30 프레임의 레이트에서 생성되거나, 또는 다른 합리적으로 높은 레이트에서 생성되는 레퍼런스 비디오 핑거프린트들을 높은 레이트 레퍼런스 핑거프린트들로서 포함할 수 있다.
또한, 클라이언트(12)가 미디어 스트림을 수신함에 따라 실시간으로, 클라이언트는 수신하고 있는 스트림의 미디어 컨텐츠를 나타내는 쿼리 핑거프린트 데이터를 생성하고, 분석을 위하여 이 쿼리 핑거프린트 데이터를 서버(18)로 전송할 수 있다. 클라이언트는 핑거프린트 비교를 용이하게 하기 위해, 레퍼런스 핑거프린트들을 확립하는데 적용된 것과 동일한 핑거프린팅 처리 또는 알고리즘을 사용하여 이러한 쿼리 핑거프린트들을 확립할 수 있다. 그러나, 위에서 언급한 바와 같이, 클라이언트의 리소스 제한들(예를 들면, 처리 능력, 메모리 및 네트워크 속도에 대한 제한들) 또는 기타 이유로 인해, 이러한 쿼리 핑거프린트 생성이 클라이언트에 대한 지속적인 프로세스가 될 수 있다는 점을 감안할 때, 클라이언트는 상대적으로 낮은 레이트에서 이러한 쿼리 핑거프린트들을 생성하도록 구성될 수 있다. 예를 들어, 비디오를 포함하는 미디어 스트림의 경우, 클라이언트는 초당 2 프레임의 레이트만으로 이러한 쿼리 핑거프린트들을 생성하도록 구성될 수 있으며, 클라이언트는 생성된 쿼리 핑거프린트들을 1.5 초 정도마다 서버에 전송할 수 있다. 다른 예도 가능하다.
서버가 클라이언트로부터 이러한 쿼리 핑거프린트 데이터를 수신함에 따라, 서버는 쿼리 핑거프린트 데이터를 기지의 미디어 스트림의 레퍼런스 핑거프린트 데이터와 비교할 수 있다. 쿼리 핑거프린트 데이터가 레퍼런스 핑거프린트 데이터와 매칭된다고 충분한 확신을 가지고 서버가 판정하면, 서버는 클라이언트에 의해 수신되고 있는 미디어 스트림이 기지의 미디어 스트림(즉, 기지의 미디어 스트림의 사본)이라고 결론을 내릴 수 있다.
서버는 프레임 단위로 이 핑거프린트 비교를 수행할 수 있다. 예를 들어, 비디오 컨텐츠를 고려하면, 서버는 프레임의 쿼리 핑거프린트와 프레임의 레퍼런스 핑거프린트를 비교하여, 비디오 프레임 단위로 분석을 수행할 수 있다. 비교 프로세스는 핑거프린트들의 구조에 따라 다양한 형태를 취할 수 있다. 예를 들어, 이 비교는 핑거프린트들 간의 최대 편차를 계산하고, 그 최대 편차가 사전 정의된 허용 오차 내인지를 판정하는 것을 포함할 수 있다. 또한, 핑거프린트가 바이너리인 경우, 이것은 부울(Boolean) 판정일 수 있거나 또는 해밍(Hamming) 거리(핑거프린트에서 각 비트 위치 간의 미스매칭 수)를 계산하는 것을 포함할 수 있다. 핑거프린트가 10 진수 값이나 벡터(예를 들면, 비디오 프레임 영역 당 그레이 값)와 같이 더 복잡한 값인 경우, 이것은 이 값들 또는 벡터들 간의 거리를 판정하는 것을 포함할 수 있다. 다른 많은 예도 가능하다.
또한, 서버는 원하는 수준의 허용 오차로 이러한 핑거프린트 비교 프로세스를 수행할 수 있다. 예를 들어, 이 비교는 더 큰 수의 차이에 대한 허용 오차 및/또는 더 큰 크기의 차이에 대한 허용 오차와 같은, 핑거프린트들 간의 차이에 대한 상대적으로 높은 허용 오차를 가지고, 대략적으로 이루어질 수 있다. 예를 들어, 두 개의 32 비트 핑거프린트를 서로 비교할 경우, 대략적 비교는 두 개 또는 다른 지정된 비트 수가 매칭되지 않더라도 일반적으로 핑거프린트가 서로 매칭되는 것으로 간주할 수 있다. 또는 이 비교는 이러한 차이들에 대한 더 낮은 허용 오차 및/또는 기초가 되는 미디어의 특정 부분들을 나타내는 특정 핑거프린트 컴포넌트들에 초점을 맞춘 비교들을 통해 보다 세분화될 수 있다.
이러한 클라이언트에 의해 생성된 쿼리 핑거프린트와 기지의 미디어 스트림의 레퍼런스 핑거프린트의 비교를 통해, 서버가 하나 이상의 매칭들을 발견할 수 있다. 예를 들어, 서버는 클라이언트에 의해 수신되고 있는 미디어 스트림의 프레임의 쿼리 핑거프린트가 기지의 미디어 스트림의 프레임의 각각의 레퍼런스 핑거프린트와 매칭되는 하나 이상의 인스턴스들을 발견할 수 있다. 따라서 이러한 매칭은 클라이언트에 의해 수신되고 있는 미디어 스트림이 기지의 미디어 스트림이라는 결론을 확립하거나 이것을 지원할 수 있다.
클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한 후, 서버는 클라이언트가 컨텐츠 수정을 수행해야 하는 미디어 스트림의 포인트를 결정할 수 있다. 예를 들어, 대표적인 구현에서, 서버는 컨텐츠 수정이 발생할 기지의 미디어 스트림의 포인트를 나타내고 해당 포인트에서 어떤 컨텐츠 수정이 발생할 것인지를 나타내는 레퍼런스 데이터에 액세스할 수 있다. 예를 들어, 레퍼런스 데이터는 컨텐츠 수정이 시작될 기지의 미디어 스트림의 특정 프레임을 식별시킬 수 있다. 따라서, 서버는 레퍼런스 데이터를 참조하여 원하는 컨텐츠 수정 포인트를 결정할 수 있다.
그 후에, 서버는 클라이언트가 미디어 스트림의 결정된 포인트에서 컨텐츠 수정을 수행하도록 하는 지시를 클라이언트에 전송할 수 있다. 예를 들어, 서버는 미디어 스트림의 결정된 포인트를 지정하고 클라이언트에게 대체 또는 오버레이 미디어를 제공하거나 미디어 스트림의 해당 포인트에서 클라이언트가 수행할 컨텐츠 수정에 대해 클라이언트에게 지시하는 메시지를 네트워크(16)를 통해 클라이언트에게 전송할 수 있다. 그리고 클라이언트는 이 지시를 수신 및 해석하여, 미디어 스트림의 지시된 포인트에서 컨텐츠 수정을 응답적으로 수행하도록 구성될 수 있다.
이 프로세스에서, 서버는 클라이언트가 미디어 스트림에서 컨텐츠 수정을 수행해야 하는 특정 시간 포인트를 알 수 있다. 예를 들어, 서버에 의해 액세스 가능한 레퍼런스 데이터는 이 시간 포인트를 기지의 미디어 스트림 내의(즉 위에서 설명한 "실제 시간(true time)" 내의) 타임라인에서 측정되는 특정 시간으로서 지정할 수 있다. 위에서 언급한 바와 같이, 예를 들어 이 타임라인은 기지의 미디어 스트림의 시작 지점에서의 출발 시간(예를 들면, T=0)으로 시작될 수 있으며, 기지의 미디어 스트림의 각 프레임은 해당 타임라인의 특정 시간 포인트에서 발생할 수 있다. 따라서, 서버는 클라이언트가 미디어 스트림에서 컨텐츠 수정을 수행해야 하는 실제 시간 포인트를 레퍼런스 데이터로부터 결정할 수 있다.
그러나, 클라이언트의 시간 레퍼런스는 다를 수 있다. 위에서 언급한 바와 같이, 클라이언트의 시간 레퍼런스는 클라이언트의 내부 클럭에 따라 정의되는 "클라이언트 시간"일 수 있다. 클라이언트 시간과 실제 시간은 서로 동일한 레이트에서 최적으로 실행될 수 있지만, 이들의 출발 포인트들이 다를 수 있다. 따라서, 기지의 미디어 스트림의 실제 시간 포인트에 대한 단순한 지식만으로는 클라이언트 시간에 컨텍스트를 제공하지 못하게 된다. 그 결과, 위에서 언급한 것처럼 문제가 되는 것은 클라이언트가 컨텐츠 수정을 수행하기 시작하는 미디어 스트림의 시간 포인트를 클라이언트가 이해할 수 있는 방식으로 서버가 특성화하는 방법이다.
위에서 제안된 바와 같이 이 문제를 해결하는 한 가지 방법은 서버가 미디어 스트림에 대한 클라이언트의 시간 레퍼런스를 결정하는 방식으로 서버가 쿼리 핑거프린트들과 매칭되는 클라이언트 제공 타임스탬프들을 사용하게 한 다음, 서버가 해당 클라이언트 시간 레퍼런스를 기초로 사용하여 클라이언트가 컨텐츠 수정을 시작하는 미디어 스트림의 시간 포인트를 특성화하게 하는 것이다.
이것을 용이하게 하기 위해, 클라이언트가 자신의 쿼리 핑거프린트들을 생성할 때, 클라이언트는 클라이언트의 내부 클럭에 기초하여 각 쿼리 핑거프린트를 타임스탬프할 수 있다. 따라서, 클라이언트가 분석을 위해서 서버로 전송하는 쿼리 핑거프린트들은 타임스탬프된 쿼리 핑거프린트일 수 있다. 또한, 서버는 기지의 미디어 스트림 프레임들의 타임스탬프된 레퍼런스 핑거프린트들로 프로비저닝되거나 또는 이것에 액세스할 수 있다. 예를 들어, 서버는 기지의 미디어 스트림의 각 프레임에 대해 (i) 프레임의 레퍼런스 핑거프린트 및 (ii) 기지의 미디어 스트림 내의 관련 실제 시간 타임스탬프를 지정하는 레퍼런스 데이터로 프로비저닝될 수 있다.
서버가 클라이언트로부터 타임스탬프된 쿼리 핑거프린트를 수신함에 따라, 서버는 매칭 포인트들, 즉 쿼리 핑거프린트가 레퍼런스 핑거프린트와 매칭되는 인스턴스들을 검출하기 위해 쿼리 핑거프린트들을 레퍼런스 핑거프린트들과 비교할 수 있다. 서버가 이러한 매칭 포인트들을 하나 이상 검출한 경우, 서버는 검출된 각 매칭 포인트에 대해 (i) 매칭 포인트의 실제 시간 타임스탬프와 (ii) 매칭 포인트의 클라이언트 시간 타임스탬프를 모두 알게된다.
이와 같이, 서버는 실제 시간과 클라이언트 시간 사이에 동기 락(synchronous lock)을 효과적으로 확립하게 된다. 즉, 서버는 이제 미디어 스트림에서 매칭 프레임의 위치와 미디어 스트림의 해당 시간 포인트에서 클라이언트의 시간은 무엇이었는지를 모두 알고 있으므로, (i) 미디어 스트림 내의 실제 시간 타임스탬프와 (ii) 클라이언트의 내부 클럭에 따른 클라이언트 시간 사이의 맵핑을 효과적으로 확립하게 된다. 위에서 논의된 바와 같이, 이러한 동기 락은 시간 오프셋을 구성할 수 있으며, 이에 따라 서버가 미디어 스트림의 주어진 실제 시간 포인트에 시간 오프셋을 적용함으로써 미디어 스트림의 해당 클라이언트 시간 포인트를 결정할 수 있게 된다.
미디어 스트림에서 이 매칭 포인트를 발견하고 동기 락을 확립한 후, 서버는 클라이언트가 미디어 스트림에서 컨텐츠 수정을 수행할(즉 클라이언트가 미디어 스트림에서 컨텐츠를 시작할) 클라이언트 시간 포인트를 계산할 수 있다. 예를 들어, 컨텐츠 수정이 발생할 실제 시간 포인트에 대한 레퍼런스 데이터 표시가 주어지면, 서버는 동기 락에 의해 정의된 오프셋을 적용하여, 컨텐츠 수정이 발생할 관련 클라이언트 시간 포인트를 결정할 수 있다. 또는 서버는 매칭 포인트의 실제 시간 포인트로부터 컨텐츠 수정이 시작될 프레임의 시간까지의 기지의 미디어 스트림 내의 듀레이션을 계산할 수 있으며, 그 후에 서버는 계산된 듀레이션을 매칭 포인트의 클라이언트 시간 포인트에 추가함으로써, 컨텐츠 수정이 시작될 관련 클라이언트 시간 포인트를 결정할 수 있다. 다른 예도 가능할 수 있다.
그 후에, 서버는 클라이언트가 이 클라이언트 시간 포인트에서 시작하는 컨텐츠 수정을 수행하도록 지시하는, 이 결정된 클라이언트 시간 포인트의 명세를 클라이언트에게 전송할 수 있다. 그리고 해당 시간 포인트에서 시작하여 수행할 컨텐츠 수정에 대한 정보가 클라이언트에 아직 프로비저닝되지 않은 경우, 서버는 해당 컨텐츠 수정 정보를 클라이언트에 전송할 수도 있다. 예를 들어, 서버는 데이터 스토리지에서 검색하여, 클라이언트에 의해 수신되고 있는 미디어 스트림의 컨텐츠 대신에 클라이언트가 대체할 특정 대체 컨텐츠를 클라이언트에 전송할 수 있다. 또는 서버는 클라이언트가 대체 컨텐츠를 얻을 수 있는 네트워크 또는 로컬 스토리지 주소와 같은, 대체 컨텐츠에 대한 포인터를 클라이언트에 전송할 수 있다.
따라서, 클라이언트는 표시된 클라이언트 시간 포인트에서 컨텐츠 수정을 시작하라는 지시를 서버로부터 수신할 수 있다. 해당 클라이언트 시간 포인트에서 수행할 수정을 정의하는 데이터가 아직 클라이언트에 프로비저닝되지 않은 경우, 클라이언트는 예를 들어 서버로부터 또는 서버에 의해 지정되는 주소로부터 데이터를 수신할 수 있다. 클라이언트의 내부 클럭을 참조하여, 클라이언트는 표시된 클라이언트 시간 포인트에서 컨텐츠 수정을 정확하게 시작하도록 작동할 수 있다. 예를 들어, 표시된 클라이언트 시간 포인트에서, 클라이언트는 클라이언트에 의해 수신되고 있는 미디어 스트림의 프레임을 대체 컨텐츠의 프레임들로 대체하거나, 또는 클라이언트에 의해 수신되고 있는 미디어 스트림의 프레임들 상에 추가 컨텐츠를 오버레이하기 시작할 수 있으며, 다른 것도 가능하다.
그러나, 위에서 언급한 바와 같이, 클라이언트가 전술한 바와 같이 초당 2 프레임의 비디오 핑거프린트들과 같이, 비교적 낮은 레이트에서 쿼리 핑거프린트들을 생성하는 경우, 이 프로세스의 또 다른 문제가 발생할 수 있다. 이렇게 낮은 레이트에서 생성된 쿼리 핑거프린트들을 서버에 제공하면 서버가 미디어 스트림에서 매칭 포인트를 확실하게 식별하기 어렵게 될 수 있고 및/또는 신뢰도가 낮은 동기 락이 발생할 수 있다. 위에서 언급한 바와 같은 이러한 어려움에 대한 한 가지 이유는 미디어 스트림이 일정 기간 동안 미디어 컨텐츠가 전혀 변경되지 않는 미디어 시퀀스의 부분들에 대응하는, 동일하거나 거의 동일한 프레임들의 다양한 하위 시퀀스들을 포함할 수 있기 때문이다. 결과적으로, 낮은 레이트에서 생성되는 쿼리 핑거프린트들 중 일부가 여러 레퍼런스 핑거프린트들과 매칭될 수 있으며, 이에 따라 기껏해야 낮은 신뢰도 매칭 및 낮은 신뢰도 동기 락이 발생하게 된다.
이 문제에 대한 일 해결책은 클라이언트가 초당 16 프레임 또는 가능하게는 초당 30 프레임과 같은 훨씬 더 빠른 레이트에서 쿼리 핑거프린트들을 생성하도록 하는 것일 수 있다. 클라이언트가 더 높은 레이트에서 쿼리 핑거프린트들을 생성하면, 서버는 쿼리 핑거프린트들과 레퍼런스 핑거프린트들 사이에 하나 이상의 더 높은 신뢰도 매칭들을 확립할 수 있다. 예를 들어, 쿼리 핑거프린트가 두 개의 순차적 레퍼런스 핑거프린트와 매칭되는 것을 서버가 검출하는 경우, 서버는 모호성을 이유로 이들 매칭들을 삭제하고 쿼리 핑거프린트가 단일 레퍼런스 핑거프린트와 매칭되는 매치를 기다릴 수 있다. 또는 서버가 쿼리 핑거프린트들과 레퍼런스 핑거프린트들의 두 개의 순차적 쌍들 사이에서 동일한 매칭을 검출하는 경우, 서버는 모호성을 이유로 매칭들을 삭제하고 더 고유한 매칭을 기다릴 수 있다.
그러나, 불행하게도, 위에서 언급한 바와 같이, 클라이언트에서의 리소스 제한들로 인해 클라이언트가 지속적으로 그러한 높은 레이트에서 핑거프린트들을 생성하는 것이 어렵게 될 수 있다.
본 개시에 따르면, 개선된 해결책은 클라이언트가 이러한 핑거프린트 생성 레이트들의 하이브리드를 사용하도록 하는 것이다. 클라이언트는 일반적으로 리소스 절약을 위해, 낮은 레이트(예를 들면, 초당 2 프레임)로 쿼리 핑거프린트들을 생성할 수 있다. 그리고 서버가 낮은 레이트의 쿼리 핑거프린트들을 기반으로 핑거프린트 분석을 수행함으로써 전술한 바와 같이 클라이언트가 기지의 미디어 스트림을 수신하고 있는지 판정할 수 있다. 클라이언트가 기지의 미디어 스트림을 수신하고 있는 것으로 서버가 판정하고, 나중에 미디어 스트림의 특정 포인트에서 컨텐츠 수정을 수행해야 한다는 것을 서버가 알게 되면, 서버는 클라이언트에게 클라이언트의 핑거프린트 생성 레이트를 증가시키도록 지시할 수 있으며, 이에 따라 서버가 보다 세부적인 핑거프린트 비교를 수행할 수 있도록 한다. 예를 들어, 서버는 클라이언트에게 초당 2 프레임의 쿼리 핑거프린트 생성에서 초당 16 프레임 또는 심지어 초당 30 프레임의 쿼리 핑거프린트 생성으로 전환하고, 이러한 높은 레이트의 쿼리 핑거프린트들을 서버에 제공하도록 지시할 수 있다.
낮은 레이트의 쿼리 핑거프린트들을 기반으로 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한 후, 서버는 높은 레이트의 쿼리 핑거프린트들을 사용하여 보다 세부적인 분석을 수행할 수 있으며, 이에 따라 프레임 정확성 단위로 또는 최소한 훨씬 더 높은 수준의 신뢰도로 매칭 포인트를 검출하고, 더 높은 신뢰도의 동기 락을 달성할 수 있다.
이 프로세스의 예시적인 구현에서, 서버가 클라이언트에게 전송하는 핑거프린트 레이트 변경 지시를 통해 클라이언트는, 컨텐츠 수정(예를 들면, 다음 발생하는 컨텐츠 수정)이 시작되기 훨씬 전에 임계값인 후속 클라이언트 시간에 증가된 핑거프린트 레이트를 사용하기 시작할 수 있게 된다. 이것은 검출된 매칭 포인트로부터 컨텐츠 수정이 시작될 때까지 상당한 시간이 경과하고, 서버가 높은 레이트의 쿼리 핑거프린트들을 사용하여 매칭 포인트를 확실하게 검출하는데 그다지 많은 시간이 필요하지 않게 되는 상황에서 유용할 수 있다.
대표적인 클라이언트(가능하게는 해당 클라이언트)가 증가된 레이트에서 쿼리 핑거프린트들의 생성을 시작하면, 예를 들어, 이력 데이터에 기초하여, 서버 또는 다른 엔티티는 서버가 기지의 미디어 스트림에서 매칭 포인트를 확실하게 검출하는데 일반적으로 걸리는 시간을 결정할 수 있다. 그 후에 서버는 해당 시간과, 분석에 대한 낮은 신뢰도를 설명하는 사전 정의된 안전 듀레이션을, 클라이언트가 쿼리 핑거프린트 생성 레이트를 높이기 위한 임계 앞당겨진 듀레이션인 것으로 간주할 수 있다. 대안적으로, 서버는 이러한 임계 앞당겨진 듀레이션 값을 결정하거나 미리 프로비저닝될 수 있다.
그 후에, 서버는 컨텐츠 수정이 시작되기 전의 임계 앞당겨진 듀레이션인 클라이언트 시간에 클라이언트가 낮은 레이트의 핑거프린팅에서 높은 레이트의 핑거프린팅으로 전환하도록 하는 레이트 변경 지시를 구성할 수 있다. 서버는 위에서 설명한 낮은 신뢰도 동기 락을 기반으로 하여 이러한 앞당겨진 클라이언트 시간을 계산할 수 있다. 즉, 클라이언트의 낮은 레이트 쿼리 핑거프린트들을 기반으로 하여 동기 락을 확립하고 나서, 서버는 컨텐츠 수정이 발생할 클라이언트 시간 포인트를 추정할 수 있다. 그 후에 서버는 그 추정된 클라이언트 시간 포인트에서 임계 앞당겨진 듀레이션을 뺄셈함으로써 컨텐츠 수정이 시작되기 전의 임계 앞당겨진 듀레이션인 앞당겨진 클라이언트 시간 포인트를 계산할 수 있다.
서버는 결정된 앞당겨진 클라이언트 시간 포인트에서 클라이언트가 높은 레이트의 핑거프린팅으로 전환하도록 하는 다양한 방식으로 레이트 변경 지시를 구성할 수 있다. 예를 들어, 서버는 앞당겨진 클라이언트 시간 포인트에서 클라이언트에게 지시를 제공함으로써, 클라이언트가 자신의 핑거프린트 생성 레이트를 즉시 높이도록 한다. 대안적으로, 서버는 클라이언트에 대한 지시에 앞당겨진 클라이언트 시간 포인트의 명세를 포함시킴으로써, 클라이언트가 앞당겨진 클라이언트 시간에 도달할 시에 핑거프린트 생성 레이트를 높이도록 할 수 있다. 또한, 클라이언트는 표시된 바에 따라 높은 레이트의 핑거프린트 생성으로 전환하여 이러한 지시에 응답하도록 대응적으로 구성될 수 있다. 다른 예들도 가능할 수 있다.
일단 서버가 프레임 정확성 단위로 또는 클라이언트의 높은 레이트의 쿼리 핑거프린트들을 사용하여 더 높은 신뢰도로 매칭 포인트를 검출하면, 서버는 위에서 논의된 바와 같이 더 높은 신뢰도로 동기 락을 확립할 수 있다. 즉, 검출된 매칭 포인트와 관련된 쿼리 핑거프린트 타임스탬프를 기반으로, 및 컨텐츠 수정이 시작될 때까지의 계산된 듀레이션을 기반으로, 서버는 컨텐츠 수정이 시작될 클라이언트 시간 포인트를 더 높은 신뢰도로 계산할 수 있다. 그 후에 서버는 클라이언트가 계산된 클라이언트 시간 포인트에서 컨텐츠 수정을 시작하도록 하는 지시를 클라이언트에 전송할 수 있다. 따라서 클라이언트가 이 지시를 수신하고 나서, 표시된 클라이언트 시간 포인트에 도달하면 이에 응답하여 컨텐츠 수정을 시작할 수 있다.
이 프로세스의 비제한적인 예로서, 텔레비전 방송 내에 나타날 수 있는 애드 포드(ad pod)를 정의하는 미디어 스트림을 고려하도록 한다. 위에서 언급한 바와 같이, 애드 포드는 텔레비전 광고와 같은 일련의 광고로 구성되며, 애드 포드는 클라이언트에 의해 수신되고 있는 선형 브로드캐스트 피드와 같은, 선형 미디어 피드에서 임의의 주어진 시간에 나타날 수 있다.
실제에 있어서, 서버는 애드 포드의 프레임들을 나타내고 이에 대응하는 타임스탬프된 레퍼런스 핑거프린트들로 프로비저닝될 수 있으며, 타임스탬프는 (실제 시간으로서) 애드 포드 내의 정의된 타임라인을 따르는 포인트들이다. 또한, 서버에는 애드 포드 내의 광고들 중 특정 광고를 대체해야 한다는 표시와, 해당 광고 대체를 시작해야 하는 프레임의 타임스탬프가 프로비저닝될 수 있다.
지속적으로, 또는 하나 이상의 다른 트리거에 응답하여, 클라이언트가 미디어 피드를 수신할 때, 클라이언트는 브로드캐스트 피드의 낮은 레이트의 타임스탬프된 쿼리 핑거프린트들(예를 들면, 초당 2 프레임)을 생성할 수 있으며, 분석을 위해 이러한 타임스탬프된 쿼리 핑거프린트들을 서버에 보고할 수 있다. 각각의 이러한 쿼리 핑거프린트를 애드 포드 시퀀스의 프레임들을 나타내는 레퍼런스 핑거프린트들과 비교하여, 서버는 클라이언트가 기지의 애드 포드 시퀀스를 수신하고 있음을 검출할 수 있다.
클라이언트가 애드 포드 시퀀스를 수신하고 있다고 판정한 후, 서버는 초당 2 프레임의 쿼리 핑거프린트 생성에서 초당 16 또는 30 프레임으로 쿼리 핑거프린트들을 생성하는 것으로 전환하라는 것과 같은, 높은 레이트의 핑거프린팅으로 클라이언트가 전환하도록 하는 지시를 클라이언트에게 응답적으로 전송할 수 있으며, 가능하게는 이것은 위에서 설명한 바와 같이 클라이언트가 이러한 레이트 전환을 수행해야 하는 앞당겨진 클라이언트 시간 포인트를 지정할 수 있다. 또한 클라이언트는 이에 대응하여 레이트 전환을 수행하고, 분석을 위해 높은 레이트의 타임스탬프된 쿼리 핑거프린트들을 서버로 전송하기 시작할 수 있다.
전술한 방식으로 높은 레이트의 핑거프린트들을 사용하여, 서버는 높은 수준의 신뢰도로, 애드 포드 시퀀스에서 하나 이상의 매칭 포인트들을 검출할 수 있다. 전술한 바와 같은 검출된 매칭 포인트들을 기반으로, 서버는 상대적으로 신뢰도가 높은 동기 락을 확립하여, 실제 시간과 클라이언트 시간의 맵핑을 정의할 수 있다. 그 후에 서버는 확립된 동기 락을 기초로 적용하여 광고 대체가 시작되는 프레임의 실제 시간 포인트를, 클라이언트가 광고 대체를 시작해야 하는 해당 클라이언트 시간 포인트로 변환할 수 있다.
그 다음 서버는 결정된 클라이언트 시간 포인트에서 광고 대체를 시작하기 위한 지시를 클라이언트에 전송할 수 있으며, 해당 정보가 아직 클라이언트에게 제공되지 않은 경우 대체 광고(또는 대체 광고에 대한 포인터)를 클라이언트에 전송할 수 있다. 그 후에 클라이언트는 표시된 클라이언트 시간 포인트에서 그에 따라 광고 대체를 수행할 수 있다.
대표적인 구현에서, 클라이언트가 광고 대체와 같은, 표시된 컨텐츠 수정을 수행한 후, 클라이언트는 낮은 레이트의 쿼리 핑거프린트를 생성하는 것으로 자동으로 되돌릴 수 있다. 예를 들어, 클라이언트가 초당 2 프레임의 쿼리 핑거프린트 생성에서 초당 16 또는 30 프레임의 쿼리 핑거프린트 생성으로 전환했던 경우, 클라이언트는 초당 2 프레임의 쿼리 핑거프린트 생성으로 되돌릴 수 있다. 또한 이 프로세스는 원하는 대로 반복될 수 있다.
서버에 의해 수행되는 것으로 위에서 설명된 특정 동작들은 대안적으로 위에서 언급된 바와 같이 클라이언트에 의해 수행되거나 또는 해당 사안에 대해 다른 장치에 의해서 수행될 수 있다.
예로서, 상기 논의가 동기 락을 확립하고 이에 따라 컨텐츠 수정이 발생할 클라이언트 시간 포인트를 결정하도록 작동하는 서버에 대해서 설명했지만, 클라이언트가 이러한 동작들 중 일부를 자체적으로 수행하도록 구성될 수 있다.
예를 들어, 클라이언트가 기지의 미디어 스트림을 수신하고 있는 것으로 서버가 판정하면, 클라이언트는 (i) 미디어 스트림의 실제 시간 타임스탬프들과 (ii) 클라이언트의 내부 클럭에 따른 시간 사이에 동기 락을 확립하여, 컨텐츠 수정이 발생할 클라이언트 시간 포인트를 판정하는 프로세스를 수행할 수 있다. 예시적인 구현에서 이것을 용이하게 하기 위해, 클라이언트가 높은 레이트의 핑거프린팅으로 전환하도록 지시하는 것 이외에, 서버는 미디어 스트림의 다가오는 부분에 대한 실제 시간 타임스탬프된 레퍼런스 핑거프린트 세트를 클라이언트에게 제공할 수 있으며, 컨텐츠 수정이 시작될 미디어 스트림 내의 프레임에 대한 실제 시간 타임스탬프를 클라이언트에게 알릴 수 있다.
따라서 클라이언트는 서버로부터 타임스탬프된 레퍼런스 핑거프린트를 수신할 수 있으며 또한 높은 레이트의 쿼리 핑거프린트 생성을 시작할 수 있다. 또한 클라이언트는 상대적으로 높은 신뢰도로 하나 이상의 매칭 포인트들을 찾아내기 위해 높은 레이트의 쿼리 핑거프린트들을, 제공받은 레퍼런스 핑거프린트들과 비교할 수 있다. 이에 따라 클라이언트가 하나 이상의 매칭 포인트들을 검출한 경우, 클라이언트는 (i) 매칭 포인트의 실제 시간 타임스탬프와 (ii) 매칭 포인트의 클라이언트 시간 포인트를 모두 알게된다. 따라서, 클라이언트는 이제 미디어 스트림에서 매칭 프레임의 위치와 미디어 스트림의 해당 시간 포인트에서 클라이언트의 시간은 무엇이었는지를 모두 알고 있으므로, 클라이언트 자체적으로 (i) 미디어 스트림 내의 실제 시간 타임스탬프들과 (ii) 클라이언트의 내부 클럭에 따른 시간 사이의 동기 락을 효과적으로 확립하게 된다.
미디어 스트림에서 이 매칭 포인트를 발견하고 동기 락을 확립한 후, 클라이언트는 컨텐츠 수정이 발생할 클라이언트 시간 포인트를 쉽게 계산할 수 있다. 예를 들어, 컨텐츠 수정이 시작될 실제 시간 포인트에 대한 서버 제공 표시가 주어지면, 클라이언트는 동기 락에 의해 정의된 오프셋을 적용하여, 컨텐츠 수정이 발생할 관련 클라이언트 시간 포인트를 결정할 수 있다. 또는 클라이언트는 매칭 포인트의 실제 시간 포인트로부터 컨텐츠 수정이 시작될 표시된 실제 시간 포인트까지의 미디어 스트림 내의 듀레이션을 계산할 수 있으며, 클라이언트는 계산된 듀레이션을 매칭 포인트의 클라이언트 시간 포인트에 추가함으로써, 컨텐츠 수정이 시작될 관련 클라이언트 시간 포인트를 결정할 수 있다. 그 후에 클라이언트는 계산된 클라이언트 시간 포인트에서 컨텐츠 수정을 정확하게 시작하도록 작동할 수 있다.
이 대안적인 구현에서, 서버는 클라이언트에게 미디어 스트림의 다가오는 부분의 높은 레이트 레퍼런스 핑거프린트들을 제공할 수 있으며, 이에 따라 클라이언트가 높은 레이트 쿼리 핑거프린트들과 이러한 높은 레이트 레퍼런스 핑거프린트들을 쉽게 비교할 수 있게 된다. 대안적으로, 가능하게는 리소스 제약에 따라, 서버는 클라이언트가 클라이언트의 높은 레이트 쿼리 핑거프린트와 비교할 수 있도록 낮은 레이트의 레퍼런스 핑거프린트들을 클라이언트에게 제공할 수 있다. 그 후에 클라이언트는 결정된 매칭 포인트의 프레임 정확도를 높이고 동기 락의 신뢰도를 높이기 위해, 하나 이상의 낮은 레이트 레퍼런스 핑거프린트들과 가장 잘 매칭되는 하나 이상의 높은 레이트 쿼리 핑거프린트들을 결정할 수 있다.
또한 상기한 프로세스들은 (예를 들어, 현재 재생 및/또는 저장을 위해) 클라이언트에 의해 수신되고 있는 선형 브로드캐스트 피드 등의 실시간 분석과 관련하여 적용될 수 있으며, (예를 들어, 현재 재생 또는 전송을 위해) 데이터 스토리지 등으로부터 클라이언트에 의해 검색되고 있는 미디어 스트림의 분석과 관련하여 적용될 수도 있다. 다른 구현도 가능하다.
도 2는 상기 논의에 따라 컴퓨팅 시스템에 의해 수행될 수 있는 방법을 나타내는 흐름도이다. 이 도면에서는 방법의 동작들이 특정 순서로 수행되는 것으로 도시되어 있지만, 일부 동작들은 다른 동작들과 병렬적으로 수행될 수 있으며, 다른 수정도 가능하다.
도 2에 도시된 바와 같이, 블록 20에서, 컴퓨팅 시스템은 클라이언트에 의해 수신되고 있는 미디어 스트림을 나타내는 쿼리 핑거프린트들을 수신하며, 이 쿼리 핑거프린트들은 프레임 레이트에서 클라이언트에 의해 생성되고 있다. 블록 22에서, 컴퓨팅 시스템은 클라이언트에 의해 수신되고 있는 미디어 스트림이 기지의 미디어 스트림인 것으로 결정하며, 이 결정은 컴퓨팅 시스템에 의한 (i) 프레임 레이트에서 생성된 쿼리 핑거프린트들과 (ii) 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들의 비교를 기반으로 한다. 또한 블록 24에서, 이 결정에 응답하여, 컴퓨팅 시스템은 클라이언트로 하여금 컴퓨팅 시스템에 의해 수신되고 있는 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키게 한다.
블록 26에서, 컴퓨팅 시스템은 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 기초로서 사용하여 (i) 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 (ii) 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이의 동기 락을 확립한다. 또한 블록 28에서, 컴퓨팅 시스템은 확립된 동기 락을 기초로서 사용하여, 클라이언트에 의해 수신되고 있는 미디어 스트림에서 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정한다. 블록 30에서, 컴퓨팅 시스템은 결정된 클라이언트 시간 포인트에서, 클라이언트로 하여금 컨텐츠 수정을 수행하게 한다.
위에서 논의된 바와 같이, 이러한 컴퓨팅 시스템은 클라이언트와 네트워크 통신하는 서버에 의해 구현될 수 있다. 이 경우, 클라이언트가 컴퓨팅 시스템에 의해 수신되고 있는 쿼리 핑거프린트들을 생성하는 프레임 레이트를 클라이언트로 하여금 증가시키도록 하는 동작은, 클라이언트가 컴퓨팅 시스템에 의해 수신되고 있는 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 것에 의해 응답하도록 클라이언트가 구성되는 지시를 클라이언트에게 전송하는 것을 포함할 수 있다. 또한, 클라이언트로 하여금 결정된 클라이언트 시간 포인트에서 컨텐츠 수정을 수행하게 하는 것은, 결정된 클라이언트 시간 포인트를 나타내는 컨텐츠 수정 지시를 클라이언트에 전송하는 것을 포함할 수 있다.
위에서 추가로 논의된 바와 같이, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 기초로서 사용하여 실제 시간과 클라이언트 시간 사이에 동기 락을 확립하는 동작은, (a) 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 기지의 미디어 스트림의 레퍼런스 핑거프린트들, 예를 들어, 기지의 미디어 스트림의 추가 레퍼런스 핑거프린트들과 비교하는 것, (b) 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들과 기지의 미디어 스트림의 레퍼런스 핑거프린트들을 비교한 것에 기초하여, 쿼리 핑거프린트와 레퍼런스 핑거프린트 사이의 매칭을 정의하는 적어도 하나의 매칭 포인트를 식별하는 것, 및 (c) 쿼리 핑거프린트의 클라이언트 시간 타임스탬프와 레퍼런스 핑거프린트의 실제 시간 타임스탬프 사이의 맵핑에 기초하여 동기 락을 확립하는 것을 포함할 수 있다.
추가로, 위에서 논의된 바와 같이, 확립된 동기 락을 기초로서 사용하여 클라이언트에 의해 수신되고 있는 미디어 스트림에서 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 동작은, 확립된 동기 락을 기초로서 사용하여, 기지의 미디어 스트림에서 컨텐츠 수정을 수행해야 하는 미리 정의된 실제 시간 포인트를, 클라이언트에 의해 수신되고 있는 미디어 스트림에서 클라이언트가 컨텐츠 수정을 수행해야 하는 대응하는 클라이언트 시간 포인트에 맵핑하는 것을 포함할 수 있다.
또한, 위에서 논의된 바와 같이, 해당 컨텐츠 수정은 컨텐츠 대체를 포함할 수 있다. 예를 들어, 클라이언트에 의해 수신되고 있는 미디어 스트림은 광고 시퀀스를 정의하는 애드 포드를 포함할 수 있으며, 컨텐츠 수정은 시퀀스의 광고를 대체 미디어 컨텐츠로 대체하는 것을 포함할 수 있다. 추가로, 위에서 언급한 바와 같이, 이 방법은 또한 클라이언트에 의해 수신되고 있는 미디어 스트림으로 클라이언트가 대체할 대체 컨텐츠를 클라이언트에게 프로비저닝하는 것을 포함할 수 있다.
도 3은 본 개시에 따라 클라이언트 또는 하나 이상의 다른 엔티티들에 의해 수행될 수 있는 방법을 나타내는 다른 흐름도이다. 여기서, 방법의 동작들이 특정 순서로 수행되는 것으로 도시되어 있지만, 일부 동작들은 다른 동작들과 병렬적으로 수행될 수 있으며 다른 수정도 가능하다.
도 3에 도시된 바와 같이, 블록 32에서, 이 방법은 클라이언트에 의해 수신되고 있는 미디어 스트림을 나타내는 쿼리 핑거프린트들을 생성하는 단계를 포함하고, 이 쿼리 핑거프린트들은 프레임 레이트에서 생성된다. 블록 34에서, 이 방법은 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과의 비교에 기초하여, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는데 사용하기 위해, 생성된 쿼리 핑거프린트들을 제공하는 단계를 포함한다. 또한 블록 36에서, 이 방법은 클라이언트에 의해 수신되고 있는 미디어 스트림의 식별 이후에, 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 단계를 포함한다.
블록 38에서, 이 방법은 (i) 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 (ii) 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이의 동기 락을 확립하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 제공하는 단계를 포함한다. 또한 블록 40에서, 이 방법은 특정 클라이언트 시간 포인트에서, 클라이언트에 의해 수신되고 있는 미디어 스트림의 컨텐츠 수정을 수행하는 단계를 포함하며, 이 특정 클라이언트 시간 포인트는 확립된 동기 락에 기초하여 결정된다.
상기 논의에 따라, 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과의 비교에 기초하여 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는데 사용하기 위해, 생성된 쿼리 핑거프린트들을 제공하는 동작은, 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과의 비교에 기초하여, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하도록 서버에 의해 사용하기 위해, 생성된 쿼리 핑거프린트들을 서버에 전송하는 것을 포함할 수 있다. 결국, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한 후 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 동작은, 서버가 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한 후, 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 지시를 서버로부터 수신하고, 응답적으로(이 지시에 대한 응답으로) 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 것을 포함할 수 있다.
또한, 위에서 논의된 바와 같이, 실제 시간과 클라이언트 시간 사이에 동기 락을 확립하는데 사용하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 제공하는 동작은, 서버가 동기 락을 확립하는데 사용하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 서버에 전송하는 것을 포함할 수 있다. 또한 확립된 동기 락에 기초하여 결정된 특정 클라이언트 시간 포인트에서, 클라이언트에 의해 수신되고 있는 미디어 스트림의 컨텐츠 수정을 수행하는 동작은, (a) 클라이언트에 의해서, 확립된 동기 락에 기초하여 결정된 특정 클라이언트 시간 포인트에서 클라이언트가 미디어 스트림을 수정하도록 지시하는 컨텐츠 수정 지시를 서버로부터 수신하며 또한 (b) 클라이언트에 의해서, 특정 클라이언트 시간 포인트에서 미디어 스트림 수정을 수행하는 것을 포함할 수 있다.
또한, 실제 시간과 클라이언트 시간 사이의 동기 락을 확립하는데 사용하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 제공하는 동작은, 동기 락을 확립하도록 클라이언트의 프로그램 모듈에 의해 수행하기 위해, 쿼리 핑거프린트들을 클라이언트의 프로그램 모듈에 제공하는 것을 포함할 수 있다. 예를 들어, 클라이언트에는 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들에 기초하여, 동기 락을 확립하도록 동작하는 프로그램 모듈을 포함하는 프로그램 로직이 프로비저닝될 수 있으며, 이에 따라 이러한 쿼리 핑거프린트들이 해당 모듈에 제공됨으로써 동기 락의 확립을 용이하게 할 수 있다.
또한, 위에서 논의된 바와 같이, 이 방법은 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 기초로서 사용하여 실제 시간과 클라이언트 시간 사이의 동기 락을 확립하는 단계를 추가로 포함할 수 있다. 예를 들어, 이 방법은 (i) 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 비교하는 단계, (ii) 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들과 기지의 미디어 스트림의 레퍼런스 핑거프린트들의 비교에 기초하여, 쿼리 핑거프린트와 레퍼런스 핑거프린트 사이의 매칭을 정의하는 적어도 하나의 매칭 포인트를 식별하는 단계, 및 (iii) 쿼리 핑거프린트의 클라이언트 시간 타임스탬프와 레퍼런스 핑거프린트의 실제 시간 타임스탬프 사이의 맵핑에 기초하여, 동기 락을 확립하는 단계를 포함할 수 있다.
위에서 추가로 논의된 바와 같은 예시적인 구현에서, 이러한 동기 락의 확립은 클라이언트에 의해 수행될 수 있다. 이것을 용이하게 하기 위해, 이 방법은 클라이언트에 의해서 기지의 미디어 스트림의 레퍼런스 핑거프린트들을 수신하는 단계를 추가로 포함하며, 이에 따라 클라이언트가 증가된 레이트에서 생성된 쿼리 핑거프린트들과 기지의 미디어 스트림의 레퍼런스 핑거프린트들의 비교를 수행할 수 있다.
도 4는 전술한 다양한 동작들을 수행하도록 동작할 수 있는 예시적인 컴퓨팅 시스템의 블록도이다. 전술한 바와 같이, 이러한 컴퓨팅 시스템의 양태들은 다른 가능성들 중에서도, 미디어 클라이언트(12) 및/또는 서버(18)에 의해 구현될 수 있다. 따라서, 도 4의 블록도는 하나 이상의 이러한 엔티티들의 컴포넌트들을 나타낼 수 있다.
도 4에 도시된 바와 같이, 예시적인 컴퓨팅 시스템은 네트워크 통신 인터페이스(42), 처리 유닛(44) 및 비일시적 데이터 스토리지(46)를 포함하며, 이들 모두는 네트워크, 메시지 버스, 및/또는 하나 이상의 다른 연결 메커니즘들(48)을 통해 함께 커플링되거나 통신적으로 링크될 수 있다.
네트워크 통신 인터페이스(42)는 컴퓨팅 시스템이 송신 및 수신할 수 있게 한다. 네트워크 통신 인터페이스(42)는 다른 가능성들 중에서도, 연관된 회로 및 소프트웨어와 함께 유선 및/또는 무선 이더넷 인터페이스를 포함할 수 있다. 처리 유닛(44)은 하나 이상의 범용 프로세서들(예를 들어, 마이크로 프로세서들) 및/또는 하나 이상의 특수 프로세서들(예를 들어, 주문형 집적 회로 등)을 포함할 수 있다. 또한 비일시적 데이터 스토리지(46)는 자기, 광학 또는 플래시 스토리지와 같은 하나 이상의 휘발성 및/또는 비휘발성 저장 컴포넌트들을 포함할 수 있다.
도 4에 도시된 바와 같이, 비일시적 데이터 스토리지(46)는 컴퓨팅 시스템으로 하여금 전술한 바와 같은 동작들을 수행하게 하도록 처리 유닛에 의해 실행될 수 있는 프로그램 명령어들(50)을 저장(예를 들어, 보유, 인코딩 또는 구현 또는 포함)한다.
예로서, 이러한 동작들은 미디어 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는 것을 포함할 수 있으며, 이 식별은 (i) 미디어 스트림의 쿼리 핑거프린트들을 수신하는 것 - 이 쿼리 핑거프린트들은 프레임 레이트에서 미디어 클라이언트에 의해 생성됨 -, 및 (ii) 수신된 쿼리 핑거프린트들을 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 매칭하는 것을 포함할 수 있다. 여기서, 컴퓨팅 시스템이 미디어 클라이언트에 의해 적어도 부분적으로 구현되는 경우, 쿼리 핑거프린트들을 수신하는 동작은, 미디어 클라이언트의 핑거프린트 생성기 모듈에 의해 생성된 쿼리 핑거프린트들을 미디어 클라이언트의 프로그램 모듈로 수신하는 것을 포함할 수 있다(예를 들어, 쿼리 핑거프린트 생성을 수행하게 되는 미디어 클라이언트의 프로그램 모듈). 또한 컴퓨팅 시스템이 적어도 부분적으로 서버에 의해 구현되는 경우, 쿼리 핑거프린트들을 수신하는 동작은, 미디어 클라이언트로부터 서버로 전송되는 쿼리 핑거프린트들을 수신하는 것을 포함할 수 있다.
또한, 이 동작들은 미디어 스트림을 식별한 것에 응답하여, 미디어 클라이언트로 하여금 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키도록 지시하는 것을 포함할 수 있다. 예를 들어, 컴퓨팅 시스템이 미디어 클라이언트에 의해 적어도 부분적으로 구현되는 경우, 이것은 미디어 클라이언트의 핑거프린트 생성기 모듈이 프레임 레이트를 증가시키도록 지시하는 것을 포함할 수 있다. 또한 컴퓨팅 시스템이 서버에 의해 적어도 부분적으로 구현되는 경우, 이것은 미디어 클라이언트로 하여금 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키도록 하는 지시를 미디어 클라이언트에 전송하는 것을 포함할 수 있다.
또한, 이 동작들은 증가된 프레임 레이트에서 미디어 클라이언트에 의해 생성된 쿼리 핑거프린트들에 기초하여, 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 미디어 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이의 동기 락을 확립하는 것을 포함할 수 있다. 예를 들어, 이것은 (i) 증가된 프레임 레이트에서 미디어 클라이언트에 의해 생성된 쿼리 핑거프린트들을 수신하는 것(유사하게 미디어 클라이언트 및/또는 서버에 의해 수행됨), (ii) 증가된 프레임 레이트에서 미디어 클라이언트에 의해 생성된 쿼리 핑거프린트들과 기지의 미디어 스트림의 레퍼런스 핑거프린트들 사이의 적어도 하나의 매칭을 검출하는 것, 및 (iii) 적어도 하나의 매칭의 실제 시간 타임스탬프를, 적어도 하나의 매칭의 클라이언트 시간 타임스탬프와 상관시키는 것을 포함할 수 있다.
또한 이 동작들은 확립된 동기 락을 기초로서 사용하여, 미디어 클라이언트에 의해 수신되고 있는 미디어 스트림에서 미디어 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 것을 포함할 수 있다. 예를 들어, 이것은 확립된 동기 락을 기초로서 사용하여, 기지의 미디어 스트림에서 컨텐츠 수정이 수행되어야 하는 미리 정의된 실제 시간 포인트를, 미디어 클라이언트에 의해 수신되고 있는 미디어 스트림에서 미디어 클라이언트가 컨텐츠 수정을 수행해야 하는 대응하는 클라이언트 시간 포인트에 맵핑하는 것을 포함할 수 있다.
그 후, 이 동작들은 미디어 클라이언트로 하여금 결정된 클라이언트 시간 포인트에서, 컨텐츠 수정을 수행하게 하는 것을 포함할 수 있다. 예를 들어, 컴퓨팅 시스템이 미디어 클라이언트에 의해 적어도 부분적으로 구현되는 경우, 이것은 결정된 클라이언트 시간 포인트에서 컨텐츠 수정을 수행하도록 미디어 클라이언트의 컨텐츠 수정 모듈(예를 들면, 컨텐츠 수정을 수행하게 되는 미디어 클라이언트의 프로그램 모듈)에게 지시하는 것을 포함할 수 있다. 또한 컴퓨팅 시스템이 서버에 의해 적어도 부분적으로 구현되는 경우, 이것은 미디어 클라이언트로 하여금 결정된 클라이언트 시간 포인트에서 컨텐츠 수정을 수행하게 하도록 하는 지시를 미디어 클라이언트에 전송하는 것을 포함할 수 있다.
대안적으로 또는 추가적으로, 이 동작들은 클라이언트에 의해 수신되고 있는 미디어 스트림을 나타내는 쿼리 핑거프린트들을 생성하는 것을 포함할 수 있으며, 여기서 쿼리 핑거프린트들은 프레임 레이트에서 생성된다. 또한, 이 동작들은 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과의 비교에 기초하여, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는데 사용하기 위해, 생성된 쿼리 핑거프린트들을 제공하는 것을 포함할 수 있다. 또한 이 동작들은 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한 이후에, 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 것을 포함할 수 있다. 이 동작들은 (i) 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 (ii) 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이에 동기 락을 확립하는데 사용하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 제공하는 것을 포함할 수 있다. 또한 이 동작들은 특정 클라이언트 시간 포인트에서, 클라이언트에 의해 수신되고 있는 미디어 스트림의 컨텐츠 수정을 수행하는 것을 포함할 수 있으며, 여기서 이 특정 클라이언트 시간 포인트는 확립된 동기 락에 기초하여 결정된다.
위에서 설명된 다양한 특징들은 이 컴퓨팅 시스템의 컨텍스트에서 구현될 수 있으며, 그 반대의 경우도 가능하다. 예를 들어, 여기서도 또한, 컨텐츠 수정은 다른 가능성들 중에서, 애드 포드의 광고 대체와 같은 컨텐츠 대체를 포함할 수 있다. 또한, 미디어 스트림을 식별하는데 사용하기 위해, 생성된 쿼리 핑거프린트들을 제공하는 동작은, 미디어 스트림을 식별하도록 서버에 의해 사용하기 위해 생성된 쿼리 핑거프린트들을 서버에 전송하는 것을 포함할 수 있으며, 또한 실제 시간과 클라이언트 시간 사이에 동기 락을 확립하는데 사용하기 위해, 증가된 프레임 속도로 생성된 쿼리 핑거프린트들을 제공하는 동작은, 동기 락을 확립하도록 서버에 의해 사용하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 서버에 전송하는 것을 포함할 수 있다.
또한, 위에서 설명된 다양한 동작들은 비일시적 컴퓨터 판독 가능 매체에 저장된 프로그램 명령어들에 의해 정의될 수 있으며, 이 프로그램 명령어들은 동작들을 수행하기 위해 처리 유닛에 의해 실행될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체는 클라이언트, 서버 및/또는 다른 엔티티에서 제공되거나, 통합되거나 또는 구현될 수 있다. 또한, 이러한 동작들은 다른 형태를 취할 수도 있다.
예를 들어, 이 동작들은 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는 것을 포함할 수 있으며, 이 식별은 (i) 미디어 스트림의 쿼리 핑거프린트들을 수신하는 것 - 이 수신된 쿼리 핑거프린트들은 프레임 레이트에서 클라이언트에 의해 생성됨 - 및 (ii) 쿼리 핑거프린트들을 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 매칭시키는 것을 포함한다. 또한, 이 동작들은 미디어 스트림을 식별한 것에 응답하여, 클라이언트로 하여금 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키게 하는 것을 포함할 수 있다. 또한 이 동작들은 증가된 프레임 레이트에서 클라이언트에 의해 생성된 쿼리 핑거프린트들에 기초하여, 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이에 동기 락을 확립하는 것을 포함할 수 있다.
그 후에 이 동작들은 확립된 동기 락을 기초로서 사용하여 클라이언트에 의해 수신되고 있는 미디어 스트림에서 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 것을 포함할 수 있다. 또한 이 동작들은 결정된 클라이언트 시간 포인트에서, 클라이언트가 컨텐츠 수정을 수행하게 하는 것을 포함할 수 있다.
대안적으로 또는 추가적으로, 처리 유닛에 의해 실행 가능한 이 동작들은 클라이언트에 의해 수신되고 있는 미디어 스트림을 나타내는 쿼리 핑거프린트들을 생성하는 것을 포함할 수 있으며, 여기서 이 쿼리 핑거프린트들은 프레임 레이트에서 생성된다. 또한, 이 동작들은 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트들과의 비교에 기초하여, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는데 사용하기 위해, 생성된 쿼리 핑거프린트들을 제공하는 것을 포함할 수 있다. 또한 이 동작들은 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별한 이후에, 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 것을 포함할 수 있다. 이 동작들은 실제 시간과 클라이언트 시간 사이에 동기 락을 확립하는데 사용하기 위해, 증가된 프레임 레이트에서 생성된 쿼리 핑거프린트들을 제공하는 것을 포함할 수 있다. 또한 이 동작들은 특정 클라이언트 시간 포인트에서, 클라이언트에 의해 수신되고 있는 미디어 스트림의 컨텐츠 수정을 수행하는 것을 포함할 수 있으며, 여기서 이 특정 클라이언트 시간 포인트는 확립된 동기 락에 기초하여 결정된다.
위에서 설명된 다양한 특징들이 이 컨텍스트와 관련하여 구현될 수 있으며, 그 반대의 경우도 가능하다.
예를 들어, 서버의 일 구현에서, 클라이언트로 하여금 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키게 하는 동작은, 클라이언트가 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키는 것으로 응답하도록 클라이언트가 구성되는 지시를 클라이언트로 전송하기 위해 출력하는 것을 포함할 수 있으며, 또한 결정된 클라이언트 시간 포인트에서 클라이언트로 하여금 컨텐츠 수정을 수행하게 하는 동작은, 결정된 클라이언트 시간 포인트를 나타내는 컨텐츠 수정 지시를 클라이언트로 전송하기 위해 출력하는 것을 포함할 수 있다.
반면, 클라이언트의 일 구현에서, 클라이언트로 하여금 쿼리 핑거프린트들을 생성하는 프레임 레이트를 증가시키게 하는 동작은, 프레임 레이트를 증가시키도록 클라이언트의 핑거프린트 생성기 모듈에게 지시하는 것을 포함할 수 있고, 클라이언트로 하여금 결정된 클라이언트 시간 포인트에서 컨텐츠 수정을 수행하게 하는 동작은, 결정된 클라이언트 시간 포인트에서 컨텐츠 수정을 수행하도록 클라이언트의 컨텐츠 수정 모듈에게 지시하는 것을 포함할 수 있다.
또한, 여기서, 클라이언트에 의해 수신되고 있는 미디어 스트림은 광고 시퀀스를 정의하는 애드 포드를 포함할 수 있으며, 컨텐츠 수정은 시퀀스의 광고를 대체 미디어 컨텐츠로 대체하는 것을 포함할 수 있다.
예시적인 실시예들이 위에서 설명되었다. 그러나, 당업자는 본 발명의 진정한 범위 및 사상을 벗어나지 않고 이러한 실시예들에 대한 변경 및 수정이 이루어질 수 있음을 이해할 것이다.

Claims (20)

  1. 방법으로서,
    컴퓨팅 시스템에 의해서, 클라이언트에 의해 수신되고 있는 미디어 스트림을 나타내는 쿼리 핑거프린트(query fingerprint)들을 수신하는 단계 - 상기 쿼리 핑거프린트들은 프레임 레이트(frame rate)에서 상기 클라이언트에 의해 생성됨 -;
    상기 컴퓨팅 시스템에 의해서, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림이 기지의(known) 미디어 스트림인지 판정하는 단계 - 상기 판정은 상기 컴퓨팅 시스템에 의한 (i) 상기 프레임 레이트에서 생성된 상기 쿼리 핑거프린트들과 (ii) 상기 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트(reference fingerprint)들의 비교에 기초함 -;
    상기 판정에 응답하여, 상기 컴퓨팅 시스템에 의해서, 상기 클라이언트가 상기 컴퓨팅 시스템에 의해 수신되고 있는 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키도록 하는 단계;
    상기 컴퓨팅 시스템에 의해서, 상기 증가된 프레임 레이트에서 생성된 상기 쿼리 핑거프린트들을 기초로서 사용하여, (i) 상기 기지의 미디어 스트림 내의 타임라인(timeline)을 따라 정의된 실제 시간(true time)과 (ii) 상기 클라이언트의 클럭(clock)에 따라 정의된 클라이언트 시간(client time) 사이에 동기 락(synchronous lock)을 확립하는 단계;
    상기 컴퓨팅 시스템에 의해서, 상기 확립된 동기 락을 기초로서 사용하여, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 클라이언트가 컨텐츠 수정(content revision)을 수행해야 하는 클라이언트 시간 포인트(client-time point)를 결정하는 단계; 및
    상기 결정된 클라이언트 시간 포인트에서, 상기 클라이언트가 상기 컨텐츠 수정을 수행하도록 하는 단계
    를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 컴퓨팅 시스템은 상기 클라이언트와 네트워크 통신하는 서버에 의해 구현되는 방법.
  3. 제 2 항에 있어서,
    상기 클라이언트가 상기 컴퓨팅 시스템에 의해 수신되고 있는 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키도록 하는 단계는, 상기 클라이언트가 상기 컴퓨팅 시스템에 의해 수신되고 있는 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키는 것에 의해 응답하도록 구성된 지시를 상기 클라이언트에 전송하는 단계를 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 결정된 클라이언트 시간 포인트에서, 상기 클라이언트가 상기 컨텐츠 수정을 수행하도록 하는 단계는, 상기 결정된 클라이언트 시간 포인트를 나타내는 컨텐츠 수정 지시를 상기 클라이언트에게 전송하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 증가된 프레임 레이트에서 생성된 상기 쿼리 핑거프린트들을 기초로서 사용하여, (i) 상기 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 (ii) 상기 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이에 동기 락을 확립하는 단계는,
    상기 증가된 프레임 레이트에서 생성된 상기 쿼리 핑거프린트들을 상기 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 비교하는 단계;
    상기 증가된 프레임 레이트에서 생성된 상기 쿼리 핑거프린트들과 상기 기지의 미디어 스트림의 상기 레퍼런스 핑거프린트들의 비교에 기초하여, 쿼리 핑거프린트와 레퍼런스 핑거프린트 사이의 매칭을 정의하는 적어도 하나의 매칭 포인트를 식별하는 단계; 및
    상기 쿼리 핑거프린트의 클라이언트 시간 타임스탬프와 상기 레퍼런스 핑거프린트의 실제 시간 타임스탬프 사이의 맵핑에 기초하여 상기 동기 락을 확립하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 확립된 동기 락을 기초로서 사용하여, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 단계는, 상기 확립된 동기 락을 기초로서 사용하여, 상기 컨텐츠 수정이 상기 기지의 미디어 스트림에서 수행되어야 하는 미리 정의된 실제 시간 포인트를, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 클라이언트가 상기 컨텐츠 수정을 수행해야 하는 대응하는 클라이언트 시간 포인트로 맵핑하는 단계를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 컨텐츠 수정은 컨텐츠 대체를 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림은 광고들의 시퀀스를 정의하는 애드 포드(ad pod)를 포함하며, 상기 컨텐츠 수정은 상기 시퀀스의 광고를 대체 미디어 컨텐츠로 대체하는 것을 포함하는 방법.
  9. 제 7 항에 있어서,
    상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림으로 상기 클라이언트가 대체하는 대체 컨텐츠를 상기 클라이언트에 프로비저닝하는 단계를 더 포함하는 방법.
  10. 컴퓨팅 시스템으로서,
    송수신을 위한 네트워크 통신 인터페이스;
    처리 유닛;
    비일시적 데이터 스토리지; 및
    상기 비일시적 데이터 스토리지에 저장되고, 상기 컴퓨팅 시스템으로 하여금 동작들을 수행하게 하도록 상기 처리 유닛에 의해 실행 가능한 프로그램 명령어들을 포함하며, 상기 동작들은,
    미디어 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는 동작으로서, 상기 식별하는 동작은 (i) 상기 미디어 스트림의 쿼리 핑거프린트들을 수신하는 동작 - 상기 수신된 쿼리 핑거프린트들은 프레임 레이트에서 상기 미디어 클라이언트에 의해 생성됨 -, 및 (ii) 상기 수신된 쿼리 핑거프린트들을, 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 매칭하는 동작을 포함하는, 상기 식별하는 동작,
    상기 미디어 스트림을 식별한 것에 응답하여, 상기 미디어 클라이언트가 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키도록 하는 지시를 상기 미디어 클라이언트에 전송하는 동작,
    상기 증가된 프레임 레이트에서 상기 미디어 클라이언트에 의해 생성된 상기 쿼리 핑거프린트들에 기초하여, 상기 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 상기 미디어 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이에 동기 락을 확립하는 동작,
    상기 확립된 동기 락을 기초로서 사용하여, 상기 미디어 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 미디어 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 동작, 및
    상기 결정된 클라이언트 시간 포인트에서, 상기 미디어 클라이언트가 상기 컨텐츠 수정을 수행하도록 하는 지시를 상기 미디어 클라이언트에 전송하는 동작
    을 포함하는 컴퓨팅 시스템.
  11. 제 10 항에 있어서,
    상기 동기 락을 확립하는 동작은 (i) 상기 증가된 프레임 레이트에서 상기 미디어 클라이언트에 의해 생성된 상기 쿼리 핑거프린트들을 수신하는 동작, (ii) 상기 증가된 프레임 레이트에서 상기 미디어 클라이언트에 의해 생성된 상기 쿼리 핑거프린트들과 상기 기지의 미디어 스트림의 레퍼런스 핑거프린트들 사이의 적어도 하나의 매칭을 검출하는 동작, 및 (iii) 상기 적어도 하나의 매칭의 실제 시간 타임스탬프를, 상기 적어도 하나의 매칭의 클라이언트 시간 타임스탬프와 상관시키는 동작을 포함하는 컴퓨팅 시스템.
  12. 제 10 항에 있어서,
    상기 확립된 동기 락을 기초로서 사용하여, 상기 미디어 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 미디어 클라이언트가 상기 컨텐츠 수정을 수행해야 하는 상기 클라이언트 시간 포인트를 결정하는 동작은, 상기 확립된 동기 락을 기초로서 사용하여, 상기 컨텐츠 수정이 상기 기지의 미디어 스트림에서 수행되어야 하는 미리 정의된 실제 시간 포인트를, 상기 미디어 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 미디어 클라이언트가 상기 컨텐츠 수정을 수행해야 하는 대응하는 클라이언트 시간 포인트로 맵핑하는 동작을 포함하는 컴퓨팅 시스템.
  13. 제 10 항에 있어서,
    상기 컨텐츠 수정은 컨텐츠 대체를 포함하는 컴퓨팅 시스템.
  14. 제 13 항에 있어서,
    상기 미디어 클라이언트에 의해 수신되고 있는 상기 미디어 스트림은 광고들의 시퀀스를 정의하는 애드 포드를 포함하며, 상기 컨텐츠 수정은 상기 시퀀스의 광고를 대체 미디어 컨텐츠로 대체하는 것을 포함하는 컴퓨팅 시스템.
  15. 동작들을 수행하도록 처리 유닛에 의해 실행 가능한 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 매체로서, 상기 동작들은,
    클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하는 동작으로서, 상기 식별하는 동작은 (i) 상기 미디어 스트림의 쿼리 핑거프린트들을 수신하는 동작 - 상기 수신된 쿼리 핑거프린트들은 프레임 레이트에서 상기 클라이언트에 의해 생성됨 -, 및 (ii) 상기 쿼리 핑거프린트들을, 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 매칭하는 동작을 포함하는, 상기 식별하는 동작;
    상기 미디어 스트림을 식별한 것에 응답하여, 상기 클라이언트가 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키도록 하는 동작;
    상기 증가된 프레임 레이트에서 상기 클라이언트에 의해 생성된 상기 쿼리 핑거프린트들에 기초하여, 상기 기지의 미디어 스트림 내의 타임라인을 따라 정의된 실제 시간과 상기 클라이언트의 클럭에 따라 정의된 클라이언트 시간 사이에 동기 락을 확립하는 동작;
    상기 확립된 동기 락을 기초로서 사용하여, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 동작; 및
    상기 결정된 클라이언트 시간 포인트에서, 상기 클라이언트가 상기 컨텐츠 수정을 수행하도록 하는 동작
    을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  16. 제 15 항에 있어서,
    상기 클라이언트가 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키도록 하는 동작은, 상기 클라이언트가 상기 쿼리 핑거프린트들을 생성하는 상기 프레임 레이트를 증가시키는 것으로 응답하도록 상기 클라이언트가 구성되는 지시를 상기 클라이언트로 전송하기 위해 출력하는 동작을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  17. 제 15 항에 있어서,
    상기 결정된 클라이언트 시간 포인트에서, 상기 클라이언트가 상기 컨텐츠 수정을 수행하도록 하는 동작은, 상기 결정된 클라이언트 시간 포인트를 나타내는 컨텐츠 수정 지시를 상기 클라이언트로 전송하기 위해 출력하는 동작을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  18. 제 15 항에 있어서,
    상기 동기 락을 확립하는 동작은,
    상기 증가된 프레임 레이트에서 상기 클라이언트에 의해 생성된 상기 쿼리 핑거프린트들을 상기 기지의 미디어 스트림의 레퍼런스 핑거프린트들과 비교하는 동작;
    상기 증가된 프레임 레이트에서 생성된 상기 쿼리 핑거프린트들과 상기 기지의 미디어 스트림의 상기 레퍼런스 핑거프린트들의 비교에 기초하여, 쿼리 핑거프린트와 레퍼런스 핑거프린트 사이의 매칭을 정의하는 적어도 하나의 매칭 포인트를 식별하는 동작; 및
    상기 쿼리 핑거프린트의 클라이언트 시간 타임스탬프와 상기 레퍼런스 핑거프린트의 실제 시간 타임스탬프 사이의 맵핑에 기초하여 상기 동기 락을 확립하는 동작을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  19. 제 15 항에 있어서,
    상기 확립된 동기 락을 기초로서 사용하여, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 클라이언트가 컨텐츠 수정을 수행해야 하는 클라이언트 시간 포인트를 결정하는 동작은, 상기 확립된 동기 락을 기초로서 사용하여, 상기 컨텐츠 수정이 상기 기지의 미디어 스트림에서 수행되어야 하는 미리 정의된 실제 시간 포인트를, 상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림에서 상기 클라이언트가 상기 컨텐츠 수정을 수행해야 하는 대응하는 클라이언트 시간 포인트로 맵핑하는 동작을 포함하는 비일시적 컴퓨터 판독 가능 매체.
  20. 제 15 항에 있어서,
    상기 클라이언트에 의해 수신되고 있는 상기 미디어 스트림은 광고들의 시퀀스를 정의하는 애드 포드를 포함하며, 상기 컨텐츠 수정은 상기 시퀀스의 광고를 대체 미디어 컨텐츠로 대체하는 것을 포함하는 비일시적 컴퓨터 판독 가능 매체.
KR1020217004195A 2018-07-16 2019-06-07 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어 KR102266689B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862698629P 2018-07-16 2018-07-16
US62/698,629 2018-07-16
US16/166,561 US10506275B1 (en) 2018-07-16 2018-10-22 Dynamic control of fingerprinting rate to facilitate time-accurate revision of media content
US16/166,561 2018-10-22
PCT/US2019/035955 WO2020018189A1 (en) 2018-07-16 2019-06-07 Dynamic control of fingerprinting rate to facilitate time-accurate revision of media content

Publications (2)

Publication Number Publication Date
KR20210020166A KR20210020166A (ko) 2021-02-23
KR102266689B1 true KR102266689B1 (ko) 2021-06-22

Family

ID=68766124

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217004195A KR102266689B1 (ko) 2018-07-16 2019-06-07 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어
KR1020217004198A KR102266690B1 (ko) 2018-07-16 2019-06-07 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217004198A KR102266690B1 (ko) 2018-07-16 2019-06-07 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어

Country Status (7)

Country Link
US (6) US10506275B1 (ko)
EP (2) EP3824643B1 (ko)
JP (2) JP7053944B2 (ko)
KR (2) KR102266689B1 (ko)
CN (3) CN113038241B (ko)
TW (5) TWI736511B (ko)
WO (2) WO2020018189A1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200275168A1 (en) * 2019-02-22 2020-08-27 The Nielsen Company (Us), Llc Use of Watermarking to Trigger Fingerprint-Related Action
US10972794B2 (en) 2019-05-10 2021-04-06 The Nielsen Company (Us), Llc Content-modification system with transmission delay-based feature
US11373440B2 (en) 2019-05-10 2022-06-28 Roku, Inc. Content-modification system with fingerprint data match and mismatch detection feature
US11386696B2 (en) 2019-05-10 2022-07-12 Roku, Inc. Content-modification system with fingerprint data mismatch and responsive action feature
US10846506B1 (en) 2019-05-10 2020-11-24 The Nielsen Company (Us), Llc Content-modification system with geographic area-based feature
WO2020231927A1 (en) 2019-05-10 2020-11-19 The Nielsen Company (Us), Llc Content-modification system with responsive transmission of reference fingerprint data feature
US10796159B1 (en) 2019-05-10 2020-10-06 The Nielsen Company (Us), Llc Content-modification system with use of multiple fingerprint data types feature
CN113796093B (zh) * 2019-05-10 2023-09-29 六科股份有限公司 具有确定输入缓冲区切换延迟特征的内容修改系统
US11134305B2 (en) 2019-05-10 2021-09-28 Roku, Inc. Content-modification system with volume level adjustment feature
WO2020231813A1 (en) 2019-05-10 2020-11-19 The Nielsen Company (Us), Llc Content-modification system with responsive transmission of reference fingerprint data feature
US11354323B2 (en) 2019-05-10 2022-06-07 Roku, Inc. Content-modification system with geographic area-based feature
US12028571B2 (en) 2019-05-10 2024-07-02 Roku, Inc. Content-modification system with issue detection and responsive action feature
WO2020247922A1 (en) 2019-06-07 2020-12-10 The Nielsen Company (Us), Llc Content-modification system with system resource request feature
US11627347B2 (en) 2019-06-07 2023-04-11 Roku, Inc. Content-modification system with broadcast schedule utilization feature
US11109088B2 (en) 2019-06-07 2021-08-31 Roku, Inc. Content-modification system with unscheduling feature
US11418826B2 (en) 2019-06-07 2022-08-16 Roku, Inc. Content-modification system with supplemental content stitching feature
US11418835B2 (en) 2019-06-07 2022-08-16 Roku, Inc. Content-modification system with technical characteristic-based selection feature
US11336949B2 (en) 2019-06-07 2022-05-17 Roku, Inc. Content-modification system with testing and reporting feature
US11546647B2 (en) 2019-06-07 2023-01-03 Roku, Inc. Content-modification system with probability-based selection feature
US11134292B2 (en) 2019-06-07 2021-09-28 Roku, Inc. Content-modification system with overlay handling feature
US11245870B2 (en) 2019-06-18 2022-02-08 Roku, Inc. Content-modification system with determination of input-buffer switching delay feature
US11381864B2 (en) 2019-07-22 2022-07-05 Roku, Inc. Content-modification system with broadcast schedule utilization feature
US11297367B2 (en) 2019-07-22 2022-04-05 Roku, Inc. Content-modification system with broadcast schedule utilization feature
US11095944B2 (en) 2019-08-19 2021-08-17 Roku, Inc. Content-modification system with broadcast schedule utilization feature
US11233840B2 (en) * 2019-09-13 2022-01-25 Roku, Inc. Use of in-band metadata as basis to access reference fingerprints to facilitate content-related action
CN114503600A (zh) * 2019-10-31 2022-05-13 六科股份有限公司 具有延迟缓冲器特征的内容修改系统
US11343565B2 (en) * 2020-04-08 2022-05-24 Roku, Inc. Content-modification system with feature for detecting and responding to a content modification by a tuner device
US11758220B2 (en) 2020-10-29 2023-09-12 Roku, Inc. Dynamic replacement of objectionable content in linear content streams
US11917231B2 (en) 2020-10-29 2024-02-27 Roku, Inc. Real-time altering of supplemental content duration in view of duration of modifiable content segment, to facilitate dynamic content modification
US12028561B2 (en) 2020-10-29 2024-07-02 Roku, Inc. Advanced creation of slightly-different-duration versions of a supplemental content segment, and selection and use of an appropriate-duration version, to facilitate dynamic content modification
US11494803B2 (en) * 2021-02-11 2022-11-08 Roku, Inc. Content modification system with viewer behavior-based content delivery selection feature
US11388473B1 (en) 2021-02-11 2022-07-12 Roku, Inc. Content-modification system with feature for controlling viewer exposure to spoilers in advertisements
US11695989B2 (en) 2021-02-11 2023-07-04 Roku, Inc. Content-modification system with user experience analysis feature
US20220264171A1 (en) * 2021-02-12 2022-08-18 Roku, Inc. Use of In-Band Data to Facilitate Ad Harvesting for Dynamic Ad Replacement
US11962870B2 (en) 2021-02-17 2024-04-16 Roku, Inc. Content-modification system with quiet content detection feature
US11979624B1 (en) * 2022-12-06 2024-05-07 Sling TV L.L.C. Correcting ad markers in media content

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120117584A1 (en) 2010-11-01 2012-05-10 Gordon Donald F Method and System for Presenting Additional Content at a Media System

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030093790A1 (en) 2000-03-28 2003-05-15 Logan James D. Audio and video program recording, editing and playback systems using metadata
US20110213869A1 (en) 2000-09-25 2011-09-01 Yevgeny Korsunsky Processing data flows with a data flow processor
US20070192863A1 (en) 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
JP2004013440A (ja) * 2002-06-05 2004-01-15 Matsushita Electric Ind Co Ltd データ配信システム、データ配信システムにおけるデータ中継装置及びデータ中継方法、および当該データ中継方法をコンピュータに実行させるためのプログラム
US20040237102A1 (en) 2003-03-07 2004-11-25 Richard Konig Advertisement substitution
US20050177847A1 (en) 2003-03-07 2005-08-11 Richard Konig Determining channel associated with video stream
US7738704B2 (en) * 2003-03-07 2010-06-15 Technology, Patents And Licensing, Inc. Detecting known video entities utilizing fingerprints
US20050149968A1 (en) 2003-03-07 2005-07-07 Richard Konig Ending advertisement insertion
US7627808B2 (en) 2003-06-13 2009-12-01 Microsoft Corporation Computer media synchronization player
US8406607B2 (en) 2004-08-12 2013-03-26 Gracenote, Inc. Selection of content from a stream of video or audio data
US20090254392A1 (en) 2006-03-30 2009-10-08 Zander Van S Method and system for enterprise network access control and management for government and corporate entities
RU2009100847A (ru) * 2006-06-13 2010-07-20 Конинклейке Филипс Электроникс Н.В. (Nl) Идентификационная метка, устройство, способ для идентификации и синхронизации видеоданных
US8059646B2 (en) 2006-07-11 2011-11-15 Napo Enterprises, Llc System and method for identifying music content in a P2P real time recommendation network
US9367744B2 (en) * 2007-02-27 2016-06-14 Vobile, Inc Systems and methods of fingerprinting and identifying media contents
WO2008116137A2 (en) * 2007-03-22 2008-09-25 Nielsen Media Research, Inc. Digital rights management and audience measurement systems and methods
US20080274687A1 (en) 2007-05-02 2008-11-06 Roberts Dale T Dynamic mixed media package
JP2010532943A (ja) 2007-07-06 2010-10-14 エーエムビーエックス ユーケー リミテッド マルチメディア・システムにおいてコンテンツ・ストリームと一つまたは複数の感覚効果を出力するためのスクリプトを同期させる方法
US9955122B2 (en) * 2008-04-11 2018-04-24 Mobitv, Inc. Dynamic advertisement stream replacement
WO2009140819A1 (en) * 2008-05-21 2009-11-26 Yuvad Technologies Co., Ltd. A system for facilitating the search of video content
US9299364B1 (en) * 2008-06-18 2016-03-29 Gracenote, Inc. Audio content fingerprinting based on two-dimensional constant Q-factor transform representation and robust audio identification for time-aligned applications
US9510044B1 (en) 2008-06-18 2016-11-29 Gracenote, Inc. TV content segmentation, categorization and identification and time-aligned applications
US9313359B1 (en) * 2011-04-26 2016-04-12 Gracenote, Inc. Media content identification on mobile devices
US10631068B2 (en) * 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US9519772B2 (en) * 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9015741B2 (en) 2009-04-17 2015-04-21 Gracenote, Inc. Method and system for remotely controlling consumer electronic devices
US20110063503A1 (en) * 2009-07-06 2011-03-17 Brand Steven M Synchronizing secondary content to a multimedia presentation
KR101071728B1 (ko) * 2009-10-01 2011-10-11 한국과학기술원 핑거 프린팅 시스템의 정합 과정에서 사용하는 디스턴스 메트릭을 학습을 통해서 결정하는 방법
CA2943957C (en) * 2010-05-04 2017-10-03 Avery Li-Chun Wang Methods and systems for synchronizing media
US8694533B2 (en) * 2010-05-19 2014-04-08 Google Inc. Presenting mobile content based on programming context
KR101181732B1 (ko) 2010-11-22 2012-09-19 (주)엔써즈 동영상 핑거프린트 정보에 기반한 동영상 마크업 데이터 생성 방법 및 이를 이용한 정보 제공 방법 및 시스템
EP2659663B1 (en) * 2010-12-29 2016-04-20 Telecom Italia S.p.A. Method and system for syncronizing electronic program guides
KR101211098B1 (ko) * 2011-04-25 2012-12-11 (주)엔써즈 클라이언트 단말기측으로 네트워크를 통해 방송에 포함된 광고와 연관된 정보를 제공하는 시스템 및 방법
KR101893151B1 (ko) * 2011-08-21 2018-08-30 엘지전자 주식회사 영상 표시 장치, 단말 장치 및 그 동작 방법
US8805827B2 (en) * 2011-08-23 2014-08-12 Dialogic (Us) Inc. Content identification using fingerprint matching
WO2013088822A1 (ja) * 2011-12-16 2013-06-20 株式会社ソニー・コンピュータエンタテインメント 放送番組処理装置、放送番組処理方法、放送局装置、情報配信サーバ、プログラム及び情報記憶媒体
US8832723B2 (en) 2012-02-07 2014-09-09 Turner Broadcasting System, Inc. Method and system for a synchronous event manager for automatic content recognition
EP2800392A4 (en) * 2012-02-10 2015-09-09 Lg Electronics Inc IMAGE DISPLAY DEVICE AND OPERATING METHOD THEREFOR
US9703932B2 (en) * 2012-04-30 2017-07-11 Excalibur Ip, Llc Continuous content identification of broadcast content
US9553756B2 (en) * 2012-06-01 2017-01-24 Koninklijke Kpn N.V. Fingerprint-based inter-destination media synchronization
US20140106708A1 (en) 2012-10-15 2014-04-17 Juked, Inc. Continuous monitoring of data exposure and providing service related thereto
US9794642B2 (en) * 2013-01-07 2017-10-17 Gracenote, Inc. Inserting advertisements into video content
US9323840B2 (en) 2013-01-07 2016-04-26 Gracenote, Inc. Video fingerprinting
US9635417B2 (en) * 2013-04-05 2017-04-25 Dolby Laboratories Licensing Corporation Acquisition, recovery, and matching of unique information from file-based media for automated file detection
EP2989807A4 (en) * 2013-05-03 2016-11-09 Digimarc Corp WATERMARK MARKING AND SIGNAL RECOGNITION FOR ADMINISTERING AND DIVISION OF INTEGRATED CONTENT, METADATA RECORDING AND RELATED ARRANGEMENTS
EP3047653B1 (en) 2013-09-20 2020-05-06 Koninklijke KPN N.V. Correlating timeline information between media streams
TW201514887A (zh) * 2013-10-15 2015-04-16 Utechzone Co Ltd 影像信息的播放系統及方法
US20160248526A1 (en) * 2014-01-27 2016-08-25 Yangbin Wang Systems and methods of fingerprinting and identifying realtime broadcasting signals
KR20150104358A (ko) * 2014-03-05 2015-09-15 삼성전자주식회사 서버 장치 및 그의 핑거프린트 전송 방법, 그리고 방송수신장치
FR3018983B1 (fr) 2014-03-20 2016-05-06 Viaccess Sa Procede et dispositif d'identification d'un contenu en cours de visualisation sur un ecran
US10825056B1 (en) * 2014-04-17 2020-11-03 The Nielsen Company (Us), Llc Client-side video advertisement replacement using automatic content recognition
CN106233746B (zh) * 2014-08-21 2019-07-09 松下知识产权经营株式会社 内容辨识装置、内容辨识方法以及记录介质
WO2016068760A1 (en) * 2014-10-27 2016-05-06 Telefonaktiebolaget L M Ericsson (Publ) Video stream synchronization
KR102217191B1 (ko) * 2014-11-05 2021-02-18 삼성전자주식회사 단말 장치 및 그 정보 제공 방법
CN111757189B (zh) * 2014-12-01 2022-07-15 构造数据有限责任公司 用于连续介质片段识别的系统和方法
CN105808182B (zh) 2015-01-15 2019-09-17 财团法人工业技术研究院 显示控制方法及系统、广告破口判断装置、影音处理装置
US20160316261A1 (en) * 2015-04-23 2016-10-27 Sorenson Media, Inc. Automatic content recognition fingerprint sequence matching
US9516377B1 (en) * 2015-06-12 2016-12-06 Sorenson Media, Inc. Detecting channel change in automatic content recognition fingerprint matching
US9743154B2 (en) * 2015-09-09 2017-08-22 Sorenson Media, Inc Dynamic video advertisement replacement
KR102560635B1 (ko) * 2015-12-28 2023-07-28 삼성전자주식회사 컨텐트 인식 장치 및 그 동작 방법
JP6984083B2 (ja) * 2016-01-06 2021-12-17 テレビジョン・インサイツ、インコーポレイテッド 視聴者エンゲージメントを評価するためのシステム
US10063918B2 (en) * 2016-02-29 2018-08-28 Gracenote, Inc. Media channel identification with multi-match detection and disambiguation based on single-match
WO2017151443A1 (en) * 2016-02-29 2017-09-08 Myteamcalls Llc Systems and methods for customized live-streaming commentary
CN107529071B (zh) * 2016-06-22 2019-03-01 腾讯科技(深圳)有限公司 一种视频数据处理方法以及装置
KR102410473B1 (ko) * 2016-08-01 2022-06-17 삼성전자주식회사 전자 장치 및 전자 장치의 동작 방법
US10616631B2 (en) 2016-08-01 2020-04-07 Samsung Electronics Co., Ltd. Electronic apparatus and method of operating the same
GB2599877B (en) 2016-08-24 2022-10-12 Grass Valley Ltd Comparing video sequences using fingerprints
KR20180028588A (ko) 2016-09-08 2018-03-19 주식회사 이타기술 입력 시점이 다른 동영상 데이터의 장면기반 핑거프린트를 이용한 적응적 프레임 동기화 방법 및 장치
US10659509B2 (en) * 2016-12-06 2020-05-19 Google Llc Detecting similar live streams ingested ahead of the reference content

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120117584A1 (en) 2010-11-01 2012-05-10 Gordon Donald F Method and System for Presenting Additional Content at a Media System

Also Published As

Publication number Publication date
KR102266690B1 (ko) 2021-06-22
KR20210020167A (ko) 2021-02-23
CN113038241B (zh) 2024-01-26
EP3824642B1 (en) 2024-01-03
JP2021524714A (ja) 2021-09-13
US10979758B2 (en) 2021-04-13
CN110959293B (zh) 2021-05-18
TWI736511B (zh) 2021-08-11
WO2020018189A1 (en) 2020-01-23
EP3824643B1 (en) 2024-01-03
US20200186860A1 (en) 2020-06-11
CN113038241A (zh) 2021-06-25
TWI716022B (zh) 2021-01-11
TW202007179A (zh) 2020-02-01
US11503362B2 (en) 2022-11-15
US10623800B2 (en) 2020-04-14
TW202007180A (zh) 2020-02-01
EP3824643A4 (en) 2022-04-20
US20210195276A1 (en) 2021-06-24
CN111183650B (zh) 2021-10-29
WO2020018190A1 (en) 2020-01-23
KR20210020166A (ko) 2021-02-23
US10506275B1 (en) 2019-12-10
US10992981B2 (en) 2021-04-27
US20200021877A1 (en) 2020-01-16
EP3824643A1 (en) 2021-05-26
EP3824642A4 (en) 2022-04-20
JP2021524713A (ja) 2021-09-13
US11290770B2 (en) 2022-03-29
TWI701947B (zh) 2020-08-11
TW202130191A (zh) 2021-08-01
EP3824642A1 (en) 2021-05-26
JP7053943B2 (ja) 2022-04-12
TWI762117B (zh) 2022-04-21
TW202044845A (zh) 2020-12-01
CN111183650A (zh) 2020-05-19
US20210219011A1 (en) 2021-07-15
JP7053944B2 (ja) 2022-04-12
US20200068248A1 (en) 2020-02-27
TWI725906B (zh) 2021-04-21
CN110959293A (zh) 2020-04-03
TW202126051A (zh) 2021-07-01

Similar Documents

Publication Publication Date Title
KR102266689B1 (ko) 시간적으로 정확한 미디어 컨텐츠 수정을 용이하게 하기 위한 핑거프린팅 레이트의 동적 제어
KR102484054B1 (ko) 프레임적으로 정확한 컨텐츠 수정을 용이하게 하기 위해, 낮은 레이트 핑거프린팅을 사용하는 보간을 기반으로 하는 시간 맵핑의 확립 및 사용
TWI760981B (zh) 在媒體串流播放之間進行轉換的同時動態播放轉換訊框

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant