KR102469142B1 - 미디어 스트림 재생들 사이를 트랜지션하는 동안 트랜지션 프레임들의 동적 재생 - Google Patents

미디어 스트림 재생들 사이를 트랜지션하는 동안 트랜지션 프레임들의 동적 재생 Download PDF

Info

Publication number
KR102469142B1
KR102469142B1 KR1020217006327A KR20217006327A KR102469142B1 KR 102469142 B1 KR102469142 B1 KR 102469142B1 KR 1020217006327 A KR1020217006327 A KR 1020217006327A KR 20217006327 A KR20217006327 A KR 20217006327A KR 102469142 B1 KR102469142 B1 KR 102469142B1
Authority
KR
South Korea
Prior art keywords
transition
media stream
client
frames
stream
Prior art date
Application number
KR1020217006327A
Other languages
English (en)
Other versions
KR20210029829A (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 KR20210029829A publication Critical patent/KR20210029829A/ko
Application granted granted Critical
Publication of KR102469142B1 publication Critical patent/KR102469142B1/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/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/835Generation of protective data, e.g. certificates
    • H04N21/8352Generation of protective data, e.g. certificates involving content or source identification data, e.g. Unique Material Identifier [UMID]
    • 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/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/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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/23605Creation or processing of packetized elementary streams [PES]
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26208Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
    • H04N21/26216Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving the channel capacity, e.g. network bandwidth
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26208Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints
    • H04N21/26241Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists the scheduling operation being performed under constraints involving the time of distribution, e.g. the best time of the day for inserting an advertisement or airing a children program
    • 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/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2668Creating a channel for a dedicated end-user group, e.g. insertion of targeted commercials based on end-user profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/812Monomedia components thereof involving advertisement data
    • 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/835Generation of protective data, e.g. certificates
    • H04N21/8358Generation of protective data, e.g. certificates involving watermark
    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

장치가 제 1 미디어 스트림을 재생하고 있을 때, 장치는 제 1 미디어 스트림 대신에 제 2 미디어 스트림의 재생을 시작하기 위한 타겟 시간을 결정한다. 그 후에 장치는 최소 예상 트랜지션 듀레이션 내지 최대 예상 트랜지션 듀레이션 만큼 걸릴 것으로 예상되는 스트림 트랜지션 프로세스를 시작하고, 제 2 미디어 스트림의 재생이 적시에 시작되도록 하기 위해, 결정된 타겟 시간보다 최대 예상 트랜지션 듀레이션만큼 이전에 트랜지션 프로세스를 시작한다. 또한, 시작 후 최소 예상 트랜지션 듀레이션에서 시작 후 최대 예상 트랜지션 듀레이션까지 확장되는 불확실성 기간 동안, 장치는 트랜지션 프레임 시퀀스를 생성하고 재생함으로써 제 1 미디어 스트림에서 제 2 미디어 스트림으로의 트랜지션 마스킹을 지원한다.

Description

미디어 스트림 재생들 사이를 트랜지션하는 동안 트랜지션 프레임들의 동적 재생
관련 출원에 대한 참조
본 출원은 2018년 11월 7일에 출원된 미국 특허 출원 제16/183,185호 및 2018년 8월 17일에 출원된 미국 가특허 출원 제62/765,161호에 대한 우선권을 주장하며, 이 문헌들 각각은 전체가 본 명세서에 참조로서 포함된다.
본 출원은 또한 2018년 11월 7일에 출원된 미국 특허 출원 제16/183,266호와 관련된 것이며, 이 문헌 전체가 본 명세서에 참조로서 포함된다.
일반적인 미디어 클라이언트는 비디오 및/또는 오디오 컨텐츠와 같은 미디어 컨텐츠를 나타내는 아날로그 또는 디지털 미디어 스트림을 수신 및 재생(예를 들어, 재생을 위해 출력)하고, 디스플레이 스크린 및/또는 오디오 스피커와 같은 사용자 인터페이스에서 미디어 컨텐츠를 출력하고/하거나 스트림을 전달하도록 동작한다. 이러한 클라이언트들의 예들로는 텔레비전, 컴퓨터 모니터, 프로젝션 시스템, 라우드 스피커, 헤드폰, 셋탑 박스(예를 들면, 케이블 또는 위성 TV 수신기), 디지털 비디오 레코더, 라디오, 개인용 컴퓨터, 모바일 통신 장치, 게임 콘솔, 스트리밍 미디어 플레이어 등을 포함한다.
예를 들어, 미디어 클라이언트는 미디어 스트림(예를 들어, 무선 방송 스트림, 셋탑 박스에서 출력되는 미디어 스트림, 디지털 저장 매체에서 재생되는 미디어 스트림, 인터넷 스트림 또는 다른 이러한 스트림)을 수신할 수 있고 해당 스트림의 미디어 컨텐츠를 사용자에게 프레젠테이션할 수 있는 텔레비전일 수 있다. 다른 예로서, 미디어 클라이언트는 다중 채널 비디오 프로그램 디스트리뷰터 및/또는 데이터 스토리지에서 방송 스트림을 수신할 수 있으며, 재생을 위해 HDMI(High-Definition Multimedia Interface) 케이블 또는 기타 인터페이스를 통해 해당 스트림의 미디어 컨텐츠를 텔레비전 및/또는 오디오/비디오 수신기로 출력할 수 있는, 셋탑 박스 또는 디지털 비디오 또는 오디오 레코더일 수 있다. 또 다른 예로서 미디어 클라이언트는 라디오, 컴퓨터 또는 기타 수신기 또는 오디오 저장 장치로부터 오디오 스트림을 수신하고 해당 스트림의 오디오 컨텐츠를 사용자에게 프레젠테이션할 수 있는, 라우드 스피커 또는 헤드폰일 수 있다. 다른 많은 예도 가능하다.
미디어 클라이언트가 미디어 스트림을 재생할 때, 미디어 클라이언트가 스트림의 미디어 컨텐츠 일부를 대체하는 것이 특정 상황에서 유용할 수 있다. 예를 들어, 클라이언트가 광고 또는 미디어 컨텐츠의 다른 세그먼트를 대체 광고 또는 다른 대체 컨텐츠로 동적으로 대체함으로써, 컨텐츠가 사용자에게 프레젠테이션될 때, 원래 포함된 광고 대신에 사용자가 대체 광고를 수신할 수 있도록 하는 것이 유용할 수 있다.
또한, 클라이언트가 미디어 스트림 내의 특정 시간 포인트에서 그러한 컨텐츠 대체를 수행하는 것이 바람직할 수 있다. 예를 들어, 클라이언트가 기존 광고를 대체 광고로 동적으로 대체해야 하는 경우, 클라이언트는 기존 광고가 시작될 미디어 스트림 내의 일 시점에서 대체 광고를 배치하는 것이 바람직할 수 있다.
특히, 해당 미디어 스트림이 비디오 프레임 및/또는 오디오 프레임과 같은 프레임 시퀀스를 정의할 수 있으며, 클라이언트는 미디어 스트림의 특정 프레임에서 시작하는 컨텐츠 대체를 수행하는 것이 바람직할 수 있다. 예를 들어, 광고 대체의 경우, 클라이언트는 기존 광고의 첫 번째 프레임에서 시작하는 기존 광고 대신에 대체 광고를 삽입하는 것이 바람직할 수 있다.
이러한 컨텐츠 대체를 용이하게 하기 위해, 클라이언트는 컨텐츠 대체를 시작해야 하는 미디어 스트림의 특정 시간 포인트를 학습할 수 있고, 클라이언트는 그 표시된 시간 포인트에서 재생을 시작해야 하는 대체 컨텐츠를 학습할 수 있다. 원하는 컨텐츠 전환 시간 포인트에서, 클라이언트는 기존 미디어 스트림 재생에서 대체 미디어 스트림으로서의 대체 컨텐츠 재생으로 트랜지션할 수 있다. 또한, 클라이언트가 대체 미디어 스트림 재생을 마치면, 클라이언트는 (예를 들어, 진행 중인) 원래의 미디어 스트림 재생으로 다시 트랜지션할 수 있다.
이 프로세스의 기술적 어려움 중 하나는 클라이언트가 제 1 스트림을 재생하는 것에서 제 2 스트림을 재생하는 것으로 트랜지션하는데 시간이 걸릴 수 있다는 것이다(예를 들어, 컨텐츠 대체를 시작하거나 또는 컨텐츠 대체가 끝날 때 원래의 스트림으로 다시 전환함에 있어서). 이것은 클라이언트가 제 2 스트림을 재생하기 시작하기 전에 여러 처리 집약적 및 메모리 집약적 단계들에 참여해야 할 수 있기 때문일 수 있다. 예를 들어, 클라이언트가 캐시를 지우고, 제 2 스트림의 컨텐츠의 적어도 초기 부분을 수신 및 디코딩하고, 렌더링을 위해 디코딩된 컨텐츠로 메모리 버퍼를 채울 필요가 있을 수 있다.
실제에 있어서, 이 스트림 트랜지션 프로세스는 한 프레임 이상의 시간이 소요될 수 있다. 예를 들어, 해당 미디어가 초당 30 프레임의 프레임 레이트의 비디오인 경우, 각 프레임은 1/30 초, 즉 약 33.3 밀리 초(ms)에 걸쳐 있다. 그러나 하나의 비디오 스트림에서 다른 것으로 트랜지션하는 작업은 수백 밀리 초 정도 걸릴 수 있으며, 따라서 수많은 비디오 프레임에 걸치는 시간이 소요된다.
클라이언트가 원하는 컨텐츠 전환 시간 포인트보다 충분히 앞서 스트림 트랜지션 프로세스를 시작하는 것에 의하여 이 타이밍을 처리할 수 있지만, 트랜지션 프로세스에 걸리는 실제 시간은 다양한 이유로 예측할 수 없다. 따라서, 클라이언트가 트랜지션 프로세스를 얼마나 일찍 시작해야 하는지 명확하지 않을 수 있다.
불행하게도, 클라이언트가 트랜지션 프로세스를 너무 일찍 시작하면, 클라이언트가 원하는 컨텐츠 전환 시간 포인트 이전에 프로세스를 완료할 수 있으며, 이로 인해 제 2 스트림의 재생이 너무 일찍 시작될 수 있으므로 사용자 경험 문제가 발생할 수 있다. 그리고 클라이언트가 전환 프로세스를 너무 늦게 시작하면, 클라이언트가 원하는 컨텐츠 전환 시간 포인트까지 프로세스를 완료하지 못할 수 있으며, 이로 인해 제 2 스트림의 재생이 너무 늦게 시작될 수 있으므로 마찬가지로 사용자 경험 문제가 발생할 수 있다.
이 문제를 해결하기 위해, 본 개시에 따라, 클라이언트가 원하는 컨텐츠 전환 시간 포인트에서 제 2 스트림의 재생 시작을 용이하게 하기 위해 충분히 일찍 시작하도록 스트림 트랜지션 프로세스를 구성할 수 있으며, 클라이언트는 트랜지션을 마스킹하고 향상된 사용자 경험을 제공하기 위해, 적절하거나 원하는 페이딩과 함께, 불확실성 기간의 듀레이션 동안 트랜지션 프레임들을 전략적으로 도입한다.
원하는 컨텐츠 전환 시간 포인트에서 제 2 스트림의 재생 시작을 용이하게 하기 위해, 클라이언트는 (예를 들어, 과거 경험 또는 테스트로부터, 또는 사전 프로비저닝된 설정으로부터) 최대 예상 트랜지션 듀레이션이 무엇일 수 있는지 결정할 수 있으며, 또한 클라이언트는 원하는 컨텐츠 전환 시간 포인트 이전의 결정된 최대 예상 트랜지션 듀레이션인 시간 포인트 TSTART에서 스트림 트랜지션 프로세스를 시작할 수 있다. 이 시간 포인트에서 시작하여, 클라이언트는 원하는 컨텐츠 전환 시간 포인트인 시간 포인트 TMAX까지 스트림 트랜지션 프로세스를 최적으로 완료해야 한다.
또한, 클라이언트는 최소 예상 트랜지션 듀레이션이 무엇일 수 있는지 (마찬가지로 과거 경험 또는 테스트 또는 사전 프로비저닝된 설정으로부터) 결정할 수 있으며, 이에 따라 클라이언트는 스트림 트랜지션 프로세스를 시작하게 되는 최소 예상 트랜지션 듀레이션인 시간 포인트 TMIN를 식별할 수 있다. 이것을 감안할 때, TMIN에서 TMAX까지 확장되는 시간 범위는 클라이언트가 해당 범위 내에서 언제든지 스트림 트랜지션 프로세스를 완료할 수 있으므로, 불확실성 기간으로 간주될 수 있다.
스트림들 사이의 트랜지션을 마스킹하는 것을 돕기 위해, 클라이언트는 불확실성 기간, 즉 TMIN 내지 TMAX의 듀레이션 동안 트랜지션 프레임을 재생할 수 있다. 이러한 트랜지션 프레임들은 해당 미디어 유형에 따라 다양한 형태를 취할 수 있다. 예를 들어, 미디어가 비디오를 포함하는 경우, 트랜지션 프레임들은 블랙 프레임(black frame)들로 구성될 수 있다. 반면, 미디어가 오디오를 포함하는 경우, 트랜지션 프레임은 무음 프레임(silent frame)들로 구성될 수 있다. 또한, 클라이언트는 제 1 스트림에서 트랜지션 프레임들로의 페이딩(fading)을 추가한 다음 트랜지션 프레임들에서 제 2 스트림으로 페이딩을 추가할 수 있다.
따라서 이 프로세스는 위에서 설명된 관련 사용자 경험 문제를 최소화하거나 피하면서 하나의 스트림에서 다른 스트림으로의 시간적으로 정확한 전환을 용이하게 하는데 도움이 될 수 있다.
이들 및 다른 양태들, 이점들 및 대안들은 첨부 도면을 적절하게 참조하여 다음의 상세한 설명을 읽음으로써 당업자에게 명백해질 것이다. 또한, 이 요약 및 아래에서 제공되는 설명은 제한이 아닌 예로서 본 발명을 설명하기 위한 것임을 이해해야 한다.
도 1은 개시된 특징들이 구현될 수 있는 시스템의 간략 블록도이다.
도 2는 본 개시에 따른 트랜지션 프레임들의 추가와 함께 스트림-트랜지션을 나타내는 도면이다.
도 3은 본 개시에 따라 수행될 수 있는 방법을 도시하는 흐름도이다.
도 4는 본 개시에 따라 수행될 수 있는 방법을 도시하는 다른 흐름도이다.
도 5는 본 개시에 따라 동작할 수 있는 예시적인 미디어 클라이언트의 구성 요소들을 도시하는 간략 블록도이다.
도면들을 참조하면, 도 1은 다양한 개시된 원리들이 적용될 수 있는 예시적인 시스템의 간략 블록도이다. 그러나, 본 명세서에서 설명되는 이러한 구성과 다른 구성 및 처리들은 다양한 다른 형태를 취할 수 있음을 이해할 것이다. 예를 들어, 요소들 및 동작들은 재정렬, 분산, 복제, 결합, 생략, 추가 또는 수정될 수 있다. 또한, 하나 이상의 엔티티에 의해 수행되는 것으로 여기에서 설명되는 기능들은 하드웨어, 펌웨어, 및/또는 소프트웨어를 통해(예를 들어 프로그램 명령어 등을 실행하는 하나 이상의 처리 유닛들에 의해) 그러한 엔티티들에 의해 및/또는 이들을 대신하여 구현될 수 있음을 이해할 것이다.
도 1에 도시된 바와 같이, 본 예시적인 시스템은 미디어 소스(14)로부터 실시간으로 미디어 스트림을 수신하도록 구성되는 미디어 클라이언트(12)를 포함한다.
미디어 클라이언트(12)는 미디어 소스(14)로부터 비디오 및/또는 오디오 컨텐츠와 같은 미디어 컨텐츠를 나타내는 아날로그 또는 디지털 미디어 스트림을 수신하고, 미디어 컨텐츠를 출력하며, 및/또는 디스플레이 스크린 및/또는 오디오 스피커와 같은 사용자 인터페이스에서 컨텐츠의 프레젠테이션을 위해 스트림을 포워딩하도록 전술한 바와 같이 동작하는 것으로 구성될 수 있다. 미디어 클라이언트는 다른 가능성들 중에서, 위에서 설명한 형태들 중 하나를 취할 수 있다.
미디어 소스(14)는 또한 미디어 클라이언트(12)의 형태에 따라 다양한 형태를 취할 수 있다. 예를 들어, 미디어 클라이언트(12)가 텔레비전인 경우, 미디어 소스(14)는 텔레비전에 의한 프레젠테이션을 위해 선택된 미디어 스트림을 출력하도록 구성된, 로컬 셋탑 박스(예를 들어, 케이블 또는 위성 수신기) 또는 스트리밍 미디어 서버일 수 있거나, 또는 미디어 소스(14)는 다른 가능성들 중에서, 방송 텔레비전국 등일 수 있다. 미디어 클라이언트가 컴퓨터인 경우, 미디어 소스는 인터넷 스트리밍 미디어 서버 또는 기타 미디어 프로바이더를 포함할 수 있다. 대안적으로, 미디어 소스(14)는 미디어 클라이언트(12)와 통합되고/되거나 미디어 클라이언트(12)에 의해 로컬로 액세스 가능한 데이터 스토리지일 수 있으며, 미디어 클라이언트는 미디어 스트림을 재생하고 있거나 재생을 위해 미디어 스트림을 포워딩하고 있을 때 등에 있어서, 재생을 위해 데이터 스토리지로부터 미디어 스트림을 수신(예를 들어, 검색)한다. 다른 예도 가능하다.
도 1에 더 도시된 바와 같이, 미디어 클라이언트(12)는 미디어 클라이언트가 하나 이상의 서버(18)와 통신할 수 있는 네트워크(예를 들어, 인터넷 또는 사설 네트워크)(16)와의 통신 인터페이스를 가질 수 있다. 서버(18)는 파일 서버, 미디어 서버 및/또는 다른 유형의 컨텐츠 서버 등을 포함할 수 있다. 또한, 미디어 소스(14)가 서버(18)와 별도로 도시되어 있지만, 미디어 소스(14)는 대안적으로 하나 이상의 서버(18)에 포함되거나 통합될 수 있고 네트워크(16)를 통해 액세스될 수 있다.
위에서 언급한 바와 같이, 클라이언트(12)와 같은 미디어 클라이언트가 미디어 스트림을 수신 및 재생(예를 들어, 재생을 위해 출력)할 경우, 클라이언트가 스트림의 일부를, 대체 스트림을 정의하는 대체 컨텐츠로 대체하는 것이 유용할 수 있다. 또한, 위에서 언급한 바와 같이, 클라이언트가 미디어 스트림 내의 특정 시간 포인트에서 이것을 수행하는 것이 바람직할 수 있다. 예를 들어, 스트림이 비디오 프레임들 및/또는 오디오 프레임들과 같은 프레임 시퀀스를 정의하는 경우, 클라이언트가 시퀀스의 특정 프레임에서 시작하는 컨텐츠 대체를 수행하는 것이 바람직할 수 있다.
실제에 있어서, 클라이언트는 클라이언트가 컨텐츠 대체를 시작해야 하는 미디어 스트림의 특정 타겟 시간 포인트를 다양한 방식으로 학습(결정)할 수 있다.
예를 들어, 클라이언트는 미디어 스트림 내에서 각 프레임을 식별하거나 타임스탬프하는 데이터 세트(예를 들어, 미디어 스트림에 임베드되거나 또는 인-스트림 시그널링을 통해 제공되는 타임스탬프들) 및 컨텐츠 대체가 시작될 프레임의 아이덴티티 또는 타임스탬프를 지정하는 데이터를, 클라이언트는 미디어 스트림과 함께 또는 이와 관련하여 프로비저닝되거나 수신될 수 있다. 따라서 클라이언트는 해당 데이터를 기반으로, 컨텐츠 대체가 시작될 미디어 스트림의 특정 시간 포인트를 결정할 수 있다.
대안적으로, 클라이언트가 미디어 스트림을 수신하고 재생함에 따라, 클라이언트는 네트워크 서버와 함께 작동하여 원하는 컨텐츠 전환 시간 포인트로서, 컨텐츠 대체가 시작될 미디어 스트림의 포인트를 학습할 수 있다. 예를 들어, 서버는 먼저 클라이언트에 의해 재생되고 있는 미디어 스트림을 식별할 수 있다. 그리고 미디어 스트림을 식별하면, 서버는 클라이언트가 컨텐츠 대체를 시작해야 하는 미디어 스트림의 특정 시간 포인트를 결정할 수 있으며 결정된 시간 포인트를 클라이언트에게 알릴 수 있다.
클라이언트에 의해 재생되고 있는 미디어 스트림에 대한 서버의 식별을 용이하게 하기 위해, 클라이언트(또는 가능하게는 보조 장치)는 클라이언트가 스트림을 수신함에 따라 실시간으로 미디어 컨텐츠를 나타내는 디지털 핑거프린트 데이터를 생성할 수 있으며, 서버는 해당 핑거프린트 데이터를, 기지의(known) 미디어 스트림의 미디어 컨텐츠를 나타내는 레퍼런스 핑거프린트 데이터와 비교할 수 있으며, 핑거프린트 매칭은 클라이언트에 의해 재생되고 있는 미디어 스트림이 기지의 미디어 스트림임을 나타낸다.
서버는 기지의 미디어 스트림을 나타내는 레퍼런스 핑거프린트 데이터를 확립하거나 그렇지 않으면 그것에 액세스할 수 있다. 예를 들어, 서버 또는 관련 시청 스테이션 또는 다른 엔티티는 기지의 미디어 스트림의 브로드캐스트를 수신할 수 있으며, 브로드캐스트를 수신하는 동안, 기지의 미디어 스트림의 프레임들을 나타내는 레퍼런스 디지털 핑거프린트들의 시퀀스를 생성할 수 있다. 서버 또는 다른 엔티티는 기지의 미디어 스트림의 프레임들을 프로그래밍 방식으로 분석하고, 기지의 미디어 스트림의 사본을 입력으로서 수신하고, 레퍼런스 핑거프린트들을 생성하기 위한 것으로 현재 알려져 있거나 나중에 개발될 임의의 미디어 핑거프린팅 프로세스 또는 알고리즘을 적용함으로써 이러한 레퍼런스 핑거프린트들을 확립할 수 있다. 또는 서버는 기지의 미디어 스트림을 나타내는 이 레퍼런스 핑거프린트 시퀀스를 확립하거나 프로비저닝될 수 있다. 그 후에 서버는 기지의 미디어 스트림의 아이덴티티와 관련하여 레퍼런스 핑거프린트들을 저장할 수 있다.
또한, 클라이언트가 미디어 스트림을 재생함에 따라 실시간으로, 클라이언트는 해당 스트림의 프레임들을 나타내는 쿼리 핑거프린트들을 생성하고, 분석을 위하여 이 쿼리 핑거프린트들을 서버로 전송할 수 있다. 핑거프린트 비교를 용이하게 하기 위해, 클라이언트는 레퍼런스 핑거프린트들을 확립하는데 적용되거나 적용되었던 것과 동일한 핑거프린팅 프로세스 또는 알고리즘을 사용하여 이러한 쿼리 핑거프린트들을 생성할 수 있다. 또한, 클라이언트는 특정 프레임 레이트에서 쿼리 핑거프린트들을 생성하고, 이 핑거프린트들을 그룹으로 서버에 전송할 수 있다. 예를 들어, 초당 30 프레임으로 비디오를 구성하는 미디어 스트림의 경우, 클라이언트는 리소스를 절약하기 위해 초당 2 프레임 정도의 감소된 프레임 레이트에서 쿼리 핑거프린트들을 생성할 수 있으며, 클라이언트는 최신 그룹의 쿼리 핑거프린트들을 1.5 초 정도마다 서버로 전송할 수 있다. 다른 예도 가능하다.
서버가 클라이언트로부터 쿼리 핑거프린트 데이터를 수신함에 따라, 서버는 쿼리 핑거프린트 데이터를 기지의 미디어 스트림의 레퍼런스 핑거프린트 데이터와 비교할 수 있다. 그리고 쿼리 핑거프린트 데이터가 레퍼런스 핑거프린트 데이터와 매칭된다고 충분한 확신을 가지고 서버가 판정하면, 서버는 클라이언트에 의해 재생되고 있는 미디어 스트림이 기지의 미디어 스트림이라고 결론을 내릴 수 있다.
서버는 프레임 단위로 이 핑거프린트 비교를 수행할 수 있다. 예를 들어, 비디오 컨텐츠를 고려하면, 서버는 프레임의 쿼리 핑거프린트와 프레임의 레퍼런스 핑거프린트를 비교하여, 비디오 프레임 단위로 분석을 수행할 수 있다. 비교 프로세스는 핑거프린트들의 구조에 따라 다양한 형태를 취할 수 있다. 예를 들어, 이 비교는 핑거프린트들 간의 최대 편차를 계산하고, 그 최대 편차가 사전 정의된 허용 오차 내인지를 판정하는 것을 포함할 수 있다. 또한, 핑거프린트가 바이너리인 경우, 이것은 부울(Boolean) 판정일 수 있거나 또는 해밍(Hamming) 거리(핑거프린트에서 각 비트 위치 간의 미스매칭 수)를 계산하는 것을 포함할 수 있다. 핑거프린트가 10 진수 값이나 벡터(예를 들면, 비디오 프레임 영역 당 그레이 값)와 같이 더 복잡한 값인 경우, 이것은 이 값들 또는 벡터들 간의 거리를 판정하는 것을 포함할 수 있다. 다른 많은 예도 가능하다.
또한, 서버는 원하는 수준의 허용 오차로 이러한 핑거프린트 비교 프로세스를 수행할 수 있다. 예를 들어, 이 비교는 더 큰 수의 차이에 대한 허용 오차 및/또는 더 큰 크기의 차이에 대한 허용 오차와 같은, 핑거프린트들 간의 차이에 대한 상대적으로 높은 허용 오차를 가지고, 대략적으로 이루어질 수 있다. 예를 들어, 두 개의 32 비트 핑거프린트를 서로 비교할 경우, 대략적 비교는 두 개 또는 다른 지정된 비트 수가 매칭되지 않더라도 일반적으로 핑거프린트가 서로 매칭되는 것으로 간주할 수 있다. 또는 이 비교는 이러한 차이들에 대한 더 낮은 허용 오차 및/또는 기초가 되는 미디어의 특정 부분들을 나타내는 특정 핑거프린트 컴포넌트들에 초점을 맞춘 비교들을 통해 보다 세분화될 수 있다.
이러한 클라이언트에 의해 생성된 쿼리 핑거프린트와 기지의 미디어 스트림의 레퍼런스 핑거프린트의 비교를 통해, 서버가 하나 이상의 매칭들을 발견할 수 있다. 예를 들어, 서버는 클라이언트에 의해 재생되고 있는 미디어 스트림의 프레임의 쿼리 핑거프린트가 기지의 미디어 스트림의 프레임의 각각의 레퍼런스 핑거프린트와 매칭되는 하나 이상의 인스턴스들을 발견할 수 있다. 따라서 이러한 매칭은 클라이언트에 의해 재생되고 있는 미디어 스트림이 기지의 미디어 스트림이라는 결론을 확립하거나 이것을 지원할 수 있다.
대안적으로, 서버는 다른 방식으로 해당 미디어 스트림을 식별할 수 있다. 예를 들어, 미디어 스트림에 미디어 스트림의 아이덴티티에 해당하는 워터마크 데이터가 포함된 경우, 클라이언트는 워터마크 데이터를 읽거나 추출하여 서버에 보고할 수 있다. 그리고 서버는 보고된 워터마크 데이터를 기초로서 사용하여, 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별할 수 있다. 예를 들어, 서버는 클라이언트에 의해 보고된 워터마크 데이터가 특정 기지의 미디어 스트림과 대응하는지 판정하기 위해, 다양한 워터마크 데이터를 특정 기지의 미디어 스트림들과 상관시키는 레퍼런스 데이터를 참조할 수 있다.
클라이언트에 의해 재생되고 있는 미디어 스트림을 식별한 후, 서버는 컨텐츠 대체가 발생할 미디어 스트림의 시간 포인트를 결정할 수 있다. 예를 들어, 서버는 컨텐츠 대체가 시작될 기지의 미디어 스트림 내의 시간 포인트를 지정하는 레퍼런스 데이터를 참조할 수 있다. 그 후에 서버는 해당 시간 포인트를 나타내는 지시를 클라이언트에게 전송할 수 있다.
서버의 레퍼런스 데이터에 의해 지정되는 대체 시간 포인트는 클라이언트가 이해할 수 있는 방식으로 정의될 수 있다. 예를 들어, 클라이언트가 미디어 스트림 내에 정의된 "실제 시간(true time)" 타임라인을 따라 미디어 스트림의 각 프레임에 타임스탬핑하는 데이터로 프로비저닝되는 경우, 서버의 대체 시간 포인트는 미디어 스트림의 다가오는 프레임의 실제 시간 타임스탬프일 수 있다. 따라서 서버는 클라이언트가 컨텐츠 대체를 시작해야 하는 시간의 표시로서 실제 시간 타임스탬프를 클라이언트에게 제공할 수 있다.
또한, 클라이언트는 클라이언트의 내부 클럭에 따라 정의된 "클라이언트 시간"에 해당 실제 시간 타임스탬프를 맵핑함으로써, 클라이언트가 컨텐츠 대체를 시작해야 할 때 자신의 클럭에서 시간을 결정할 수 있다. 예를 들어, 클라이언트는 (i) 현재 프레임의 실제 시간 타임스탬프와 클라이언트의 클럭의 현재 시간 사이의 차이를 계산하고 (ii) 결정된 차이를, 대체가 발생할 다가오는 프레임의 표시된 실제 시간 타임스탬프에 적용함으로써, 클라이언트가 컨텐츠 대체를 시작해야 하는 클라이언트 시간 포인를 결정할 수 있다.
대안적으로, 서버의 레퍼런스 데이터에 의해 지정된 대체 시간 포인트는 클라이언트가 이해할 수 없는 방식으로 정의될 수 있다. 예를 들어, 서버의 대체 시간 포인트는 기지의 미디어 스트림 내의 실제 시간 타임라인에 따라 정의된 타임스탬프일 수 있지만, 클라이언트에는 실제 시간에 대한 컨텍스트나 퍼스펙티브가 없을 수 있다. 이 경우, 서버는 실제 시간과 클라이언트 시간 사이에 맵핑 또는 "동기 락(synchronous lock)"을 확립하는 프로세스에 참여할 수 있으며, 서버는 컨텐츠 대체가 발생하는 실제 시간 시간 포인트를, 대응하는 클라이언트 시간 시간 포인트에 맵핑하고, 해당 클라이언트 시간 시간 포인트를 클라이언트에게 제공한다.
이에 대한 비제한적인 예로서, 텔레비전 방송 내에 나타날 수 있는 애드 포드(ad pod)를 정의하는 미디어 스트림을 고려한다. 애드 포드는 TV 광고와 같은 일련의 광고로 구성된다. 이 예에서, 클라이언트는 특정 텔레비전 채널의 선형 방송 피드를 수신하여 재생하고 있는 텔레비전일 수 있으며, 애드 포드는 해당 피드 내의 임의의 시점에서 나타날 수 있다. 특히 스포츠 이벤트와 같은 라이브 방송의 경우 이러한 피드에 애드 포드가 나타나는 시간을 예측할 수 없다. 대안적으로, 애드 포드는 특별히 스케줄링된 시간에 나타날 수 있다.
이 예에서는, 원하는 컨텐츠 대체가 애드 포드 내의 특정 광고의 대체일 수 있다(예를 들어, 광고를 다른 광고 또는 다른 대체 컨텐츠로 대체하는 것). 예를 들어, 애드 포드가 일련의 광고 A1, A2, A3, A4인 경우, 원하는 컨텐츠 대체는 광고 A3의 대체일 수 있다.
이러한 상황에서, 애드 포드는 시간 T=0에서 시작하여 애드 포드의 끝까지 계속되는 실제 시간 타임라인을 정의할 수 있으며, 광고 A3는 해당 타임라인의 시간 TA3에서 시작할 수 있다. 그러나, 클라이언트는 해당 타임라인에 대한 컨텍스트가 부족할 수 있다. 클라이언트에는 클라이언트 시간(client time)을 정의하는 타임라인(예를 들어, 시간 또는 기타 내부 시간 레퍼런스)을 가지는 자체 내부 클럭이 있을 수 있다. 그러나 클라이언트 시간 내에 애드 포드 타임라인이 어디에 있는지에 대한 고급 지식 없이, 원하는 컨텐츠 수정 시점으로서 TA3 값만 주어지면 클라이언트가 원하는 시점에서 광고 대체를 시작할 수 없다.
서버가 해당 컨텍스트에서 실제 시간과 클라이언트 시간 사이에 동기 락을 확립하도록 하기 위해, 클라이언트는 서버로 전송하는 쿼리 핑거프린트들을 타임스탬프할 수 있다. 특히, 클라이언트가 미디어 스트림을 재생하고 쿼리 핑거프린트들을 생성할 시에, 클라이언트는 현재 클라이언트 시간 값으로 각 쿼리 핑거프린트를 타임스탬프할 수 있다. 서버가 쿼리 핑거프린트들과 기지의 미디어 스트림의 타임스탬프된 레퍼런스 핑거프린트 사이에 하나 이상의 매칭을 검출하는 경우, 서버는 이러한 매칭 포인트들을 기초로서 사용하여 실제 시간을 클라이언트 시간에 맵핑할 수 있다. 예를 들어, 이러한 적어도 하나의 검출된 매칭 포인트에 기초하여, 서버는 (i) 매칭 레퍼런스 핑거프린트의 실제 시간 타임스탬프와 (ii) 매칭 쿼리 핑거프린트의 클라이언트 시간 타임스탬프 간의 맵핑을 정의할 수 있다.
서버가 동기 락을 확립하고 나면, 서버는 확립된 동기 락을 사용하여 컨텐츠 대체가 발생하는 실제 시간 시간 포인트를, 컨텐츠 대체가 발생하는 대응하는 클라이언트 시간 시간 포인트로 변환할 수 있다. 그리고 서버는 클라이언트가 재생하고 있는 미디어 스트림의 원하는 시간 포인트에서 클라이언트가 컨텐츠 대체를 시작할 수 있도록 하기 위해, 결정된 클라이언트 시간 시간 포인트를 클라이언트에게 전송할 수 있다.
또한, 대안의 구현에서, 서버가 아닌 클라이언트가 컨텐츠 대체가 발생하는 클라이언트 시간 포인트를 결정하기 위해 동기 락을 확립하고 적용하는 프로세스를 수행할 수 있다.
예를 들어, 서버가 클라이언트에 의해 수신되고 있는 미디어 스트림을 식별하고 나면, 서버는 기지의 미디어 스트림의 다가오는 부분에 대한 레퍼런스 핑거프린트들 및 실제 시간 타임스탬프들을 정의하는 일부 레퍼런스 데이터를 클라이언트에게 전송할 수 있다. 그 후에 클라이언트는 쿼리 핑거프린트들과 레퍼런스 핑거프린트들 간의 핑거프린트 매칭을 수행하여 하나 이상의 매칭 포인트를 찾아낼 수 있으며, 클라이언트는 적어도 하나의 매칭 포인트의 타임스탬프들을 마찬가지로 상관시킴으로써 실제 시간과 클라이언트 시간 사이에 동기 락을 확립할 수 있다. 클라이언트가 동기 락을 확립하고 나면, 클라이언트는 동기 락을 기초로서 사용하여 컨텐츠 대체가 발생하는 제공된 실제 시간 시간 포인트를, 컨텐츠 대체가 발생하는 대응하는 클라이언트 시간 시간 포인트로 변환할 수 있다.
클라이언트가 컨텐츠 대체를 시작해야 할 미디어 스트림의 특정 타겟 시간 포인트를 결정하는 것에 추가하여, 클라이언트는 또한 클라이언트가 해당 시간 포인트에서 시작하여 수행해야 하는 컨텐츠 대체에 대하여 다양한 방식으로 학습할 수도 있다.
예를 들어, 클라이언트는 표시된 시간 포인트에서 시작하는 컨텐츠 대체 사양으로 미리 프로비저닝될 수 있으며, 예를 들어 이 표시는 클라이언트가 미디어 스트림의 기존 컨텐츠 대신에 특정 컨텐츠로 대체해야 한다는 표시이다. 대안적으로, 클라이언트는 서버 또는 다른 엔티티로부터 수행할 컨텐츠 대체 사양을 수신할 수 있다. 예를 들어, 클라이언트가 컨텐츠 수정을 시작할 미디어 스트림의 시간 포인트를 알리는 지시를 서버가 클라이언트에게 전송할 경우, 서버는 클라이언트에 대한 해당 지시에, 수행할 컨텐츠 대체의 사양을 포함(또는 별도로 제공)할 수 있다.
실제에 있어서, 수행할 컨텐츠 대체의 사양은 클라이언트가 획득해야 하고 미디어 스트림의 기존 컨텐츠 대신에 또는 보충으로서 삽입할 대체 컨텐츠에 대한 포인터를 포함할 수 있다. 예를 들어, 위에서 언급한 바와 같이, 사양은 클라이언트가 대체 컨텐츠를 요청하고 수신할 수 있는 스트리밍 미디어 서버, 파일 서버 등의 네트워크 주소를 정의하거나 이것과 상관시키는 URL(Universal Resource Locator)을 포함할 수 있다. 대안적으로, 사양은 미디어 스트림에서 표시된 시간 포인트에서 시작되는 컨텐츠 대체를 수행하는 것을 용이하게 하기 위해, 클라이언트가 대체 컨텐츠를 어디서 및/또는 어떻게 획득해야 하는지를 다른 방식으로 나타낼 수 있다. 또한, 사양은 클라이언트가 원래의 컨텐츠 대신 대체 컨텐츠를 재생해야 하는 시간을 클라이언트에게 알리기 위해, 대체 컨텐츠의 듀레이션을 표시할 수 있다.
컨텐츠 대체가 시작되는 표시된 시간 포인트에서, 클라이언트는 기존 미디어 스트림을 재생하는 것으로부터, 대체 미디어 스트림으로서 대체 컨텐츠를 재생하는 것으로 전환할 수 있다. 또한, 컨텐츠 대체가 끝나면, 클라이언트는 (예를 들어, 진행 중인) 원래 미디어 스트림 재생으로 다시 전환할 수 있다.
비제한적인 예로서, 위에서 논의된 애드 포드를 다시 고려하도록 한다. 실제에 있어서, 서버는 애드 포드의 프레임들을 나타내며 이에 대응하는 타임스탬프된 레퍼런스 핑거프린트들로 프로비저닝될 수 있다. 또한, 서버는 애드 포드의 광고들 중 특정 광고를 대체해야 한다는 표시와, 해당 광고 대체를 용이하게 하는 정보가 프로비저닝될 수 있다. 예를 들어, 서버는 기존 광고의 첫 번째 프레임의 실제 시간 포인트 표시, 대체 광고의 URL 및 대체 듀레이션 표시가 프로비저닝될 수 있다.
클라이언트가 이 애드 포드를 포함할 수 있는 선형 방송 피드를 수신 및 재생하는 동안 지속적으로, 또는 하나 이상의 다른 트리거에 응답하여, 클라이언트는 방송 피드의 타임스탬프된 쿼리 핑거프린트들을 생성할 수 있으며, 분석을 위하여 이러한 타임스탬프된 쿼리 핑거프린트들을 서버에 보고할 수 있다. 이러한 쿼리 핑거프린트들을 애드 포드 시퀀스의 프레임들을 나타내는 레퍼런스 핑거프린트들과 비교함으로써, 서버는 클라이언트가 애드 포드 시퀀스를 재생하고 있다는 것을 검출할 수 있다.
클라이언트가 애드 포드 시퀀스를 재생하고 있다고 결정한 후, 서버는 예를 들어 위에서 설명한 방식으로 광고 대체가 시작되는 프레임의 실제 시간 포인트를 대응하는 클라이언트 시간 포인트로 변환할 수 있으며 또한 클라이언트 시간 포인트를 지정하고 있고, 클라이언트가 해당 클라이언트 시간에서 시작하는 미디어 스트림의 프레임들을 대체할 대체 광고에 대한 포인터를 포함하며, 또한 클라이언트가 표시된 컨텐츠 대체를 수행하도록 지시하는 지시를 클라이언트에게 전송할 수 있다. 따라서, 클라이언트는 표시된 대체 광고를 얻을 수 있고, 표시된 클라이언트 시간 포인트에서 시작하는 미디어 스트림의 프레임들에 대한 해당 광고를 대체할 수 있다.
또한, 서버는 광고 대체 듀레이션 또는 광고 대체가 종료될 클라이언트 시간 포인트를 클라이언트에게 알릴 수 있으며, 해당 듀레이션은 표준이거나 또는 사전 설정된 듀레이션일 수 있다. 그리고 광고 대체가 끝나면, 클라이언트는 대체 광고 재생으로부터 진행중인 방송 피드(예를 들면, 나머지 애드 포드 시퀀스) 재생으로 다시 전환할 수 있다.
위에서 설명한 바와 같이, 이 프로세스에서 발생할 수 있는 기술적 문제점은 클라이언트가 하나의 스트림을 재생하는 것으로부터 다른 스트림을 재생하는 것으로(예를 들면, 선형 방송 스트림에서 애드 포드 시퀀스를 재생하는 것으로부터 대체 광고 스트림을 재생하는 것으로) 트랜지션하는데 시간이 걸릴 수 있다는 것이다. 특히, 위에서 언급한 바와 같이, 클라이언트는 대체 스트림 재생 시작을 용이하게 하기 위해, 캐시 지우기, 컨텐츠 수신 및 디코딩, 메모리 버퍼 채우기와 같은 다양한 프로세스에 참여해야 할 수 있다.
이러한 스트림 트랜지션 프로세스의 시작 포인트는 다양한 방식으로 정의될 수 있다. 예를 들어, 클라이언트가 스트리밍 미디어 서버에서 제 2 스트림의 컨텐츠를 수신하는 경우, 스트림 트랜지션 프로세스는 다른 가능성 중에서도, 클라이언트가 서버와의 TCP 세션 셋업을 시작하기 위해 초기 TCP(Transport Control Protocol) 핸드 셰이크 메시지를 보낼 때 시작될 수 있거나 또는 클라이언트가 서버와의 RTP(real-time transport protocol) 세션 셋업을 시작하기 위해 RTSP(Real-Time Streaming Protocol) SETUP 요청 등을 보낼 때 시작될 수 있다. 대안적으로, 클라이언트가 다른 방식으로 또는 다른 소스로부터 제 2 스트림의 컨텐츠를 수신하는 경우, 프로세스의 시작 포인트는 다른 방식들로 정의될 수 있다. 프로세스의 종료는 클라이언트가 지터(jitter) 및/또는 기타 문제를 고려하면서 스트림 재생을 시작하기에 충분한 제 2 미디어 스트림을 버퍼링한 시간 포인트로서 정의될 수 있다. 다른 예도 가능하다.
전술한 바와 같이, 스트림 트랜지션 프로세스는 시작부터 종료까지 수백 밀리 초 정도 걸릴 수 있다. 또한, 리소스 제약 및 기타 요인이 수시로 변함에 따라, 클라이언트가 임의의 주어진 인스턴스에 있어서 한 스트림에서 다른 스트림으로 트랜지션하는데 걸리는 실제 시간은 예측할 수 없다.
경험에 의해 클라이언트(또는 대표 클라이언트)에 대한 최소 및 최대 예상 스트림 트랜지션 듀레이션을 확립할 수 있다. 예를 들어, 테스트 결과 클라이언트가 제 1 스트림의 재생에서 제 2 스트림의 재생으로 트랜지션하는데 300 ms 내지 500 ms 만큼 걸리는 것으로 나타났다(예를 들어, 클라이언트가 제 2 스트림 재생을 시작할 준비가 되는 포인트까지). 따라서, 클라이언트는 300 ms의 최소 예상 트랜지션 듀레이션과 500 ms의 최대 예상 트랜지션 듀레이션을 가질 수 있으며, 이것은 다른 가능성 중에서도 200 ms의 불확실성 범위를 정의한다.
클라이언트는 시간에 따른 스트림 트랜지션 듀레이션을 추적하고 추적된 듀레이션을 롤업하여 최소 및 최대의 통계적 측정을 확립함으로써 이러한 최소 및 최대 예상 스트림 트랜지션 듀레이션들을 결정할 수가 있으며, 그렇지 않으면 클라이언트는 예상 트랜지션 듀레이션들에 대한 대표 값들로 프로비저닝될 수 있다.
스트림 트랜지션 프로세스가 최대 예상 트랜지션 듀레이션보다 길지 않아야 한다는 기대가 주어지면, 클라이언트는 최대 예상 트랜지션 듀레이션과 동일한 시간만큼 원하는 컨텐츠 전환 시간 포인트에 앞서 시작하도록 스트림 트랜지션 프로세스를 구성할 수 있다. 이렇게 하면, 클라이언트는 원하는 컨텐츠 전환 시간 포인트에 도달할 때까지 스트림 트랜지션 프로세스를 완료해야 한다.
그러나, 불행히도, 클라이언트가 제 2 스트림을 재생하기 위한 준비를 마치고 나면, 클라이언트는 이제 재생을 위한 제 1 스트림 컨텐츠를 버퍼링하는 대신 재생을 위한 제 2 스트림 컨텐츠를 버퍼링할 수 있으므로, 클라이언트는 더 이상 제 1 스트림을 충분히 재생할 수 있는 위치에 있지 않을 수 있다. 따라서, 클라이언트가 최대 예상 전환 듀레이션이 끝나기 전에 제 2 스트림을 재생하기 위한 준비를 완료하면, 클라이언트는 원하는 컨텐츠 전환 시간 포인트 이전에 제 2 스트림의 재생을 시작할 수 있으며, 이로 인해 사용자 경험 문제가 발생할 수 있다. 또한, 광고 대체와 같은 컨텐츠 대체의 경우, 클라이언트가 제 2 스트림의 재생으로부터 제 1 스트림의 재생으로 다시 전환해야 할 때 대체 듀레이션의 끝 부분에서 제 2 스트림의 재생이 너무 일찍 시작되면 관련된 사용자 경험 문제가 발생할 수 있다.
클라이언트가 원하는 것보다 앞서 제 2 스트림의 재생을 시작하는 것을 피하는데 도움이 되는 한 가지 방법은, 클라이언트가 최대 예상 트랜지션 듀레이션보다 작은 시간만큼 원하는 컨텐츠 전환 시간 포인트보다 앞서 시작하도록 스트림 트랜지션 프로세스를 구성하는 것이다. 예를 들어, 클라이언트는 최대 예상 트랜지션 듀레이션보다 작지만 최소 예상 트랜지션 듀레이션보다 크거나 같은 시간만큼 원하는 컨텐츠 전환 시간 포인트보다 앞서 스트림 트랜지션 프로세스를 시작할 수 있다.
그러나, 이 솔루션도 또한 최적이 아닐 수 있으며, 그 이유는 클라이언트가 너무 늦게, 즉 원하는 컨텐츠 전환 시간 포인트가 지난 이후에 스트림 트랜지션 준비를 마칠 수도 있기 때문이다. 그리고 이 경우, 클라이언트는 대체되어야 하는 기본 컨텐츠 중 일부를 재생 한 다음 갑자기 대체 컨텐츠의 재생으로 전환할 수 있으며, 이로 인해 사용자 경험이 저하될 수 있다. 대안적으로 이 솔루션을 사용하면, 클라이언트가 제 2 스트림 재생 준비를 너무 일찍(원하는 컨텐츠 전환 시간 포인트 이전에) 완료하여, 위에서 언급한 사용자 경험 문제를 다시 일으킬 수 있다.
위에서 언급한 바와 같이 이 기술적 문제를 해결하는 것을 돕도록, 클라이언트는 원하는 컨텐츠 전환 시간 포인트에서 제 2 스트림의 재생 시작을 용이하게 하기 위해 스트림 트랜지션 프로세스의 타이밍을 구성할 수 있으며, 클라이언트는 불확실성 기간 동안 적절한 페이딩(fading)과 함께 트랜지션 프레임들을 전략적으로 도입하여, 트랜지션을 마스킹하고 이에 따라 향상된 사용자 경험을 제공하도록 돕는다.
특히, 클라이언트는 최대 예상 전환 듀레이션(예를 들어, 500 ms)만큼 원하는 컨텐츠 전환 시간 포인트에 앞서 스트림 트랜지션 프로세스를 시작할 수 있으며, 이에 따라 클라이언트는 원하는 컨텐츠 전환 시간 포인트에서 제 2 스트림의 재생을 시작할 수 있게 된다. 또한, 클라이언트가 원하는 컨텐츠 전환 시간 포인트에 도달하기 전에(즉, 최대 예상 전환 듀레이션이 지나기 전에) 제 2 스트림의 재생 준비를 완료할 가능성에 대처하기 위해, 클라이언트는 (i) 스트림 전환 프로세스 시작 후 최소 예상 트랜지션 듀레이션으로부터 (i) 스트림 전환 프로세스 시작 후 최대 예상 트랜지션 듀레이션까지에 이르는 불확실성 기간 동안 트랜지션 프레임들을 전략적으로 재생한다.
실제에 있어서, 클라이언트가 불확실성 기간 동안 재생하는 트랜지션 프레임은 해당 미디어의 유형에 따라 다양한 형태를 취할 수 있다.
예를 들어, 미디어가 비디오를 포함하는 경우, 트랜지션 프레임은 트랜지션 직전 프레임의 사본들 및/또는 블랙 프레임들을 포함할 수 있다. 특히, 클라이언트는 불확실성 기간 동안 블랙 프레임들을 제공할 수 있으며, 불확실성 기간이 시작될 때 블랙 프레임들에 도달하도록 제 1 스트림에서 블랙 프레임들로 페이딩할 수 있으며, 제 2 스트림의 재생이 시작될 때 또는 대략적으로 시작될 때 블랙 프레임들에서 제 2 스트림으로 페이딩할 수 있다(예를 들어, 원하는 컨텐츠 전환 시간 포인트에서). 대안적으로, 불확실성 기간 내의 일부 시간 동안, 클라이언트는 제 1 스트림의 가장 마지막 프레임의 사본인 프레임들을 제공한 다음 해당 이미지에서 블랙으로 페이딩한 다음 원하는 컨텐츠 전환 포인트에서 시작하는 제 2 스트림으로 페이딩백할 수 있다.
미디어가 오디오를 포함하는 경우, 트랜지션 프레임들은 무음(silent) 프레임들을 포함할 수 있다. 특히, 클라이언트는 불확실성 기간 동안 무음 프레임들을 제공할 수 있으며, 불확실성 기간이 시작될 때 무음 프레임들에 도달하도록 제 1 스트림의 오디오에서 무음 프레임들로 페이딩할 수 있고, 무음 프레임들에서 원하는 컨텐츠 전환 포인트에서 시작하는 제 2 스트림의 오디오로 페이딩할 수 있다. 이러한 예들의 조합 및 변형을 포함하는 다른 예들도 가능하다.
도 2는 시간이 왼쪽에서 오른쪽으로 진행되는 타임라인을 따라, 이 프로세스가 실제로 어떻게 작동할 수 있는지에 대한 예를 비제한적으로 설명하는 도면이다. 도 2에 도시된 바와 같이, 시간 TSWITCH는 원하는 컨텐츠 전환 시간 포인트를 나타낸다. 예를 들어, 클라이언트가 애드 포드가 포함된 선형 방송 피드를 수신할 때, 시간 TSWITCH는 클라이언트가 애드 포드 내의 광고 대신에 대체 광고 재생을 시작하는 클라이언트 시간 포인트일 수 있다. 보다 일반적으로, 클라이언트는 초기에 제 1 미디어 스트림(예를 들어, 선형 방송 피드)(22)을 재생하고 있을 수 있고, 시간 TSWITCH에서 클라이언트는 제 1 미디어 스트림(22) 재생으로부터 제 2 미디어 스트림 재생(예를 들어, 대체 광고 스트림)(24)으로 전환한다.
이 예는 클라이언트가 제 1 미디어 스트림(22)의 수신 및 재생에서 제 2 미디어 스트림(24)의 수신 및 재생으로 전환하는데 300 ms 내지 500 ms 만큼 걸릴 것이라고 가정한다. 위의 논의에 따라, 클라이언트는 원하는 컨텐츠 전환 시간 포인트 TSWITCH의 500 ms 전에 이 전환 프로세스를 시작할 수 있다. 도 2는 이 전환 프로세스 시작 시간을 시간 TSTART로 나타내고 있다. 또한, 이 도면은 TMIN에서 TMAX까지(TMAX는 TSWITCH와 같음)의 200 ms 불확실성 기간(26)을 정의하는, 전환 프로세스 시작 시간 TSTART 이후 각각 300 ms 및 500 ms인 최소 및 최대 예상 전환 듀레이션 TMIN 및 TMAX를 보여준다. 이 타임라인을 통해, 클라이언트가 스트림 트랜지션 프로세스를 시작하면, 클라이언트가 이 불확실성 기간 내 어느 포인트에서 제 2 스트림(24)의 재생을 위한 준비를 완료함으로써, 시간 TSWITCH에서 제 2 스트림의 재생을 시작할 수 있을 것으로 예상된다.
제 1 스트림에서 제 2 스트림으로의 트랜지션을 마스킹하는 것을 돕기 위해, 이 예에서 클라이언트는 불확실성 기간, 즉 TMIN에서 TMAX까지의 기간 동안 트랜지션 프레임들을 재생하게 된다. 도 2는 이 트랜지션 프레임 시퀀스를 시퀀스 28로 나타낸다. 또한, 본 도면은 TMIN에서 끝나는 제 1 미디어 스트림(22)의 재생, TMIN 내지 TMAX에서 발생하는 트랜지션 프레임들의 재생, TMAX(즉, TSWITCH)에서 시작하는 제 2 미디어 스트림(24)의 재생을 보여준다.
추가로 도시된 바와 같이, 클라이언트는 제 1 미디어 스트림(22)에서 트랜지션 프레임들로, 그리고 나서 트랜지션 프레임들에서 제 2 미디어 스트림으로의 페이딩을 추가할 수 있다. 이것을 용이하게 하기 위해, 클라이언트는 TMIN 이전의 페이드 기간(30)에 의해 시작하고 TMAX 이후의 페이드 기간(32) 동안 계속되도록 트랜지션 프레임 시퀀스(28)를 확장할 수 있다. 도시된 바와 같이, 페이드 기간(30) 전체에 걸쳐, 클라이언트는 제 1 미디어 스트림(22) 및 트랜지션 프레임들 모두를 제공하며, 제 1 미디어 스트림(22)에서 트랜지션 프레임으로 페이딩될 것이다. 그리고 페이드 기간(32) 동안, 마찬가지로 클라이언트는 트랜지션 프레임들과 제 2 미디어 스트림(24) 모두를 제공하고, 트랜지션 프레임들에서 제 2 미디어 스트림으로 페이딩될 것이다.
클라이언트는 블랙 프레임, 무음 프레임 및 페이딩 인/아웃을 도입하는 고유 기능으로 구성될 수 있다. 그리고 클라이언트는 이 프로세스를 용이하게 하기 위해 해당 기능을 사용할 수 있다. 예를 들어, 블랙 프레임들을 도입하기 위해, 클라이언트는 각 프레임을 완전히 블랙 이미지로 생성하고 재생을 위해 그 프레임을 출력하여, 디스플레이와 같은 사용자 인터페이스에 블랙 프레임을 제공할 수 있다. 마찬가지로, 무음 프레임들을 도입하기 위해, 클라이언트는 제로-레벨 오디오로 각 프레임을 생성하고 재생을 위해 그 프레임을 출력하여, 사운드 스피커와 같은 사용자 인터페이스에서 무음을 제공할 수 있다. 페이드딩 인 및 페이딩 아웃을 도입하기 위해, 클라이언트는 디졸브 알고리즘(dissolve algorithm)을 프로그래밍 방식으로 적용하여, 이미지 및/또는 오디오 간에 모핑되는 프레임들을 생성할 수 있다.
위에서 언급한 바와 같이, 해당 미디어가 비디오인 경우, 트랜지션으로서 블랙 프레임들만 재생하는 것에 대한 일 대안은, 클라이언트가 제 1 미디어 스트림(22)의 마지막으로 프레젠테이션된 프레임의 사본인 프레임들을 재생하는 것이다. 예를 들어, 페이드 기간(30)의 시작에서, 클라이언트는 제 1 미디어 스트림(22)의 현재 프레임의 스틸 이미지를 캡처할 수 있다. 클라이언트는 페이드 기간(28) 동안 반복되는 프레임들에 스틸 이미지를 프레젠테이션할 수 있으며, 따라서 해당 스틸 이미지에서 블랙으로 페이딩된다. 또 다른 대안으로서, 클라이언트는 블랙 프레임이나 제 1 미디어 스트림의 마지막 프레임의 이미지로 제한되지 않고, 다른 유형의 이미지 또는 컬러를 트랜지션 프레임으로서 프레젠이션할 수 있다.
이 예시적인 프로세스에서, 클라이언트는 불확실성 기간(26) 동안 임의의 시점에서 전환 준비를 완료할 가능성이있다. 클라이언트는 제 2 미디어 스트림(24)의 재생을 시작하기 전에 원하는 컨텐츠 전환 시간 포인트 TSWITCH까지 기다릴 수 있다. 그리고 클라이언트는 트랜지션을 마스킹하기 위해 일단 트랜지션 프레임들을 재생한다.
애드 포드 내에서 광고를 대체하는 것과 같은 컨텐츠 대체 시나리오에서, 클라이언트는 대체 기간이 끝날 때 유사한 프로세스를 적용하여 제 1 미디어 스트림으로의 트랜지션을 마스킹할 수 있다. 여기서, 전환 시간 TSWITCH는 클라이언트가 제 1 미디어 스트림을 재생하도록 되돌려야 하는 클라이언트 시간 포인트이며, 이것은 대체 컨텐츠(예를 들어, 대체 광고)의 표시된 듀레이션에 의해 또는 다른 방식으로 정의될 수 있다. 따라서 클라이언트는 전환 시간 TSWITCH 이전에 예상되는 최대 전환 듀레이션 TMAX인 시간에 제 2 미디어 스트림에서 제 1 미디어 스트림으로 다시 전환하는 프로세스를 시작할 수 있다. 그 후에 클라이언트는 불확실성 기간 동안 유사하게 트랜지션 프레임들을 재생할 수 있으며, 이 불확실성 기간은 위에서 논의된 바와 같이 확장 가능하고 페이딩을 가질 수 있으며, 이에 따라 트랜지션을 마스킹하는 것을 돕는다.
또한, 불확실성 기간 및/또는 페이드 기간들은 원하는 컨텐츠 전환 시간 포인트의 초기 예측에서 불확실성을 설명하기 위해 확장될 수 있음에 유의한다. 예를 들어, 대체 컨텐츠 재생을 시작하는 클라이언트 시간 포인트가 낮은 레이트 쿼리 핑거프린트를 기반으로 예측되거나 또는 다른 문제에 직면한 경우, 예측된 클라이언트 시간이 완전히 정확하지 않을 수 있다. 이것을 감안하여, 클라이언트는 불확실성 기간을 다른 경우보다 더 길게 편향할 수 있으며, 이에 따라 클라이언트는 더 긴 듀레이션 동안 트랜지션 프레임들을 재생할 수 있다. 예를 들어, 클라이언트는 최대 예상 트랜지션 듀레이션을 더 길게 편향할 수 있고 시작 포인트 TSTART를 시프트하여 그렇지 않은 경우보다 더 앞서고 더 긴 불확실성 기간을 생성할 수 있다. 추가적으로 또는 대안적으로, 클라이언트는 마찬가지로 추가된 불확실성을 설명하기 위해 페이드 기간들(30, 32)을 확장할 수 있다. 또한, 클라이언트는 원하는 결과를 얻기 위해, 최대 예상 트랜지션 듀레이션 및/또는 최소 예상 트랜지션 듀레이션 또는 관련 타이밍 값을 조정하거나 설정할 수 있다.
도 3은 다음으로 본 개시에 따라 수행될 수 있는 방법을 도시하는 흐름도이다. 이 방법은 제 1 미디어 스트림을 재생하는 것에서 제 2 미디어 스트림을 재생하는 것으로의 트랜지션을 용이하게 하기 위해, 미디어 클라이언트 또는 다른 재생 장치와 같은 장치에 의해 수행될 수 있다.
도 3에 도시된 바와 같이, 블록 34에서, 장치가 제 1 미디어 스트림을 재생하는 동안, 장치는 컨텐츠 대체 또는 다른 목적을 위해, 제 2 미디어 스트림 재생을 시작하기 위한 타겟 시간을 결정한다. 예를 들어, 컨텐츠 대체 시나리오에서, 이것은 클라이언트가 제 1 미디어 스트림의 컨텐츠를 대체하기 위해 제 2 미디어 스트림의 대체 컨텐츠의 재생을 시작하는 클라이언트 시간 포인트일 수 있다. 장치는 다른 가능성 중에서도, 타겟 시간을 지정하는 서버 또는 기타 엔티티로부터 지시를 수신하고 및/또는 타겟 시간을 결정하기 위해 자체적으로 평가함으로써 이 타겟 시간을 결정할 수 있으며, 본 프로세스는 위에서 논의된 동기 락 확립을 포함할 수 있다.
블록 36에서, 장치는 제 1 미디어 스트림의 재생으로부터 제 2 미디어 스트림의 재생으로 트랜지션하기 위한 스트림 트랜지션 프로세스를 시작한다. 위에서 논의한 바와 같이, 이 스트림 트랜지션 프로세스는 최소 예상 트랜지션 듀레이션 내지 최대 예상 트랜지션 듀레이션 만큼의 시간이 소요될 수 있다. 또한, 장치는 결정된 타겟 시간에 대한 최대 예상 트랜지션 듀레이션만큼 이전에 트랜지션 프로세스를 전략적으로 시작할 수 있으며, 이에 따라 장치가 타겟 시간까지 제 2 미디어 스트림 재생을 시작할 준비가 되는 것을 보장할 수 있다.
블록 38에서, 불확실성 기간 동안, 장치는 제 1 미디어 스트림에서 제 2 미디어 스트림으로의 트랜지션 마스킹을 돕기 위해 트랜지션 프레임 시퀀스를 생성하고 재생한다. 위에서 논의한 바와 같이 이 불확실성 기간은 (i) 트랜지션 프로세스 시작 후 최소 예상 전환 듀레이션에서 (ii) 트랜지션 프로세스 시작 후 최대 예상 전환 듀레이션까지 확장된다. 이렇게 하면, 장치가 불확실성 기간이 끝나기 전에 제 2 스트림 재생 준비를 완료하더라도, 제 2 미디어 스트림 재생을 시작하기 전에 장치가 타겟 시간까지 계속 기다릴 수 있으며, 트랜지션 프레임들은 중간 시간(intervening time)을 커버 업하는데 도움이 된다.
위에서 추가로 논의된 바와 같이, 이 방법은 불확실성 기간에 이르는 제 1 페이드 기간 동안 제 1 미디어 스트림으로부터 트랜지션 프레임으로의 페이딩(예를 들어, 디졸브 또는 모핑)을 구현하는 장치를 추가로 포함할 수 있다. 마찬가지로, 이 방법은 불확실성 기간의 완료시에 시작되는 제 2 페이드 기간 동안 트랜지션 프레임들로부터 제 2 미디어 스트림으로의 페이딩을 구현하는 장치를 포함할 수 있다.
또한, 전술한 바와 같이, 제 1 및 제 2 미디어 스트림들이 비디오를 포함하는 경우, 트랜지션 프레임들은 제 1 미디어 스트림의 마지막 재생된 프레임의 사본인 프레임들 및/또는 블랙 프레임들을 포함할 수 있다. 제 1 및 제 2 미디어 스트림들이 오디오를 포함하는 경우, 트랜지션 프레임들은 무음 프레임들을 포함할 수 있다. 다른 예도 가능할 수 있다.
도 4는 본 개시에 따라 수행될 수 있는 방법을 도시하는 다른 흐름도이다. 이 방법은 제 1 미디어 스트림 재생에서 제 2 미디어 스트림 재생으로의 트랜지션을 용이하게 하기 위해, 미디어 클라이언트 또는 다른 재생 장치와 같은 장치에 의해 유사하게 수행될 수 있다. 또한, 이 도면에서는 동작들이 일정 순서대로 도시되어 있지만, 동작 순서는 도시된 것과 다를 수 있다.
도 4에 도시된 바와 같이, 블록 40에서, 장치가 제 1 미디어 스트림을 재생하고 있을 때, 장치는 제 1 미디어 스트림 대신에 제 2 미디어 스트림을 재생하기 시작할 타겟 시간을 결정한다. 블록 42에서, 장치는 제 1 미디어 스트림의 재생으로부터 제 2 미디어 스트림의 재생으로의 트랜지션을 위해 장치가 스트림 트랜지션 프로세스를 시작해야 하는 시작 시간을 구성한다. 특히, 장치는 트랜지션에 대한 최대 예상 듀레이션을 결정하고, 시작 시간을 결정된 타겟 시간 이전의 최대 예상 트랜지션 듀레이션이 되도록 설정한다. 블록 44에서, 장치는 구성된 시작 시간에 스트림 트랜지션 프로세스를 시작한다.
또한, 블록 46에서, 장치는 불확실성 기간을 결정한다. 특히, 장치는 트랜지션에 대한 최소 예상 듀레이션을 결정하고 (i) 시작 시간 이후 결정된 최소 예상 트랜지션 듀레이션에서 (ii) 시작 시간 이후 결정된 최대 예상 듀레이션까지 확장되는 불확실성 기간으로 간주한다. 그리고 블록 48에서, 장치는 결정된 불확실성 기간 동안 일련의 트랜지션 프레임을 재생하여, 트랜지션의 마스킹을 돕는다.
이 방법에서, 트랜지션에 대한 최대 및 최소 예상 듀레이션들의 결정은 다른 가능성 중에서, 과거 스트림 트랜지션들의 장치에 의한 모니터링에 기초할 수 있고/있거나 이러한 듀레이션들의 미리 정의된 값들을 지정하는 구성 데이터 등을 읽는 것을 포함할 수 있다.
또한, 위에서 논의된 바와 같이, 이 방법은 장치가 제 1 미디어 스트림에서 트랜지션 프레임들로의 페이딩을 추가하고/하거나 트랜지션 프레임들에서 제 2 미디어 스트림으로 페이딩을 추가하는 것을 포함할 수 있다. 그리고 트랜지션 프레임들은 블랙 프레임, 무음 프레임 및/또는 제 1 미디어 스트림의 마지막 재생된 프레임의 사본인 프레임을 포함할 수 있다. 또한, 이 트랜지션은 선형 방송 피드에서 대체 광고로 또는 그 반대로의 것일 수 있다. 위에서 언급한 바와 같이, 이 방법은 불확실성 기간을 연장하는 것을 추가로 포함할 수 있다.
마지막으로, 도 5는 전술한 것과 같은 동작들을 수행하는 것을 용이하게 하기 위해 그러한 장치에 포함될 수 있는 일부 구성 요소를 보여주는, 예시적인 미디어 클라이언트의 간략 블록도이다. 상기한 논의에 따라, 이 클라이언트는 다양한 형태를 취할 수 있다. 예를 들어, 비디오 컨텐츠를 수신하고 프레젠테이션을 위해 비디오 컨텐츠를 출력하도록 작동하는 텔레비전, 컴퓨터 모니터 또는 기타 장치가 될 수 있으며, 및/또는 오디오 컨텐츠를 수신하고 프레젠테이션을 위해 오디오 컨텐츠를 출력하도록 작동하는 스피커, 헤드폰 또는 기타 장치일 수 있다. 다른 많은 예도 가능하다.
도 5에 도시된 바와 같이, 예시적인 클라이언트는 미디어 입력 인터페이스(50), 네트워크 통신 인터페이스(52), 미디어 프레젠테이션 인터페이스(54), 처리 유닛(56) 및 비일시적 데이터 스토리지(58)를 포함하며, 이들 중 일부 또는 전부는 함께 통합되거나 또는 도시된 바와 같이 시스템 버스, 네트워크 또는 다른 연결 메커니즘(60)에 의해 함께 통신적으로 링크된다.
클라이언트는 미디어 입력 인터페이스(50) 및/또는 네트워크 통신 인터페이스(52)를 사용하여 프레젠테이션을 위한 미디어 스트림들을 수신할 수 있다. 이들 인터페이스 중 하나는 수신기, 서버 또는 기타 장치 또는 시스템으로부터 아날로그 또는 디지털 형식으로 미디어 컨텐츠와 통신을 확립하고 수신하기 위한 하나 이상의 유선 및/또는 무선 인터페이스를 포함할 수 있다. 예를 들어, 미디어 입력 인터페이스는 DVI, HDMI, VGA, USB, BLUETOOTH, WIFI 등과 같은 프로토콜들을 준수하는 하나 이상의 인터페이스를 포함할 수 있으며, 네트워크 통신 인터페이스는 로컬 또는 광역 패킷 기반 통신에 참여하여 하나 이상의 서버 및/또는 다른 장치 또는 시스템과 상호 작용하기 위해, 유선 또는 무선 이더넷 인터페이스를 포함할 수 있다.
미디어 프레젠테이션 인터페이스(54)는 미디어 컨텐츠의 프레젠테이션을 용이하게 하기 위한 하나 이상의 구성 요소를 포함할 수 있다. 예를 들어, 미디어 프레젠테이션 인터페이스는 디스플레이 스크린 및/또는 라우드 스피커와 같은 사용자 인터페이스뿐만 아니라, 수신된 미디어 컨텐츠를 처리하기 위한 하나 이상의 드라이버 또는 기타 구성 요소를 포함하여 사용자 인터페이스 상의 컨텐츠 프레젠테이션을 용이하게 할 수 있다.
처리 유닛(56)은 하나 이상의 범용 프로세서(예를 들어, 마이크로 프로세서) 및/또는 하나 이상의 특수 프로세서(예를 들어, 주문형 집적 회로)를 포함할 수 있다. 비일시적 데이터 스토리지(58)는 광학, 자기 또는 플래시 스토리지와 같은 하나 이상의 휘발성 및/또는 비휘발성 스토리지 구성 요소를 포함할 수 있다. 또한, 도시된 바와 같이, 데이터 스토리지(58)는 (예를 들어, 클라이언트가 개시된 동작들을 수행하게 하기 위해) 여기에 설명된 다양한 동작들을 수행하기 위해 처리 유닛(56)에 의해 실행될 수 있는 프로그램 명령어들(62)을 저장할 수 있다.
예시적인 실시예들이 위에서 설명되었다. 그러나, 당업자는 본 발명의 진정한 범위 및 사상을 벗어나지 않고 이러한 실시예들에 대한 변경 및 수정이 이루어질 수 있음을 이해할 것이다.

Claims (20)

  1. 장치에 의해서 제 1 미디어 스트림의 재생으로부터 제 2 미디어 스트림의 재생으로 트랜지션하는 방법으로서,
    상기 장치에 의해서, 상기 제 2 미디어 스트림의 재생을 시작하기 위한 타겟 시간을 결정하는 단계;
    상기 장치에 의해서, 상기 제 1 미디어 스트림의 재생에서 상기 제 2 미디어 스트림의 재생으로 트랜지션하는 트랜지션 프로세스를 시작하는 단계 - 상기 트랜지션 프로세스는 최소 예상 트랜지션 듀레이션 내지 최대 예상 트랜지션 듀레이션 만큼의 시간 기간이 소요되며, 상기 시작은 상기 결정된 타겟 시간보다 상기 최대 예상 트랜지션 듀레이션만큼 앞서 발생함 -; 및
    상기 제 1 미디어 스트림에서 상기 제 2 미디어 스트림으로의 트랜지션 마스킹을 돕기 위해, 불확실성 기간(uncertainty period) 동안, 상기 장치에 의해서 트랜지션 프레임들의 시퀀스를 생성하고 재생하는 단계 - 상기 불확실성 기간은 (i) 상기 시작 후 상기 최소 예상 트랜지션 듀레이션에서 (ii) 상기 시작 후 상기 최대 예상 트랜지션 듀레이션까지 확장됨 -
    를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 장치에 의해서, 상기 불확실성 기간에 이르는 제 1 페이드 기간 동안 상기 제 1 미디어 스트림에서 상기 트랜지션 프레임들로의 페이딩(fading)을 구현하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 장치에 의해서, 상기 불확실성 기간의 완료시에 시작하는 제 2 페이드 기간 동안 상기 트랜지션 프레임들에서 상기 제 2 미디어 스트림으로의 페이딩을 구현하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 제 1 및 제 2 미디어 스트림들은 비디오를 포함하고, 상기 트랜지션 프레임들은 블랙 프레임(black frame)들을 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 트랜지션 프레임들은 상기 제 1 미디어 스트림의 마지막 재생 프레임의 사본을 더 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 제 1 및 제 2 미디어 스트림들은 오디오를 포함하고, 상기 트랜지션 프레임들은 무음 프레임(silent frame)들을 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 타겟 시간을 결정하는 것은 핑거프린트 분석에 기초하며, 동기 락(synchronous lock)을 확립하는 것을 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 제 1 미디어 스트림의 재생으로부터 상기 제 2 미디어 스트림의 재생으로 트랜지션하는 것은 컨텐츠 대체를 위한 것인 방법.
  9. 제 8 항에 있어서,
    상기 컨텐츠 대체는 광고 대체를 포함하는 방법.
  10. 방법으로서,
    장치가 제 1 미디어 스트림을 재생하는 동안, 상기 장치가 상기 제 1 미디어 스트림 대신에 제 2 미디어 스트림을 재생하기 시작해야 하는 타겟 시간을 상기 장치에 의해서 결정하는 단계;
    상기 장치가 상기 제 1 미디어 스트림의 재생에서 상기 제 2 미디어 스트림의 재생으로의 트랜지션을 위한 스트림 트랜지션 프로세스를 시작해야 하는 시작 시간을 상기 장치에 의해서 구성하는 단계 - 상기 시작 시간을 구성하는 것은 상기 트랜지션을 위한 최대 예상 듀레이션을 결정하는 것과 상기 결정된 타겟 시간 이전에 상기 최대 예상 듀레이션이 되도록 상기 시작 시간을 설정하는 것을 포함함 -;
    상기 장치에 의해서, 상기 구성된 시작 시간에 상기 스트림 트랜지션 프로세스를 시작하는 단계;
    상기 장치에 의해서 불확실성 기간을 결정하는 단계 - 상기 불확실성 기간을 결정하는 것은 상기 트랜지션을 위한 최소 예상 듀레이션을 결정하는 것과 상기 불확실성 기간을 (i) 상기 시작 시간 후 상기 결정된 최소 예상 듀레이션에서 (ii) 상기 시작 시간 후 상기 결정된 최대 예상 듀레이션까지 확장되는 것으로 간주하는 것을 포함함 -; 및
    상기 제 1 미디어 스트림의 재생에서 상기 제 2 미디어 스트림의 재생으로의 트랜지션 마스킹을 돕기 위해, 상기 장치에 의해서 상기 결정된 불확실성 기간 동안 일련의 트랜지션 프레임들을 재생하는 단계
    를 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 장치에 의해서 상기 제 1 미디어 스트림에서 상기 트랜지션 프레임들로의 페이딩을 추가하는 단계를 더 포함하는 방법.
  12. 제 10 항에 있어서,
    상기 장치에 의해서 상기 트랜지션 프레임들에서 상기 제 2 미디어 스트림으로의 페이딩을 추가하는 단계를 더 포함하는 방법.
  13. 제 10 항에 있어서,
    상기 트랜지션 프레임들은 (i) 블랙 프레임들, (ii) 무음 프레임들, 및 (iii) 상기 제 1 미디어 스트림의 마지막 재생 프레임의 사본인 프레임들로 구성된 그룹으로부터 선택되는 프레임들을 포함하는 방법.
  14. 제 10 항에 있어서,
    상기 제 1 미디어 스트림은 선형 방송 피드(linear broadcast feed)를 포함하며, 상기 제 2 미디어 스트림은 대체 광고를 포함하는 방법.
  15. 제 10 항에 있어서,
    상기 제 1 미디어 스트림은 대체 광고를 포함하며, 상기 제 2 미디어 스트림은 선형 방송 피드를 포함하는 방법.
  16. 제 10 항에 있어서,
    상기 불확실성 기간을 확장하는 단계를 더 포함하는 방법.
  17. 미디어 클라이언트로서,
    처리 유닛;
    비일시적 데이터 스토리지; 및
    상기 비일시적 데이터 스토리지에 저장되고 상기 처리 유닛에 의해 실행 가능한 프로그램 명령어들로서, 상기 미디어 클라이언트로 하여금 제 1 미디어 스트림의 재생으로부터 제 2 미디어 스트림의 재생으로 트랜지션하는 동작들을 수행하게 하는 상기 프로그램 명령어들을 포함하며, 상기 동작들은,
    상기 제 2 미디어 스트림의 재생을 시작하기 위한 타겟 시간을 결정하는 동작;
    상기 제 1 미디어 스트림의 재생에서 상기 제 2 미디어 스트림의 재생으로 트랜지션하는 트랜지션 프로세스를 시작하는 동작 - 상기 트랜지션 프로세스는 최소 예상 트랜지션 듀레이션 내지 최대 예상 트랜지션 듀레이션 만큼의 시간 기간이 소요되며, 상기 시작은 상기 타겟 시간보다 상기 최대 예상 트랜지션 듀레이션만큼 앞서 발생함 -; 및
    상기 제 1 미디어 스트림에서 상기 제 2 미디어 스트림으로의 트랜지션 마스킹을 돕기 위해, 불확실성 기간 동안, 트랜지션 프레임들의 시퀀스를 생성하고 재생하는 동작 - 상기 불확실성 기간은 (i) 상기 시작 후 상기 최소 예상 트랜지션 듀레이션에서 (ii) 상기 시작 후 상기 최대 예상 트랜지션 듀레이션까지 확장됨 -
    을 포함하는 미디어 클라이언트.
  18. 제 17 항에 있어서,
    상기 동작들은 상기 제 1 미디어 스트림에서 상기 트랜지션 프레임들로의 페이딩을 추가하는 동작을 더 포함하는 미디어 클라이언트.
  19. 제 17 항에 있어서,
    상기 동작들은 상기 트랜지션 프레임들에서 상기 제 2 미디어 스트림으로의 페이딩을 추가하는 단계를 더 포함하는 미디어 클라이언트.
  20. 제 17 항에 있어서,
    상기 트랜지션 프레임들은 (i) 블랙 프레임들, (ii) 무음 프레임들, 및 (iii) 상기 제 1 미디어 스트림의 마지막 재생 프레임의 사본인 프레임들로 구성된 그룹으로부터 선택되는 프레임들을 포함하는 미디어 클라이언트.
KR1020217006327A 2018-08-17 2019-06-07 미디어 스트림 재생들 사이를 트랜지션하는 동안 트랜지션 프레임들의 동적 재생 KR102469142B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862765161P 2018-08-17 2018-08-17
US62/765,161 2018-08-17
US16/183,185 US11178451B2 (en) 2018-08-17 2018-11-07 Dynamic playout of transition frames while transitioning between playout of media streams
US16/183,185 2018-11-07
PCT/US2019/035996 WO2020036667A1 (en) 2018-08-17 2019-06-07 Dynamic playout of transition frames while transitioning between playout of media streams

Publications (2)

Publication Number Publication Date
KR20210029829A KR20210029829A (ko) 2021-03-16
KR102469142B1 true KR102469142B1 (ko) 2022-11-22

Family

ID=69523660

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006327A KR102469142B1 (ko) 2018-08-17 2019-06-07 미디어 스트림 재생들 사이를 트랜지션하는 동안 트랜지션 프레임들의 동적 재생

Country Status (7)

Country Link
US (3) US11178451B2 (ko)
EP (1) EP3837846A4 (ko)
JP (1) JP7191226B2 (ko)
KR (1) KR102469142B1 (ko)
CN (1) CN111418215B (ko)
TW (2) TWI716017B (ko)
WO (1) WO2020036667A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11178451B2 (en) 2018-08-17 2021-11-16 Roku, Inc. Dynamic playout of transition frames while transitioning between playout of media streams
WO2020231817A1 (en) * 2019-05-10 2020-11-19 The Nielsen Company (Us), Llc Content-modification system with determination of input-buffer switching delay feature
US11134305B2 (en) * 2019-05-10 2021-09-28 Roku, Inc. Content-modification system with volume level adjustment feature
US11212597B2 (en) * 2019-05-15 2021-12-28 Tencent America LLC Early termination of content
US11503227B2 (en) * 2019-09-18 2022-11-15 Very 360 Vr Llc Systems and methods of transitioning between video clips in interactive videos
EP4002853B1 (en) * 2020-11-11 2023-07-19 Milestone Systems A/S Video surveillance system
US11750881B2 (en) * 2020-11-24 2023-09-05 Roku, Inc. Server-side matching of supplemental content audio to perceived audio by end-user
US11882322B2 (en) * 2022-05-12 2024-01-23 Roku, Inc. Managing content replacement in a content modification system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033633A1 (en) * 2005-08-08 2007-02-08 Princeton Server Group, Inc. Method and apparatus for providing a transition between multimedia content
US20170251039A1 (en) * 2013-08-01 2017-08-31 Spotify Ab System and method for transitioning between receiving different compressed media streams

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002237748A1 (en) 2000-10-19 2002-05-21 Loudeye Technologies, Inc. System and method for selective insertion of content into streaming media
US20030001977A1 (en) 2001-06-28 2003-01-02 Xiaoling Wang Apparatus and a method for preventing automated detection of television commercials
US8220018B2 (en) 2002-09-19 2012-07-10 Tvworks, Llc System and method for preferred placement programming of iTV content
US20040237102A1 (en) * 2003-03-07 2004-11-25 Richard Konig Advertisement substitution
RU2009100847A (ru) * 2006-06-13 2010-07-20 Конинклейке Филипс Электроникс Н.В. (Nl) Идентификационная метка, устройство, способ для идентификации и синхронизации видеоданных
US9009066B2 (en) * 2009-02-12 2015-04-14 Echostar Technologies L.L.C. Advertisement management for live internet multimedia content
US20100218208A1 (en) 2009-02-26 2010-08-26 Comcast Cable Communications, Llc Method and Apparatus for Generating Alternative Commercials
US9015741B2 (en) * 2009-04-17 2015-04-21 Gracenote, Inc. Method and system for remotely controlling consumer electronic devices
US10410222B2 (en) 2009-07-23 2019-09-10 DISH Technologies L.L.C. Messaging service for providing updates for multimedia content of a live event delivered over the internet
US8875167B2 (en) 2009-09-21 2014-10-28 Mobitv, Inc. Implicit mechanism for determining user response to media
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
KR101528991B1 (ko) * 2011-01-11 2015-06-15 애플 인크. 실시간 또는 준 실시간 스트리밍
US9066121B2 (en) * 2011-08-09 2015-06-23 Google Technology Holdings LLC Addressable advertising switch by decoupling decoding from service acquisitions
US8990849B2 (en) 2012-02-14 2015-03-24 Verizon Patent And Licensing Inc. Advertisement insertion into media content for streaming
TWI482494B (zh) 2012-07-09 2015-04-21 Wistron Corp 頻道資訊提示方法及系統以及電腦可讀取儲存媒體
US8928678B2 (en) 2012-08-02 2015-01-06 Intel Corporation Media workload scheduler
US8732745B2 (en) 2012-10-22 2014-05-20 Sony Corporation Method and system for inserting an advertisement in a media stream
US8913882B2 (en) 2012-12-31 2014-12-16 Eldon Technology Limited Auto catch-up
US9351023B2 (en) 2013-03-15 2016-05-24 Echostar Technologies L.L.C. Output of broadcast content with portions skipped
US9369506B2 (en) 2013-06-05 2016-06-14 Adobe Systems Incorporated Insertion of supplementary content into a segmented content stream
US9723377B2 (en) * 2014-04-28 2017-08-01 Comcast Cable Communications, Llc Video management
DE102014220423A1 (de) 2014-10-08 2016-04-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Erzeugen eines Videoausgangsdatenstroms, Videoquelle, Videosystem und Verfahren zum Erzeugen eines Videoausgangsdatenstroms bzw. eines Videoquellendatenstroms
CN104581396A (zh) * 2014-12-12 2015-04-29 北京百度网讯科技有限公司 一种推广信息的处理方法及装置
US20160316261A1 (en) * 2015-04-23 2016-10-27 Sorenson Media, Inc. Automatic content recognition fingerprint sequence matching
JP2017041289A (ja) 2015-08-20 2017-02-23 三菱電機株式会社 メディア再生装置
US9723347B2 (en) * 2015-10-01 2017-08-01 Sorenson Media, Inc Frequency capping for media content
CN107197371B (zh) * 2016-03-15 2019-12-13 广州市动景计算机科技有限公司 视频清晰度的切换方法及装置
CN105847888A (zh) 2016-03-28 2016-08-10 乐视控股(北京)有限公司 一种广告投放方法、终端及***
CN106170103B (zh) 2016-06-07 2019-04-12 腾讯科技(北京)有限公司 视频播放方法和装置
US9972360B2 (en) 2016-08-30 2018-05-15 Oath Inc. Computerized system and method for automatically generating high-quality digital content thumbnails from digital video
CN107888993B (zh) * 2016-09-30 2020-11-06 华为技术有限公司 一种视频数据的处理方法及装置
US10560730B2 (en) 2016-11-09 2020-02-11 Samsung Electronics Co., Ltd. Electronic apparatus and operating method thereof
KR101899576B1 (ko) 2017-02-02 2018-09-17 네이버 주식회사 멀티미디어 컨텐츠의 원격 운영을 위한 시간 동기화 방법 및 그 시스템
CN107277554B (zh) 2017-05-05 2019-06-21 中广热点云科技有限公司 一种时移节目单播转换组播的方法
US10674199B2 (en) 2017-08-28 2020-06-02 Otis Elevator Company Media content selection for passengers
CN107707969A (zh) 2017-09-04 2018-02-16 深圳市屯奇尔科技有限公司 视频播放方法、装置及终端设备
US11178451B2 (en) 2018-08-17 2021-11-16 Roku, Inc. Dynamic playout of transition frames while transitioning between playout of media streams
US11317143B2 (en) 2018-08-17 2022-04-26 Roku, Inc. Dynamic reduction in playout of replacement content to help align end of replacement content with end of replaced content

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070033633A1 (en) * 2005-08-08 2007-02-08 Princeton Server Group, Inc. Method and apparatus for providing a transition between multimedia content
US20170251039A1 (en) * 2013-08-01 2017-08-31 Spotify Ab System and method for transitioning between receiving different compressed media streams

Also Published As

Publication number Publication date
US11178451B2 (en) 2021-11-16
EP3837846A4 (en) 2022-05-11
JP2021534698A (ja) 2021-12-09
TW202123717A (zh) 2021-06-16
TWI716017B (zh) 2021-01-11
KR20210029829A (ko) 2021-03-16
EP3837846A1 (en) 2021-06-23
US20200059691A1 (en) 2020-02-20
TW202010313A (zh) 2020-03-01
WO2020036667A1 (en) 2020-02-20
CN111418215B (zh) 2022-05-17
US20230112570A1 (en) 2023-04-13
CN111418215A (zh) 2020-07-14
US11812103B2 (en) 2023-11-07
JP7191226B2 (ja) 2022-12-16
TWI760981B (zh) 2022-04-11
US20220038770A1 (en) 2022-02-03
US11503366B2 (en) 2022-11-15

Similar Documents

Publication Publication Date Title
KR102536652B1 (ko) 대체 컨텐츠의 종료를 피대체 컨텐츠의 종료에 맞춰 정렬하는 것을 지원하기 위한 대체 컨텐츠 재생의 동적 감소
KR102469142B1 (ko) 미디어 스트림 재생들 사이를 트랜지션하는 동안 트랜지션 프레임들의 동적 재생
TWI762117B (zh) 動態控制指紋辨識速率以促進媒體內容的時間準確性修訂
US10638180B1 (en) Media timeline management
JP7181989B2 (ja) 新規コンテンツを取得する際の予想待ち時間に基づくコンテンツ修正の事前準備

Legal Events

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