CN107710770B - 用于时间同步的多区域媒体流式传输的系统和方法 - Google Patents

用于时间同步的多区域媒体流式传输的系统和方法 Download PDF

Info

Publication number
CN107710770B
CN107710770B CN201680034765.4A CN201680034765A CN107710770B CN 107710770 B CN107710770 B CN 107710770B CN 201680034765 A CN201680034765 A CN 201680034765A CN 107710770 B CN107710770 B CN 107710770B
Authority
CN
China
Prior art keywords
playback device
media
leader
follower
playback
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201680034765.4A
Other languages
English (en)
Other versions
CN107710770A (zh
Inventor
肯尼斯·J·玛凯
金炳哲
塔维什·A·麦克莱伦
理查德·F·莱恩
切特·N·涅吉
帕斯卡尔·T·格特鲁尔
弓天正
托默·谢凯尔
瑞安·M·里夫金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN107710770A publication Critical patent/CN107710770A/zh
Application granted granted Critical
Publication of CN107710770B publication Critical patent/CN107710770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/43076Synchronising 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 the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices
    • 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
    • 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/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/43615Interfacing a Home Network, e.g. for connecting the client to a plurality of peripherals
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • 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/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44227Monitoring of local network, e.g. connection or bandwidth variations; Detecting new devices in the local network
    • 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing

Landscapes

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

Abstract

在普遍方面中,用于媒体回放的系统可以包括:被配置成通过数据网络从媒体投播装置接收媒体流的第一媒体回放装置;和被配置成接收媒体流的第二媒体回放装置,第二媒体回放装置是媒体回放组的成员。第一媒体回放装置和第二媒体回放装置可以共同地被配置成将第一媒体回放装置和第二媒体回放装置中的一个指定为媒体回放组的领导者回放装置。可以将未被指定为领导者回放装置的回放装置指定为媒体回放组的跟随者回放装置。第一媒体回放装置和第二媒体回放装置可以进一步共同地被配置成确定领导者回放装置与跟随者回放装置之间的时钟偏移。领导者回放装置可以被配置成:通过数据网络接收媒体流的广播;播放媒体流;以及将媒体流提供给跟随者回放装置。跟随者回放装置可以被配置成基于时钟偏移与领导者回放装置同步地播放媒体流。

Description

用于时间同步的多区域媒体流式传输的系统和方法
相关申请的交叉引用
本申请要求2015年9月28日提交的美国临时专利第62/233,972号的优先权,其公开内容以引用的方式并入本文。
技术领域
本公开涉及媒体流式传输。更具体地,本公开涉及在多个装置上的时间同步的媒体流式传输(例如,多区域媒体流式传输)。
发明内容
在一般方面中,用于媒体回放的系统可以包括:媒体投播(cast)装置,该媒体投播装置被配置成将媒体流广播到数据网络以便由媒体回放组进行回放;第一媒体回放装置,该第一媒体回放装置被配置成接收媒体流,该第一媒体回放装置是媒体回放组的成员;以及第二媒体回放装置,该第二媒体回放装置被配置成接收媒体流,该第二媒体回放装置是媒体回放组的成员。第一媒体回放装置和第二媒体回放装置可以共同地被配置成将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置。可以将第一媒体回放装置和第二媒体回放装置中未被指定为领导者回放装置的一个媒体回放装置指定为媒体回放组的跟随者回放装置。第一媒体回放装置和第二媒体回放装置可以进一步共同地被配置成确定领导者回放装置与跟随者回放装置之间的时钟偏移。领导者回放装置可以被配置成:接收来自数据网络的媒体流的广播;播放媒体流;以及将媒体流提供给跟随者回放装置。跟随者回放装置可以被配置成基于时钟偏移与领导者回放装置同步地播放媒体流。
实施方式可以包括以下特征中的一个或者多个。例如,第一媒体回放装置和第二媒体回放装置可以每个包括指示媒体回放组中的成员关系的相应记录。媒体回放组可以是第一媒体回放组,并且第一媒体回放装置的相应记录可以进一步指示第二媒体回放组中的成员关系。
该系统可以包括第三媒体回放装置,该第三媒体回放装置被配置成接收媒体流。第三媒体回放装置可以是媒体回放组的成员。第三媒体回放装置和领导者回放装置可以共同地被配置成确定领导者回放装置与第三回放装置之间的时钟偏移。领导者回放装置可以进一步被配置成将媒体流提供给第三媒体回放装置。第三媒体回放装置可以被配置成基于领导者回放装置与第三回放装置之间的时钟偏移与领导者回放装置同步地播放媒体流。
将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置可以包括:将第一媒体回放装置与数据网络的数据连接的质量的测量与第二媒体回放装置与数据网络的数据连接的质量的测量进行比较。
第一媒体回放装置和第二媒体回放装置中的每一个都可以被配置成实施广播服务,以广播指示媒体回放组中的成员关系的消息。广播消息可以包括向连接至数据网络的媒体回放装置和媒体回放组的成员请求响应的查询。
领导者回放装置将媒体流提供给跟随者回放装置可以包括:在带时间戳的数据分组的序列中将媒体流提供给跟随者回放装置。
由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放媒体流可以包括:由跟随者回放装置基于时钟偏移和跟随者回放装置的输出延迟与领导者回放装置同步地播放媒体流。可以基于领导者回放装置与跟随者回放装置之间的往返时间(RTT)来确定时钟偏移。
在另一个一般方面中,一种方法可以包括:将第一媒体回放装置与数据网络连接,第一媒体回放装置操作地与媒体回放组相关联;并且将第二媒体回放装置与数据网络连接,第二媒体回放装置操作地与媒体回放组相关联。该方法可以进一步包括:将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置,其中,可以将第一媒体回放装置和第二媒体回放装置中未被指定为领导者回放装置的一个媒体回放装置指定为媒体回放组的跟随者回放装置。该方法还可以包括:确定领导者回放装置与跟随者回放装置之间的时钟偏移;在领导者回放装置处接收媒体流以便由媒体回放组进行回放;并且由领导者回放装置播放媒体流。该方法仍然可以进一步包括:由领导者回放装置将媒体流提供给跟随者回放装置,以及由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放媒体流。
实施方式可以包括以下特征中的一个或者多个:例如,将第一媒体回放装置与数据网络连接可以包括:第一媒体回放装置发送指示第一媒体回放装置在媒体回放组中的成员关系的广播消息。广播消息可以包括向连接至数据网络并且操作地与媒体回放组相关联的媒体回放装置请求响应的查询。媒体回放组可以是第一媒体回放组,并且广播消息可以指示第一媒体回放装置在第二媒体回放组中的成员关系。将第二媒体回放装置与数据网络连接可以包括:第二媒体回放装置发送指示第二媒体回放装置在媒体回放组中的成员关系的广播消息。
将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为领导者回放装置可以包括:确定第一媒体回放装置的领导关系度量;确定第二媒体回放装置的领导关系度量;以及基于将第一媒体回放装置的领导关系度量与第二媒体回放装置的领导关系度量进行比较,将第一媒体回放装置和第二媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为领导者回放装置。第一媒体回放装置的领导关系度量可以基于第一媒体回放与数据网络的网络连接的一个或者多个属性。第二媒体回放装置的领导关系度量可以基于第二媒体回放与数据网络的网络连接的一个或者多个属性。
确定领导者回放装置与跟随者回放装置之间的时钟偏移可以包括,迭代地:由跟随者回放装置向领导者回放装置发送包括带时间戳的分组的同步请求,该带时间戳的分组指示跟随者回放装置的时钟的时间;由领导者回放装置接收来自跟随者回放装置的同步请求;由领导者回放装置响应于同步请求而发送同步响应,该同步响应包括领导者回放装置的时钟的时间和同步请求中包括的跟随者回放装置的时钟的时间的指示;以及由跟随者装置基于同步响应来确定:同步请求和同步响应的往返时间(RTT);以及基于RRT的时钟偏移。确定RTT可以包括:基于两个或者更多个同步响应来计算加权移动平均和线性回归中的至少一个。
将媒体流提供给跟随者回放装置可以包括:在带时间戳的数据分组的序列中将媒体流提供给跟随者回放装置。该方法可以包括:由领导者回放装置和跟随者回放装置缓冲媒体流的相应部分。
跟随者回放装置可以是第一跟随者回放装置,并且该方法可以包括:将第三媒体回放装置与数据网络连接。第三媒体回放装置可以操作地与媒体回放组相关联。该方法可以包括将第三媒体回放装置指定为第二跟随者回放装置,并且确定领导者回放装置与第二跟随者回放装置之间的时间偏移。该方法可以包括:由领导者回放装置将媒体流提供给第二跟随者回放装置,以及由第二跟随者回放装置基于领导者回放装置与第二跟随者回放装置之间的时钟偏移与领导者回放装置同步地播放媒体流。
该方法可以包括:由跟随者回放装置向领导者回放装置发送跟随者回放装置要离开媒体回放组的指示。响应于该指示,该方法可以包括:由领导者回放装置中止将媒体流提供给跟随者装置;以及由领导者回放装置更新媒体回放组的成员关系信息以移除该跟随者回放装置。
由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放媒体流可以包括:由跟随者回放装置基于时钟偏移和跟随者回放装置的输出延迟与领导者回放装置同步地播放媒体流。
媒体流可以是第一媒体流,并且该方法可以包括:在领导者回放装置处接收对由媒体回放组回放第二媒体流的请求。响应于对回放第二媒体流的请求,该方法可以包括:停止由领导者回放装置和跟随者回放装置回放第一媒体流。在停止回放第一媒体流之后,该方法可以包括:由领导者回放装置播放第二媒体流;由所述领导者回放装置将所述第二媒体流提供给所述跟随者回放装置;并且由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放第二媒体流。
附图说明
图1是图示了用于多区域媒体流式传输的系统的框图。
图2是图示了图1的系统的部件和这些部件之间的通信的示意图。
图3是图示了用于对包括多个回放装置的媒体回放组进行时间同步的媒体回放的方法的流程图。
图4是图示了用于指定媒体回放组的领导者装置的方法的流程图。
图5是图示了用于确定媒体回放组的领导者装置与跟随者装置之间的时钟偏移的方法的流程图。
图6是图示了用于向当前正在播放媒体的媒体回放组添加回放装置的方法的流程图。
图7是图示了用于回放装置离开媒体回放组的方法的流程图。
图8是图示了用于改变正在由媒体回放组播放的媒体流的方法的流程图。
图9是图示了用于确定媒体回放装置的音频输出延迟的方法的流程图。
图10是图示了可以用于实施此处描述的技术的计算装置和移动计算装置的示例的示意图。
在不同附图中的相似的附图标记表示相似的元件。对于所有这种元件,某些相似的元件的附图标记可能不会重复。
具体实施方式
本公开涉及用于媒体(例如,音频流式传输)的系统和方法,其中,回放在多个回放装置中时间同步(例如,多区域回放)。虽然大体上针对音频内容的流式传输(回放)讨论了本文描述的方法,但是要了解,本文描述的方法也可以用于其它类型的媒体诸如,视频、照片等的播放。
当通过数据网络从多个回放装置上的公共源(例如,媒体源装置)播放媒体时,多个回放装置的相应网络连接质量的变化可以造成多个回放装置之间的回放时间延迟。这种回放时间延迟可能负面地影响用户体验。通过使用本文描述的方法,可以通过包括领导者回放装置(领导者装置)和一个或者多个跟随者回放装置(跟随者装置)的媒体回放组来回放媒体。在这种实施方式中,通过使用此处描述的方法,领导者装置可以分别与跟随者装置中的每一个时间同步(例如,确定相应的时钟偏移和/或相应的时钟漂移)以考虑到相应的回放装置(领导者装置和/或跟随者装置)的网络连接的变化。领导者装置可以(例如,从媒体源装置)接收媒体流以便由领导者装置和跟随者装置(媒体回放组)进行回放。领导者装置然后可以播放接收到的媒体流,并且还将接收到的媒体流提供给其相关联的跟随者装置。跟随者装置可以基于其与领导者装置的相应时间同步来播放从领导者装置接收到的媒体流。
图1是图示了根据实施方式的可以用于多区域时间同步的媒体流式传输(媒体回放)的系统100的框图。系统100作为示例示出并且是为了进行说明。在其它实施方式中,多区域媒体流式传输系统可以具有若干其它配置。
如图1所图示,系统100包括第一用户装置110(例如,可以使用该第一用户装置来开始或者停止媒体投播(广播)和/或提供用于流式传输的媒体)和第二用户装置120。用户装置110和120可以采用多种形式,诸如,智能电话、膝上型计算机、笔记本计算机、媒体播放器装置、电视等、例如,在图1的系统100中,用户装置110和120可以是具有数据网络通信能力的计算装置。
图1的系统100还包括第一回放组领导者装置130和第二回放组领导者装置140。领导者装置130和140可以是能够播放流媒体(例如,从用户装置110和120接收到的媒体和/或在诸如互联网的数据网络上的媒体,领导者回放装置130、140可以获得该媒体以便进行媒体投播)的装置,并且还具有与多区域媒体流式传输系统100(诸如,本文描述的多区域媒体流式传输系统)的其它回放装置的数据网络通信能力(例如,用于获得和/或传送媒体数据和控制数据)。
如图1所示,系统100还包括第一回放组跟随者装置150、第二回放组跟随者装置160、和第三回放组跟随者装置170。领导者装置130和140可以是能够播放流媒体(例如,从用户装置110和120接收到的媒体、从互联网接收到的媒体等)的装置并且还具有数据网络通信能力(例如,以便与多区域媒体流式传输系统100的其它装置进行通信)。在领导者装置(130、140)处接收到的媒体然后可以由领导者装置和对应的跟随者装置(150、160、170)通过使用此处描述的方法进行时间同步和回放(投播、流式等)。在一个实施方式中,给定的回放装置可以是多个回放组中的领导者装置和/或跟随者装置。
如图1所示,跟随者装置150和跟随者装置160在第一多区域媒体流式传输中与领导装置130操作地耦合。类似地,跟随者装置160和跟随者装置170在第二多区域媒体流式传输组中与领导者装置140可操作地耦合。在系统100中,跟随者装置160是第一多区域媒体流式传输组和第二多区域媒体流式传输组二者的成员(操作地与这二者相关联)。在其它实施方式中,其它布置也是可能的,例如,系统可以包括附加的或者更少的媒体流式传输装置、具有附加的或者更少的回放组、与单个装置具有回放组等。
在系统100中,可以诸如通过使用本文描述的方法动态地确定对于给定的回放组关于回放组装置130至170中的哪些装置是领导者装置以及哪些装置是跟随者装置的确定。通过使用这种方法,尽管在图1中未示出,作为一个回放组中的跟随者装置的回放装置可以是另一回放组中的领导者装置,反之亦然。回放组内的装置可以彼此结合操作以使用时间同步(例如,诸如,根据本文描述的方法)来回放媒体流式传输(例如,数字音频流式传输等)以在给定的回放组中的各个回放(例如,领导者装置和跟随者装置)上同步地回放媒体流式传输。
在实施方式中,可以在每装置(回放装置)的基础上完成诸如本文讨论的回放组的配置。例如,给定的回放装置(例如,在系统100中)可以追踪其作为成员的回放组(组),而不依赖维护组成员关系信息的集中的标准源。在这种实施方式中,回放装置仅可以在其在线时添加至组和/或从组移除。
按照这种方法,当回放装置在线(或者添加至组)时,其可以使用多播域名系统(mDNS)广播消息(或者其它适合的机制)来宣告其组成员关系,诸如图2所示。基于这种消息,在系统100中的其它在线回放装置(已经在线的)或者其它多区域媒体流式传输系统可以在所有装置在线时动态地确定所有装置的组成员关系。新在线的回放装置也可以发送对现有在线装置的组成员关系信息的mDNS请求(或者其它适合的协议请求)。基于对该请求的响应,新在线装置可以建立所有其它在线装置的组成员关系信息。类似地,当从组移除回放装置和/或回放装置加入另一组时,其可以通知其新组配置,使得其它在线装置可以更新其关于宣告装置的组成员关系知识。
当组被解散(例如,从可用回放组移除组)时,可以将解散通知发送至该回放组中的装置。然而,作为解散组的成员的某些装置可能无法在线以接收对应的解散通知。在这种情况下,当解散通知时离线的那些组成员在线时,为了避免被解散的组再次出现(例如,在例如用户装置110、120的媒体源装置上向用户显示的可用回放组的列表中),可以持续地将组解散通知存储在所有本地的、在线的装置中(例如,直到所有组成员被通知为止)。当被解放的组的先前离线装置再次在线时并且通过其在被解散的组中的成员关系时,其它在线装置然后可以向先前离线装置发送先前的解散通知。在一些情况下,新在线装置可能没有认识到其作为成员的组已经被解散(例如,当该新在线装置宣告其在被解放的组中的成员关系时,被解散的组中没有成员在线)。在这种情况下,该组可以再次被解散(例如,通过来自媒体源装置(诸如,用户装置110、120)的用户)。
在特定实施方式中,例如,系统100的每个回放组可以由通用唯一标识符(UUID)来标识,可以在创建给定的回放组时随机生成该通用唯一标识符。可以使用这种UUID来确定组成员关系,并且还使用这种UUID来标识已经被解散的组。在特定实施方式中,用户可以创建具有相同的(例如,文本标签)名称的两个逻辑上不同的组(不同的UUID)和/或回放组可以具有多个装置,该多个装置具有相同的(例如,文本标签)名称。
在其它实施方式中,基于云的存储装置(例如,本地云存储装置、互联网云存储装置等)可以用于维护组成员关系信息。因为回放组信息与给定的回放组的装置分开维护,所以这种实施方式将会允许显示在线的组成员的能力和从组移除离线装置的能力。按照这种方法,在启动时,在装置离线时从组移除的装置可以在其上线时,作为初始化进程的一部分,与装置是其成员(装置认为是其成员)的每个组(例如,由组的UUID作为键)的基于云的成员关系信息同步,以确定是否已经从组移除了该装置(或者该组是否已经被解散)。类似地,回放装置(例如,领导者装置130、140和跟随者装置160、170、180)可以使用这种基于云的成员关系信息来确定回放装置是其成员(回放装置认为是其成员)的每个组的完整的组成员关系。
如上文简要提到的,回放组配置进程可以包括作为将“服务宣告”(例如,mDNS)消息传输(广播)至其它在线回放装置的至少一个组的成员的每个回放装置,诸如在图2中图示的。在示例实施方式中,这种消息可以是文本(TXT)记录,其中,TXT记录的第一条目可以是装置ID(例如,按照格式“id=<device ID>”)。TXT记录中的附加条目可以列出给定的回放装置是其成员的所有组。例如,装置是其成员的每个回放组的对应条目可以包含组名称和UUID;给定装置是否认为其当前是给定回放组的领导者的指示;给定回放组是否当前正在投播(播放)媒体的指示(例如,在回放组领导者装置的TXT记录中)。
在一些实施方式中,条目可以是符合RFC 6763第6节的要求的基于DNS的服务发现(DNS-SD)TXT记录。例如,组列表可以是<length><key>=<value>条目的列表,每组一个条目。<key>可以是编码为小写十六进制的组UUID;可以将<value>编码为<flags>|<groupname>,其中,<flags>包含关于当前组状态的编码为以10为底的整数的位标志。这种标志可以如下,尽管其它标志也是可能的。例如,值为0x01的标志可以指示对应的回放装置是(相信其是)给定回放组的当前组领导者。值为0x02的标志可以指示对应的回放组当前正在播放当前被投播的媒体。值为0x04的标志可以指示对应装置已经明确地被配置成回放组领导者。在其它实施方式中,可以使用其它标志和/或其它标志值。
可以被包括在系统100的装置的DNS信息中的服务(SRV)记录可以包含记录的优先级和权重字段中的“领导关系度量”(例如,作为32位度量)。SRV记录还可以包含广告的服务的主机IP地址和端口ID。(组的所有成员的)领导关系度量可以由每个组成员用来确定哪个装置应该是给定回放组的回放组领导者(例如,可以将具有最大领导关系度量的装置选择为(标识为)领导者)。在实施方式中,给定的回放装置的领导关系度量可以确定为如下:
如果回放装置(例如,跟随者装置150、160、170中的一个跟随者装置)不具备作为回放组领导者的能力,诸如由于有限的CPU/存储器,则其可以返回0作为其领导关系度量。对于具有充当回放组领导者的能力的装置,可以将领导关系度量确定为给定的回放装置的网络质量的测量。在实施方式中,该测量可以计算为如下:如果给定的回放装置经由以太网连接连接至对应的回放系统(回放组),则可以将网络质量的测量设置为100*65536。否则,可以将网络质量的测量设置为10*65536+给定的回放装置的以dBm为单位的(测得)WiFi信噪比(SNR)。如果WiFi网络是5GHz,则可以给出用于确定网络质量测量的SNR值,例如“升高”(例如,添加至给定的回放装置的测得SNR的值),以确定可以用于确定给定回放组的领导者装置的有效SNR值(通过与回放组的其它回放装置的有效SNR值进行比较)。如果回放装置“始终接通”,则其质量测量可以乘以与实施方式相关的(缩放、加权等)常数。
在特定实施方式中,可以使用用于确定领导关系度量(质量测量)的其它方法。例如,如果回放装置的测得SNR超出SNR阈值(例如,在示例实施方式中,25dBm阈值),则可以为经由5GHz WiFi连接至回放组的回放装置添加对用于确定领导关系度量的有效SNR值的附加升高。例如,该附加的有效SNR升高可以被确定为3*(测得或者有效的SNR-SNR阈值),其中,(在示例中,3)的乘数值可以基于具体实施方式而改变。进一步地,在特定实施方式中,对于经由处于任何频率的WiFi连接的回放装置,可以将另一附加的固定升高值(例如,6dBm)给到(添加至等)有效SNR值(例如,测得SNR加上任何先前添加的升高值),该有效SNR值用于确定当前指定为回放组领导者的回放装置的领导关系度量,这可以减小由于回放装置的相应的SNR(例如,测得/实际SNR)的波动在相关联的回放组的装置之间交换的回放组领导者的频率。
使用上述方法,可以使用以下序列来计算(确定)用于计算经由WiFi连接连接至回放组的回放装置的领导关系度量的有效SNR(effective_SNR)值。初始地,可以将给定的回放装置的effective_SNR值设置为等于该装置的测得(实际)SNR。如果WiFi连接频率是5GHz,则可以将5GHz升高值(例如,8dBm、10dBm等)添加至先前的effective_SNR值(例如,在该示例中,实际SNR)。例如,如果给定的回放装置的WiFi连接频率是5GHz且测得SNR高于SNR阈值,可以将与测得SNR成比例的附加的升高值(诸如,上文讨论的)添加至先前确定的effective_SNR值。更进一步地,如果给定的回放装置当前被指定为相关联的回放组的领导者装置,则可以做出effective_SNR值的另一附加升高(例如,6dBm,诸如,上文讨论的)。
使用本文描述的方法,例如在系统100中的回放组成员可以在其上线时发现彼此,并且使用投播服务查询和投播服务宣告(例如,mDNS消息)追踪其它组成员,诸如图2所示。例如,当系统100的(回放)装置上线时或者当其组成员改变时,其可以宣告这种事件和/或改变。在线的回放装置还可以查询所有其它本地回放装置。在超时时段(例如,1秒)之后,在线的回放装置可以确定其是其成员的每个回放组的组领导者。例如,可以使用下文讨论的方法来确定回放组的领导者装置。
如果在回放组中只有一个回放装置(例如,一个活动的、在线的装置等),则将该装置指定为回放组领导者。如果回放组当前正在投播(流式传输)媒体,则被指定为回放组领导者的回放装置保持领导者直到媒体投播结束。否则,使具有最高领导关系度量(例如,effective_SNR值)的回放装置作为回放组领导者。如果多个装置具有相同的领导关系度量,则可以通过将这些多个装置的IP地址进行比较来确定领导者装置。在一种实施方式中,可以将具有最低IP地址的回放装置选择为领导者。在另一实施方式中,可以将具有最高IP地址的回放装置选择为领导者。在其它实施方式中,可以使用其它方法(例如,使用其它参数)来确定从具有相等的领导关系度量值的回放装置的领导者。
一旦给定的回放装置为其是其成员的回放组确定组领导者(假设该给定的回放装置不是领导者),回放(跟随者)装置就可以与领导者装置建立可靠的数据传输连接例如TCP连接,其中,数据传输连接然后可以用于认证跟随者装置和建立加密密钥。在示例实施方式中,TCP连接超时可以是15秒。如果跟随者装置的给定TCP连接超时,则可以假设相关联的领导者装置离线(例如,死机),并且跟随者装置(例如,与系统100的回放组中的其它装置协作)可以确定新领导者(例如,通过重新查询相关联的回放组中的回放装置开始)。为了确定领导者装置是否活动,替选,给定的跟随者装置可以开始向领导者装置发送时钟同步(sync)请求。回放组中的每个跟随者装置可以每5秒钟至少向领导者装置发送一次这种时钟同步请求。如果跟随者装置在20秒内未(从所指示的领导者装置)接收任何时钟同步响应,则可以假设所指示的领导者装置已经丢失(例如,已经离线、不插电、断开等)并且可以确定相关联的回放组的新领导者(例如,通过重新查询开始)。每当回放组领导者装置改变时,相关联的跟随者装置应该与新领导者装置建立连接(例如,TCP和时间同步)。
在实施方式中,如果回放装置认为其应该成为给定回放组的新组领导者,则该回放装置可以进入探测状态,将其SRV和TXT记录(如上文讨论的)放入对应探测查询的授权部分。在接收到该查询时,当前领导者(若存在)检查该查询以查看探测装置实际上是否应该是领导者(例如,基于领导关系度量)。如果当前领导者确定其应该被替换,则其应该立即发送用于其领导者服务的再见分组,并且注销作为组领导者。探测装置可以在先前的领导者装置注销之后完成探测(例如,在大约1秒或者更少的时间内)并且成为新领导者。按照这种方法,可以存在其中对于给定回放组不存在领导者的短时间窗口(例如,大约1秒或者更少的时间)。
在特定实施方式中,在组投播(例如,多区域媒体投播)期间可能无法改变回放组的领导者。在这种实施方式中,如果组领导者离线,则回放停止。类似地,如果用户例如从用户装置110和用户装置120将不同的媒体流(与当前正在投播的媒体流不同)直接投播至当前投播组的领导者装置(或者包含该领导者的另一组),则第一(当前)组投播可以停止。按照这种方法,为了用户体验一致性,如果用户投播至任何数量的当前投播组(或者重叠该当前投播组的另一组),则当前组投播可以停止,并且新投播然后可以在目标回放装置/回放组上播放。然而,相比之下,在这种实施方式中,如果当前投播组的回放组成员(跟随者装置)离线和/或由于某些其它原因变得不可用,则组投播可能不会停止,这将避免如果一个(或者多个)回放组跟随者成员(例如,由于不良的网络连接和/或其它问题)在在线与离线之间反复循环则回放组媒体回放反复停止和开始。
为了在执行组媒体投播时支持在不同的媒体播放器和/或媒体投播应用之间的兼容性,与投播至单个装置相比,回放组领导者(若存在)可以将其自身宣告为具有相关联的组名称的回放服务,但指向(指定)与其标准默认媒体投播端口不同的端口(用于组回放服务),使得对回放组的启动请求与可以与对该特定装置(例如,作为不是投播组的一部分的单个回放装置)的启动请求区分开。按照这种方法,投播组然后可以作为虚拟装置而操作。注意,在一些实施方式中,如果只有一个在线组成员,则回放装置可能不会宣告组投播服务。
然而,在特定实施方式中,每个媒体投播会话(例如,图1的系统100中的用户装置110或者用户装置120所请求的每个媒体投播会话)可以被配置成作为组回放而操作(即使针对最初对单个回放装置而不是预定投播组做出的投播请求)。可以通过使具有最初发送至单个回放装置的所有媒体投播会话使用本文针对多个回放装置投播组描述的方法建立来实施这种方法(可以将该方法称为实施点播的组或者点播组)。在这种实施方式中,可以在投播期间的任何时间将跟随者装置容易地添加至相关联的投播会话/从相关联的投播会话移除跟随者装置,诸如,使用本文描述的技术。
一旦创建了点播组投播会话,其可以以与预定义的组投播会话相同的方式操作。例如,暂停、恢复、和其它功能可以被配置成按照从点播组中的任何装置工作。进一步地,回放组音量功能(例如,组音量和单独的装置音量)诸如本文描述的可以被配置成以对关于预定义的回放组的点播组相似的方式操作。实施这种点播组可以包括每个回放装置包括(定义)“虚拟组”成员关系条目(例如,在相应的TXT记录中),其中,将给定的回放装置的虚拟组成员关系定义为仅包含该回放装置。按照这种方式,相关联的媒体回放系统诸如系统100可以被配置成使得这些虚拟组在被用户选择(例如,在媒体投播、发送者、应用中)作为可用于回放的回放装置时不出现。然而,可以使用虚拟组来运用(利用)由预定义的投播组进行媒体回放的功能。
在特定实施方式中,添加至点播组的媒体回放的回放装置可以被视作正被投播至的对应回放组的“临时”成员。换言之,在这种实施方式中,只要这种投播会话停止(并且相关联的点播组未启动或者被解散),临时成员可以被配置成从点播组移除它们自己。
为了加入正在进行的投播会话(例如,加入点播组),多区域媒体回放系统诸如系统100的中的回放装置可以被配置成能够发现给定网络上的所有正在进行的媒体投播会话。例如,回放装置可以被配置成收听mDNS服务,其中,使用标志来指示当前正在投播的回放组。在包括点播组的实施方式中,因为所有的回放可以与组(包括单个装置回放的虚拟组)相关联,所以mDNS服务可以提供关于所有当前媒体投播会话的信息。
在实施方式中,当前回放装置可以被配置成向相同网络上的一个或者多个其它可用回放装置发送信号,以使那些其它装置加入(回放)与当前投播装置相同的媒体投播。上文提到的mDNS服务可以由当前投播装置用来标识一个或者多个其它可用投播装置。注意,已经是当前投播装置的投播组(永久或者临时)的一部分的回放装置可以忽略该信号。
为了在系统100(或者其它多区域媒体回放系统)中的给定的媒体投播回放组中的领导者装置130、140与跟随者装置150、160、170之间提供媒体流回放时间同步,回放组中的每个跟随者装置可以追踪其(例如,单调的)系统时钟与回放组领导者的(例如,单调的)系统时钟之间的时间偏移。在实施方式中,可以使用具有加权平均平滑和/或线性回归平滑的基于往返时间的(基于RTT的或者基于rtt的)方法来确定该偏移。下文将进一步详细地讨论这种方法。利用这种时间同步,领导者装置和相关联的跟随者装置可以考虑到网络延时(例如,网络质量诸如WiFi质量的变化),这使给定回放组的领导者装置和跟随者装置能够在不存在从一个回放装置到另一个回放装置的可察觉的回放时间延迟的情况下,在同一时间(大体上同一时间)回放媒体,从而改善了用户体验。
简要地,在系统100中的回放组中的装置之间的时间(时钟)同步可以使用由跟随者装置(例如,跟随者装置150、160、170)发送至包含跟随者装置的当前时钟时间的对应的领导者装置(例如,领导者装置130、140)的单播UDP请求分组来实现。在其它实施方式中,其它协议的使用也是可能的。在接收到请求分组之后,领导者装置然后可以用其自身的时钟时间和跟随者装置从请求中复制的时钟时间(例如,使得跟随者装置不需要追踪请求顺序)来进行响应。跟随者装置可以使用该响应来估计RTT和时钟偏移。
在特定实施方式中,系统100中的跟随者装置可以按照由跟随者装置的时钟偏移误差估计确定的速率发送请求(例如,如果跟随者装置认为其不具备时钟偏移的良好估计,则其可以更频繁地发送时间同步请求)。如果给定回放组当前未进行投播,则给定回放组的跟随者装置可以简单地大致每5秒钟发送一次这种请求。还可以使用这种方法来检测在没有通知的情况下,领导者装置何时离线。一旦已经启动媒体投播,跟随者装置可以每50毫秒或者更频繁地(根据偏移准确性,每5秒钟一次的最小周期)增加其时钟(时间)同步请求速率。
在示例实施方式中,可以使用具有10分钟的窗口大小的移动线性回归对原始时钟偏移估计进行平滑,以提供准确的时钟偏移估计。按照这种方法,对来自时间同步请求的RTT估计进行平滑,并且使用该RTT估计来确定何时应该针对音频流分组发送NACK,诸如,使用下文详细讨论的示例方法。
在图1的系统100或者在其它多区域媒体投播系统中的投播组的跟随者装置可以使用对等传输控制协议(TCP)全部连接至相关联的领导者装置(例如,只要领导者装置是已知的)并且使用任何数量的适合的认证技术来建立传输层安全(TLS)连接。当启动多区域媒体投播时,对应的领导者装置可以创建新随机密钥,该新随机密将用于对在投播(回放)组成员之间发送的数据进行加密。可以通过相应的TLS连接将该密钥分布至所有跟随者装置。如果跟随者装置在投播中途加入回放组(上线),则领导者也可以将密钥发送至跟随者装置。可以使用任何数量的适合的加密协议使用密钥对所有媒体内容(和其它数据)进行加密。可以不按照任何方式对时钟(时间)同步包进行加密或者认证时钟(时间)同步包。然而,可以对控制消息进行加密,并且通过TLS连接发送控制消息。
当使用本文描述的方法来诸如在系统100中启动组投播时,针对关联的媒体内容的领导者装置上的呈现进程可以被配置成将解复用的音频/视频流重定向至多区域(组)进程,以便进行本地回放(例如,通过领导者装置)并且用于(例如,音频数据的)到跟随者装置的分配(例如,以便由跟随者装置进行回放)。这可以使用任何数量的适合的媒体呈现服务来完成。若适用,对于特定实施方式,可以使用软件、硬件、和/或固件来管理数字版权管理。
当接收到组启动请求(例如,组媒体回放请求)时,指定的领导者装置(例如,使用本文描述的方法确定的)可以通过TCP控制信道将启动通知发送至所有跟随者装置。该通知可以包含关于所请求的组媒体投播的元数据并且还可以指示跟随者装置应该准备好要投播的媒体。响应于启动通知,跟随者装置可以每50毫秒增加其时钟(时间)同步请求速率(若必需/需要),其中,给定的跟随者装置的时间同步请求速率可以基于该跟随者装置的时钟偏移误差估计。还可以将启动通知发送至在投播已经开始之后加入的任何跟随者装置。
一旦(所请求的投播的)音频数据可用,领导者(例如,领导者装置130)可以将该音频数据流式传输至所有可用的跟随者装置(例如,跟随者装置150和160)。在该示例中,可以按照下文描述的格式来流式传输音频数据。一旦跟随者装置已经达到合理的良好时钟偏移估计(例如,当其相应的时钟偏移误差估计小于5毫秒时),每个跟随者装置可以开始回放音频数据。在大多数情况下,该回放将是即时的,因为在投播启动请求与开始流式传输媒体(例如,音频数据)之间可以存在几秒的时段,允许充足的时间完成在领导者装置与其相关联的跟随者装置之间的时钟同步。
在系统100中,可以使用具有重传的用户数据报协议(UDP)内的实时传输协议(RTP)(例如,参见RFC 4588)将音频数据(或者其它媒体数据)从例如领导者装置130流式传输至对应的跟随者装置150、160。在使用RTP用于音频流式传输的实施方式中,可以使用适合的RTP字段中的不同的同步源(SSRC)ID来标识每个音频数据流。重传的数据将使用与最初发送的数据相同的SSRC ID。根据领导者的时钟,每个音频数据分组中的时间戳可以是该分组的回放时间,并且每个跟随者可以使用其时钟偏移估计来确定每次回放的适合时间以维持与领导者装置的回放的时间同步。
在特定实施方式中,因为单独的内容帧可能过大而不适合单个分组,所以这种单独的内容帧可以被分成多个分组。按照这种方法,每个分组的前4个字节可以是16位帧ID和16位分组索引,其中,给定帧中的第一分组具有索引0。这种索引值可以按照网络字节顺序。可以通过在相关联的RTP报头中设置标记标志来指示帧中的最后一个分组。
只要通过跟随者装置检测到丢失分组(例如,由于序列号差距),跟随者装置(例如,跟随者装置150和160)可以(例如,向领导者装置130)发送对丢失分组的否定确认(NACK)。为了限制与NACK的传输相关联的带宽开销,在示例实施方式中,可能不会比每10ms发送一次更频繁地发送NACK。按照这种方法,如果在过去10ms内发送NACK,则对应的跟随者装置在发送了前一个NACK之后要等待10ms才能发送另一个NACK。NACK分组格式可以如RFC4585定义的那样。
在实施方式中,系统100的跟随者装置可以不针对在预计相关联的领导者装置的响应到达之前(例如,基于当前RTT估计)将会期满的分组发送NACK。可以将丢失分组的期满时间估计为下一个接收到的分组的期满时间。而且,领导者装置130、140可以被配置成不重发期满的分组。
按照这种方法,每个发送的NACK可以具有针对要重发的NACK的分组的相关联的超时时段,可以将该超时时段确定为<RTT估计>+<最大抖动>。如果在超时时段期满之后包仍然丢失,只要分组尚未期满,就可以对分组再次进行NACK(并且在期望接收到响应之前不会期满)。
当帧包含多个分组时,可以预计帧中的所有分组在特定间隔(例如,10ms)内到达。如果帧中的一些分组在已经过去了预期间隔(加上延时抖动)之后尚未到达,则可以对丢失分组进行NACK。而且,如果可以估计帧间间隔,则将在帧的最后一个分组之后针对下一个分组发送NACK。可以将对下一个分组的NACK检查定时为(帧间间隔+延时抖动)。
如上文讨论的,除了认证和密钥交换之外,在系统100中的领导者装置与相关联的跟随者装置之间的TLS/TCP控制信道(控制信道)可以由领导者装置用来将与多区域(组)媒体回放对应的各种命令发送至其相关联的(回放组)跟随者装置。这种命令可以包括:开始媒体流命令、暂停/恢复命令(该命令可以包括领导者装置要暂停或者恢复的时间戳,使得跟随者可以同步暂停和恢复)、结束媒体流命令(该命令可以包括最终媒体数据帧的序列号和时间戳)、和/或组回放的音量控制命令。在其它实施方式中,可以使用其它命令。
在系统100中,跟随者装置(例如,跟随者装置150、160)可以使用控制信道向其对应的领导者装置(例如,领导者装置130)发送信息。针对给定跟随者装置的这种信息可以包括音量信息(例如,用于响应于在领导者装置上进行的回放组音量调整而确定给定的回放装置上的音量调整)、暂停/恢复/下一个/前一个/停止通知(例如,如果用户按压给定的跟随者装置上的按钮)、以及离开流(离开回放组)通知(例如,如果跟随者装置接收本地(单个装置)投播启动请求,或者来自不同组的组投播启动请求)。
每当组处于启动(例如,投播媒体)状态时,每个回放装置(诸如图2所示和在下文中进一步详细讨论的)的多区域管理器可以为发送者应用(例如,在媒体源装置(诸如,用户装置110和120)上)提供用于控制每个投播组成员的单独的装置音量的机制。这可以经由传输名称空间(例如,多区域名称空间)来完成。
例如,当启动回放组(例如,组媒体投播)时,多区域管理器可以提供(实施)组音量控制机制。该音量控制机制可以使发送者应用(在媒体源装置上)能够按照协调方式控制组媒体投播的音量。例如,向发送者应用报告的组音量可以是单独的装置音量的平均。如果单独的回放装置(领导者或者跟随者)的音量设置改变(例如,由于装置上的音量控制按钮按压或者通过使用装置专用的音量改变应用编程接口(API)),则可以(例如,通过相应的多区域管理器)相应地调整组音量,诸如,按比例或者按照对应量。
例如,如果用户诸如从媒体源装置上的发送者应用增加投播组的音量(例如,将音量增加10%),则相关联的回放组中的每个回放装置(例如,领导者装置和跟随者装置)可以将其音量增加相同的量(10%)。按照这种方法,如果单独的装置的音量将增加到超过100%,则该装置的音量可以控制在100%(这然后可以反映在上文讨论的组音量中)。
如果用户减小组音量,则可以存在组音量行为改变的阈值(例如,给定回放装置的总可能音量的10%)。例如,如果所有的回放装置音量超出阈值,则可以简单地将每个装置音量减小与用户减少相同的量(例如,在发送者应用上)。然而,如果给定的回放装置的音量处于或者低于阈值,则行为可以改变,使得具有较高音量的装置比已经静音(例如,低于阈值的音量设置)的装置更快地减小其音量。这可以通过进行整体请求音量改变(例如,所有组成员中的总体改变,以对平均音量进行期望改变)并且在装置之间与其单独的装置音量成比例地划分音量改变来完成。例如,如果一个装置处于10%而另一个装置处于90%(组音量=50%),并且用户请求将组音量改变到40%,则总体改变是20%(10%乘以2装置),其中,2%应用于静音装置(达到8%),18%应用于强声装置(达到72%),从而产生40%的新平均(组)音量。
当减小回放组音量时,如果没有回放装置当前处于或者低于(低音量)阈值,但减小会导致至少一个装置超过阈值,则可以平均地在装置中划分这种减小,直到一个装置达到阈值为止。然后可以根据上文讨论的低于阈值的音量调整方法按比例地应用剩余的减小。
整体而言,当且仅当其所有成员都静音的情况下,可以将投播组视作是静音的。在特定实施方式中,用户可以选择将整个回放组静音/取消静音,在这种情况下整个回放组的所有成员一起(同时)静音/取消静音。为了实施这种静音/取消静音功能,多区域名称空间可以提供应用编程接口(API),该应用编程接口(API)被配置成将单独的组成员静音/取消静音和/或作为整体将回放组静音/取消静音。
在特定实施方式中,可以使用系统100来实施多信道配置。例如,在一些实施方式中,用户可以配置回放组的单独的组成员以仅回放正在被流式传输的媒体的单个信道(例如,左信道或者右信道)。可以在每回放组的基础上来完成这种多信道配置。例如,如果给定的回放装置是两个回放组的成员,则给定的回放装置可以被配置成在第一回放组正在播放媒体时仅播放左音频信道,并且在第二回放组正在回放媒体时仅播放右音频信道。在这种实施方式中,当跟随者装置连接至组领导者时,跟随者装置可以将关于其信道(多信道)配置的信息发送至领导者装置。领导者装置可以被配置成随后决定是否仅向每个跟随者装置发送必要的信道(例如,以减少网络带宽使用)。在任何情况下,在这种实施方式中,每个回放装置可以根据其相应的多信道配置而仅回放期望的信道,其中,可以使用本文描述的方法对这种回放进行时间同步。
图2是图示了根据实施方式的图1的系统100的用户装置110、领导者装置130和跟随者装置150以及用于多区域媒体流式传输的这些部件之间的通信的示例实施方式的示意图。如上文提到的,可以动态地确定领导者装置130并且从媒体投播组(回放组)内的一组媒体回放装置选择该领导者装置130。除了图2中示出的那些部件和元件,还可以包括其它部件,或者在某些实施方式中可以排除所图示的部件中的一些部件。
图2的装置可以操作为如下。回放装置(例如,领导者装置130和跟随者装置150)可以启动并且开始其相应的媒体投播服务。作为该启动的一部分,每个回放装置可以创建相应的多区域管理器212和242的实例,包括创建时间(时钟)同步服务,并且使这些实例初始化。每个回放装置然后可以上线并且发出服务查询,并且宣告其自身的投播服务(例如,在相应的服务查询中),从而指示该回放装置是其成员的投播(回放)组(例如,使用UUID)。可以接收对查询的响应,并且从这些响应中,每个回放装置可以确定网络上的哪些其它回放装置是该每个回放装置是其成员的相同回放组的成员。
对于给定的回放装置是其成员的每个回放组,给定的回放装置(例如,与每个回放组中的其它回放装置协作)然后可以确定哪个回放装置应该是该组的组领导者(基于包含在对应的SRV和/或TXT记录中的领导者质量信息,诸如,上文讨论的领导关系度量)。在图2中,将回放装置130(如图1中所示)确定为领导者装置,并且将回放装置150确定为跟随者装置。尽管在图2中仅示出了单个跟随者装置,但要了解,其它跟随者装置可以包括在图2中示出的布置中(诸如,在图1中的系统100中)并且可以按照与跟随者装置150相似的方式操作。
在该示例中,跟随者装置150然后可以创建跟随者组实例服务(跟随者组)236。跟随者组236可以创建领导者装置130的领导者组216实例的控制套接口(例如,TCP/TLS连接)238,并且创建时间同步请求器234,该时间同步请求器可以开始向领导者的时间同步响应器214发送时间同步请求分组。
在标识为领导者回放装置之后,领导者装置130可以创建领导者组实例216并且开始接受用于对应的回放组的控制套接口连接,诸如,从跟随者装置150的控制套接口238。领导者装置130还可以创建并且宣告组的投播服务(例如,使用mDNS广播消息)。如上文提到的,领导者装置130的SRV记录可以指示装置上专用于组的端口(例如,虚拟投播装置端口)。
使用图2中示出的布置将媒体投播至回放(投播)组可以执行为如下。用户可以打开用户装置110(该用户装置110可以是手持装置、膝上型计算机/计算机等)上的媒体投播app。该媒体投播app可以发出服务查询。然后可以响应于该查询而返回服务响应(宣告),包括该组的投播服务。用户然后可以将组选择为投播目标。响应于选择,可以建立与组专用的端口的传输连接(例如,经由投播连接202与投播接收器204的传输连接)。注意,这种传输连接还可以用于控制单个回放装置投播会话(例如,针对单个装置,非组投播)。
投播接收器204然后起动内容应用206。一旦启动内容应用206,领导者装置130的多区域管理器212可以从投播接收器204接收“起动app”通知。通过检查起动了应用的端口,多区域管理器212可以确定启动了内容应用206以将媒体投播至回放装置130是领导者的回放组。
多区域管理器212然后可以告知领导者组实例216正在启动内容应用206。例如,多区域管理器212可以将启动消息发送至所有联网的跟随者装置,包括跟随者装置150,其然后可以增加其时间(时钟)同步请求速率,诸如本文描述的。内容应用206然后可以打开音频输出流,可以将该音频输出流提供给本地流式传输器服务218的内容流式传输器220和同步音频输出222。例如,以由多区域管理器212拦截创建输出管线的调用可,然后可以由多区域管理器212将该调用提供给本地流式传输器218。内容应用206还可以配置本地流式传输器218进行媒体回放。多区域管理器212然后可以告知领导者组实例216以将音频配置信息发送至跟随者装置150(和领导者装置130的投播组的任何其它跟随者装置)。
内容应用206然后可以开始流式传输媒体数据,其可以通过内容应用206从例如互联网、用户装置110、或者任何其它适合的媒体数据源获得。在该示例中,本地流式传输器218可以对音频数据的每个音频数据的缓冲添加时间戳,以(基于领导者装置130的时钟)在音频流中播放将来1秒或者提前1秒,将带时间戳的缓冲传递至本地同步音频输出222,并且还将带时间戳的缓冲传递至内容流式传输器实例220以将其发送至跟随者装置(例如,跟随者装置150等)。跟随者组236的内容接收器230可以接收音频包(作为带时间戳的音频缓冲的子部分)并且将其聚集到完整的音频数据缓冲中,根据需要请求丢失的数据。基于来自时间同步请求器234的估计时钟偏移,将每个音频缓冲的时间戳调整为本地时钟时间。内容接收器然后可以将音频缓存数据传递至其同步音频输出242。同步音频输出实例222和242确保在音频缓冲的时间戳所指示的时间(例如,通过相应的音频输出管线224和234)播出每个音频缓冲(例如,基于缓冲时间戳,并且对于跟随者装置,其估计的时钟偏移)。
在其它实施方式中,领导者装置130可以尝试对回放的流进一步预先读取,例如,最多5秒。在特定实施方式中,当对预定义的回放组进行这种媒体投播时,可以使用500ms的回放延迟来使回放(跟随者)装置能够缓冲音频数据。在其它实施方式中,诸如,如本文描述的“点播组”,领导者装置可以在接收到回放请求时立即开始回放(例如,不对缓冲添加将来时间戳)。由于在这种方法中缓冲预先读取较长(例如,多达5秒),所以这种多区域投播系统可以更加容忍可能造成回放中的中断或者退出的临时网络故障,因为每个组成员可以具有针对正在被流式传输至相关联的回放组的媒体的多达5秒的缓冲数据。
按照这种方法,将数据发送至跟随者的速度可以是速率限制的。如果数据的发送速度过快,则所使用的带宽可以比相关联的网络连接可以支持的带宽更高,这可能会造成分组丢失和重发的分组,从而进一步影响带宽。在示例实施方式中,可以将数据速率限制为初始分组的回放速率的1.5倍(即,不重发),以及重发的分组的回放速率的2倍。
当按照这种方法暂停/恢复回放时,可以用暂停/恢复的预计时间戳向跟随者装置发送控制消息。每个跟随者装置然后可以在一获得暂停消息之后就立即暂停,并且在适合的时间戳处恢复回放(响应于恢复消息)。在这种实施方式中,领导者装置130必须追踪回放被暂停的时间,并且将该间隔(暂停的时间段)包括在针对其跟随者装置的恢复消息中。跟随者装置然后可以相应地更新其缓冲的数据时间戳,使得恢复的回放仍然是时间同步的。
在点播组实施方式中,如果媒体投播初始地投播至单个回放装置,则可以实现零音频回放延迟(例如,代替上文讨论的可以针对预定义的组投播使用的500ms的音频回放延迟)。零延迟的这种使用可能不会导致任何音频质量问题,因为对于单个回放装置初始的投播,(至少最初)不存在在开始投播时需要对回放进行时间同步的跟随者装置。预定义的组投播音频延迟将允许所有组成员在投播开始时开始回放。
在本文描述的技术中,例如,在领导者装置130与跟随者装置150之间的时间(时钟)同步的意图是测量两个装置之间的RTT,并且使用对RTT的该测量来计算时钟偏移。例如,请求器可以用初始发送时间(time_1)将时间同步请求分组发送至响应器。响应器可以接收分组,将其当前时间(time_2)添加至分组,并且然后将分组发送回请求器作为对时间同步请求的响应。请求器在接收到响应时然后可以获得其当前时间(例如,接收到响应的时间,在下文称为(now(现在)))。
如果在往返方向上的传输延时是相同的,则可以确定time_2-time_1=-偏移+延时,并且now-time_2=偏移+延时。因此,可以将时钟偏移估计为((now-time_2)-(time_2-time_1))/2。
然而,在许多情况下,传输延时在往返方向上不是相同的。例如,在WiFi网络中,可以随机地分布在每个方向上的传输延时。这意味着对于给定的RTT,偏移估计的误差最多为RTT/2。要注意,计算得到的延时还可以包括由于进程调度(在回放装置中)和时钟精度而引起的变化。然而,与由于WiFi引起的定向RTT变化相比,这种效果可能相对较小(例如,在几十微秒的数量级上)。
为了考虑到传输延时的变化,诸如按照本文描述的方法,可以使用多个样本来改进时钟偏移估计。在示例实施方式中,给定样本的误差可以最初估计为(RTT/2)。然后可以使用样本的简单加权平均,其中,权重=1/error^2=1/RTT^2。该方法最初可以用来快速确定准确的时钟偏移估计(即使采用1个样本,如果RTT很低)。可以由样本误差的加权和近似加权平均的误差。
然而,在一些实施方式中,使用加权平均可以不提供时钟漂移的估计,并且如果一个时钟比另一个时钟更快,则可以引入一致的偏置(例如,其中,在平均周期内,偏置等于时钟漂移的1/2)。因此,如本文描述的,可以使用移动加权线性回归来准确地估计时钟偏移,并且移动加权线性回归还考虑到任何时钟漂移速率。在示例实施方式中,使用移动线性回归窗口(具有相对较长的窗口时段,例如,近似于5至10分钟)可能更准确,以便考虑到时钟漂移速率随着时间的任何改变。
在图2的示例中,跟随者装置150的多区域管理器232可以维护时钟偏移的移动平均和移动线性回归估计二者,并且基于来自每一个结果的估计误差产生最终时钟偏移估计作为这两个结果的加权平均。而且,移动平均估计权重可以在已经经过了初始时段之后线性下降至0。下文提供了针对时钟偏移估计使用这种方法的经验示例。
在该经验示例中,描述了两个装置,“领导者”装置(领导者装置130)和“跟随者”装置(跟随者装置150),诸如图2所示。也可以使用这种方法对其他组的领导者和跟随者装置进行时间同步。而且,在该示例中,跟随者装置150正在尝试估计其系统时钟与领导者装置130的系统时钟之间的偏移。这两个装置通过WiFi网络进行通信。
最初,在该示例中,领导者装置130的时钟是1000000(微秒),并且跟随者装置150的时钟是2000000。领导者装置130的时钟将具有/具有20ppm的漂移,因此在1秒钟内将其增加到1000020。跟随者装置150的时钟在该示例中不具有可感知的漂移。注意,在该示例中,跟随者装置150无法确定领导者在任何给定时间的精确时钟值或者确定任一时钟的漂移速率。
在该经验示例中,跟随者装置150将初始请求(例如,时间同步请求)发送至领导者装置130,从而包含其当前时钟值(2000000)。该请求花费50000微秒来到达领导者装置130。领导者装置130将响应发送回跟随者装置150,该响应包含领导者装置的当前时钟值(1050001)和跟随者装置150的来自请求的时钟值。该响应花费10000微秒返回至跟随者装置150。当跟随者装置150接收响应时,跟随者装置获得当前时间(2060000)。跟随者装置150然后可以计算往返时间(2060000–2000000=60000)和偏移估计((2060000-1050001)-(1050000-2000000))/2=980000微秒。跟随者装置150现在具有一个样本(时间=206000,偏移=980000,权重=1/RTT^2=2.78*10-10)。将该样本添加至加权线性回归和加权平均。在该示例中,因为线性回归需要至少3个样本来准确地估计误差,并且加权平均需要至少2个样本来准确地估计误差,所以还不能计算基于线性回归和/或加权平均的偏移估计。
继续参照前述示例,跟随者装置150然后可以在其时钟达到2100000时做出另一时间同步请求。这次,请求花费5ms到达领导者(在领导者装置130的时钟上,在1105002),并且响应花费5ms返回(在跟随者装置150的时钟上,在2110000)。RTT是10000,并且偏移估计是999998。跟随者装置然后可以将另一样本(时间=2110000,偏移=999998,权重=1.0*10-8)添加至线性回归和加权平均。
此时,在该示例中,可以使用加权平均来估计偏移和误差。加权平均是(980000*2.78*10-10+999998*1.0*10-8)/(2.78*10-10+1.0*10-8)=999458微秒。加权的方差是(2.78*10-10*(980000-999458)2+1.0*10-8*(999998--999458)2)/(2.78*10-10+1.0*10-8)=10516521,并且标准误差是3243。由于仅获得了两个RTT样本,还不能使用线性回归进行估计。因此,时钟偏移的当前估计是999998微秒,其中,误差估计为3243微秒(基于双样本加权平均)。
再次继续参照上述示例,跟随者装置150可以在其时钟达到2200000时进行第三时间同步请求。在该示例中,第三请求花费10ms到达领导者装置130(在领导者装置130的时钟上,在1210004)并且花费20ms返回至跟随者(在领导者装置150的时钟上,在2230000)。RTT是30000,并且偏移估计是1004996。跟随者装置现在可以将另一(第三)样本(时间=2230000,偏移=1004996,权重=1.11*10-9)添加至线性回归和加权平均。
加权平均现在是(980000*2.78*10-10+999998*1.0*10-8+1004996*1.11*10-9)/(2.78*10-10+1.0*10-8+1.11*10-9)=999997微秒。加权方差是(2.78*10-10*(980000-999997)2+1.0*10-8*(999998 999997)2+1.11*10-9*(1004996 999997)2)/(2.78*10-10+1.0*10-8+1.11*10-9)=12197537,并且标准误差是3492。
由于已经获得了三个样本,所以现在可以计算加权线性回归,其中,x值是取得样本的时间,并且y值是每个样本的偏移。x的加权均值(mean)是2120476,并且y的加权均值是999997。加权协方差(covariance)是sum(weight[i]*(x[i]x_mean)*(y[i]y_mean))/sum(weight[i])=82879170。x方差(variance)是sum(weight[i]*(x[i]x_mean)2)/sum(weight[i])=1354866562。y方差是12197537。斜率(slope)然后是covariance/x_variance=0.06117。当前x差是(当前时间x_mean)=109524,并且估计偏移是y_mean+slope*x_diff=1006697。
残差平方和是covariance2*sum(weight[i])/x_variance=0.05773,均方差是y_variance-rss=0.08117。斜率方差是mse/x_variance=0.0052608。截距方差是slope_variance*x_variance=7127697。然后,计算得到的y误差是sqrt(intercept_variance+slope_variance*x_diff2)=8381。然后可以通过将学生的t分布的第99个分位数乘以1自由度来计算偏移估计的98%的置信区间(31.82),从而给出266670微秒的线性回归的最终误差估计。在该示例中选择了98%的置信区间,因为它在相关联的经验测试中产生了良好的时间同步结果。
然后可以将最终偏移估计和误差计算为来自加权平均的估计和来自线性回归的估计的加权平均。线性回归的权重是1/(linear_error2)=1.406*10-11。在该示例中,加权平均估计的权重是(age_weight/avg_error2),其中,age_weight从在时间同步开始时1线性减小至在5分钟之后的0。在其它实施方式中,可以使用在age_weight在其间减小至0的其它时间段(除了5分钟之外)。在上述示例中,由于自估计开始起已经经过了230000微秒,age_weight是0.9992,加权平均估计的权重是8.194*10-8。因此,最终的组合偏移估计是999998微秒,其中,误差估计是3493微秒。
跟随者装置150然后可以继续进行时间同步请求并且将更多的样本添加至加权平均和线性回归。随着时间的推移,线性回归估计将变得更加准确(随着样本数量的增加,方差减小,并且t分布乘数快速下降)。由于时钟漂移,加权平均估计可能最终变得不准确。例如,样本的最后5分钟被用来计算加权平均,计算得到的偏移的误差为3000微秒(由于时钟按照每秒20微秒漂移)。
注意,在该示例中,每100ms进行一次时间同步请求。在其它实施方式中,请求频率可以基于当前误差估计和系统(例如,系统100)状态而变化(例如,在运行时间时)。如果即将需要同步时间(例如,回放组的时间同步音频回放将要开始),则可以增加时间同步请求频率以改进时间偏移估计。
在其它实施方式中,代替通过将(样本,权重)添加至线性回归和移动平均来确定时钟偏移/误差,可以将(样本-延时,权重)和(样本+延时,权重)添加至线性回归和移动均值,其中,延时=RTT/2。这种方法可以提供误差估计的准确性,以及用足够的精度减少确定误差的时间,以实现时间同步回放。按照这种方法,音频回放可以以足够准确的误差估计开始,以防止在使用其它方法校正(收敛)时钟偏移误差时可能发生的可感知的音频失真。在数学上,可以仅使用开始使用线性回归进行误差估计的两次测量(如上所述)以及用于使用移动均值的一次测量来实施该方法。然而,在特定实施方式中,可以在估计时钟偏移/误差之前进行附加测量。例如,在实施方式中,可以在使用移动平均之前进行至少2次测量,并且可以在开始使用线性回归之前进行15次测量。在其它实施方式中,可以在使用移动平均或者线性回归来估计误差(偏移)之前取得其它相应数量的样本。
不同的扬声器/音频输出装置可以具有不同的固有输出延迟,例如,在音频样本已经被推送至对应的音频管线硬件之后,延迟在产生对应声音之前可以在不同的扬声器之间显著地变化。差可以多达几百毫秒。
为了改善多区域投播(回放)组中的不同扬声器之间的同步,可以通过调整样本的软件输出来确定和补偿每个扬声器的固有输出延迟,使得同时产生实际的声音。注意,按照这种方法,不需要确定每个扬声器的绝对延迟,仅仅是每个扬声器相对于公共参考点的延迟,例如,可以使用下文描述的示例实施方式来确定该延迟。
在该示例实施方式中,可以将用户的手持装置用作公共参考点。对于(例如,给定回放组的回放装置的)每个扬声器,用户可以握住扬声器旁的手持装置并且运行校准应用(例如,通过按压“校准”按钮)。校准应用可以被配置成使投播(回放)装置和用户的手持装置在已知的公共时间戳处播放声音(相同声音)。手持装置将记录来自这两个装置的播放的声音,并且使用这两个装置之间的时间差来确定扬声器系统的实际输出延时(相对于手持装置的输出延时)。
可以使用以下示例方法来实现这种回放装置音频(扬声器)延时校准。在该示例中,正在执行音频延时校准的投播装置可以实现与手持装置上针对音频延时校准使用的内部时钟的时间同步。可以使用本文描述的时间同步方法来实现该时间同步。在实现时间同步之后,手持装置可以确定要在播放声音时使用的适合的音量级。例如,为了使校准正常工作,在手持装置处从投播(回放)装置接收到的声音的音量应该在例如手持装置的声音的音量12dB内。为此,手持装置可以在录音时首先播放声音,然后指令扬声器在记录的同时播放声音。若需要(例如,如果手持装置从其本身接收的声音的音量距离来自扬声器的接收到的音量>12dB),手持装置可以调整其输出音量并且重复上述进程。
一旦确定时间同步和可接受的音量级,手持装置就可以确定(获得,获取等)其当前时间戳N。手持装置然后可以指示投播(回放)装置在相对于手持装置的内部时钟的给定时间戳Tc=N+Dc(其中,Dc是延迟值,例如,Dc最初可以是100ms并且在校准进程的迭代中改变)处播放预定义的声音。该进程可以使用在多区域时间同步媒体流式传输中使用的方法来在投播(回放)装置上在给定的远程(远离手持装置)时间戳处播放声音。手持装置然后可以(在适合的时间)开始记录以捕获由校准的回放装置回放的声音。进一步地,手持装置可以在接近回放装置应该播放声音的时间的时间戳Th=N+Dh(Dh=例如100ms)处播放声音。可以使用手持装置的getTimestamp函数来确定由手持装置播放声音的实际时间(Ta)。
在该示例中,将记录来自手持装置和回放装置二者的声音,其中,在已经经过了这两个声音应该已经完成了播放的充足时间之后,记录可以停止。然后可以使用信号处理来确定这两个记录的声音之间的时间增量(差)。对于该第一迭代,可以将该差的值确定为绝对值(例如,因为手持装置或者回放装置的哪个装置首先播放了声音可能不是已知的)。因此,必须利用修改的时间戳重复(至少一次)测量以获得所述差的符号。例如,上述进程可以从手持装置获得其当前时间戳的时间点重复,但是改变手持播放声音的时间戳(Th)和回放装置播放声音的时间戳(Tc),使得回放装置应该比先前的迭代早20ms播放声音(例如,在该示例中,Dc=80ms)。
在前两次迭代完成之后,如果在前两次迭代之间增加了时间增量(差),则差的符号可以确定为负,否则,差为正。然后可以通过(delta(Tc-Ta))来确定校准的回放装置/扬声器的延迟。然后可以将该值作为给定扬声器的校准音频延迟发送至回放装置,该值可以由回放装置用来维护对应回放(媒体投播)组的回放装置之间的音频回放同步。用于前述音频延时校准进程的特定值、时间、和迭代次数可以变化并且将至少部分地取决于特定实施方式。
图3是图示了用于对包括多个回放装置的媒体回放组进行时间同步的媒体回放的方法300的流程图。图3中所示的方法300以及图4至9的方法可以实施在图1的系统100中和/或使用图2中图示的领导者装置130和跟随者装置150(或者其它跟随者装置)来实施。而且,可以使用本文讨论的方法来实施图3至9的方法,尽管可能不再参照图3至9的流程图重复这些方法的具体细节。进一步地,要了解,图3至9的方法可以实施在具有与图1和图2中图示的配置不同的配置的媒体回放系统中。
如图3所示,方法300可以包括:在框310中,将第一媒体回放装置与数据网络连接,其中,第一媒体回放装置操作地与(第一)媒体回放组相关联。在框320中,方法300可以包括:将第二媒体回放装置与数据网络连接,其中,第二媒体回放装置操作地与媒体回放组相关联。将第一媒体回放装置和第二媒体回放装置与数据网络连接可以包括:第一媒体回放装置和第二媒体回放装置在数据网络上发送宣告其在媒体回放组中的成员关系的相应的广播消息并且包括对与数据网络连接的作为媒体回放组的成员的其它装置的相应查询。如本文描述的,第一媒体回放装置和第二媒体回放装置也可以操作地与其它媒体回放组相关联(例如,作为领导者装置和/或跟随者装置)。
在框330中,方法300可以包括:将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置。在方法300中,将第一媒体回放装置和第二媒体回放装置中在方法300中未被指定为领导者回放装置的那一个媒体回放装置指定为媒体回放组的跟随者回放装置。如本文描述的,可以基于第一媒体回放装置和第二媒体回放装置的相应的领导关系度量来指定领导者回放装置,领导关系度量基于第一媒体回放装置和第二媒体回放装置的网络连接(例如,网络连接质量)的相应属性。按照其它方法,可以预配置对第一媒体回放装置和第二媒体回放装置的领导者装置和跟随者装置的指定。
在框340中,方法300可以包括:确定领导者回放装置与跟随者回放装置之间的时钟偏移,其中,可以使用本文描述的方法(例如,通过基于RTT计算加权平均和/或线性回归)来确定时钟偏移。在框350中,方法300可以包括:在领导者回放装置处接收媒体流以便由媒体回放组进行回放。
在框360中,方法300可以包括:由领导者回放装置播放媒体流。在框370中,方法300可以包括:由领导者回放装置将媒体流提供给跟随者回放装置,这可以包括在带时间戳的数据分组的序列中将媒体流提供给跟随者回放装置。在框380中,方法300可以包括:由跟随者回放装置基于时钟偏移(以及分组的相应时间戳)与领导者回放装置同步地播放媒体流。方法300还可以包括:由领导者回放装置和跟随者回放装置缓冲媒体流的相应部分,诸如本文描述的。
图4是图示了用于指定媒体回放组的领导者装置的方法400的流程图。在实施方式中,方法400可以在方法300的框330处实现。
如图4所示,方法400可以包括:在框410中,确定第一媒体回放装置的领导关系度量,并且在框420中,确定第二媒体回放装置的领导关系度量。在框430中,方法400可以包括:基于将第一媒体回放装置的领导关系度量与第二媒体回放装置的领导关系度量进行比较,将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为领导者回放装置。例如,可以将具有较高(强、大等)effective_SNR值的回放装置指定为领导者装置。
在框430中的确定可以包括:在具有相等的领导关系度量的回放装置之间确定领导者,诸如,通过将回放装置的IP地址进行比较并且基于该比较来指定领导者装置。在方法400中,在框410中,第一媒体回放装置的领导关系度量可以基于第一媒体回放与数据网络的网络连接的一个或者多个属性。同样,在框420中,第二媒体回放装置的领导关系度量可以基于第二媒体回放与数据网络的网络连接的一个或者多个属性。
图5是图示了用于确定媒体回放组的领导者装置与跟随者装置之间的时钟偏移的方法500的流程图。在实施方式中,可以通过(例如在媒体回放之前和媒体回放期间)迭代地执行方法500的操作来确定时钟偏移。可以使用本文描述的方法(例如,包括计算加权平均和/或线性回归)来实施方法500。
在框510中,方法500可以包括:由跟随者回放装置向领导者回放装置发送包括带时间戳的分组的同步请求,带时间戳的分组指示跟随者回放装置的时钟的时间。在框520中,方法500可以包括:由领导者回放装置接收来自跟随者回放装置的同步请求。在框530中,方法500可以包括:由领导者回放装置响应于同步请求而发送同步响应,该同步响应包括领导者回放装置的时钟的时间和同步请求中包括的跟随者回放装置的时钟的时间的指示。在框540中,方法500可以包括:由跟随者装置基于同步响应来确定同步请求和同步响应的往返时间(RTT)和基于RTT的时钟偏移。在方法500中,确定RTT可以包括:基于两个或者更多个(迭代的)同步请求和同步响应序列来计算加权移动平均和线性回归中的至少一个。
图6是图示了用于将回放装置添加至当前正在播放媒体的媒体回放组的方法600的流程图,诸如,图3的方法的将第三回放装置添加至媒体回放组。例如,方法300的跟随者回放装置可以是第一跟随者回放装置。
在框610中,在结合方法300实施时,方法600可以包括:将第三媒体回放装置与数据网络连接,其中,第三媒体回放装置操作地与媒体回放组相关联。在框620中,方法600可以包括:将第三媒体回放装置指定为第二跟随者回放装置。在框630中,方法600可以包括:确定领导者回放装置与第二跟随者回放装置之间的时钟偏移,诸如使用本文描述的方法。方法600可以进一步包括:在框640中,由领导者回放装置将媒体流提供给第二跟随者回放装置,并且在框650中,由第二跟随者回放装置基于领导者回放装置与第二跟随者回放装置之间的时钟偏移与领导者回放装置同步地播放媒体流。
图7是图示了用于诸如方法300的跟随者回放装置的回放装置离开媒体回放组的方法700的流程图。在框710中,方法700可以包括(例如,当结合方法300实现时):由跟随者回放装置向领导者回放装置发送跟随者回放装置要离开媒体回放组的指示。在框720中,方法700可以包括:响应于该指示,由领导者回放装置中止将媒体流提供给跟随者装置,并且由领导者回放装置更新媒体回放组的成员关系信息以移除跟随者回放装置。
图8是图示了用于改变正在由媒体回放组回放的媒体流的方法800的流程图。正如方法600和700那样,方法800可以结合图3的方法300来实现,其中,方法300的媒体流是第一媒体流。
在框810中,方法800可以包括:在领导者回放装置处接收对由媒体回放组回放第二媒体流的请求。响应于对回放第二媒体流的请求,方法800可以包括:在框820中,停止由领导者回放装置和跟随者回放装置回放第一媒体流。在框820中停止回放第一媒体流之后,方法800可以包括:在框830中,由领导者回放装置播放第二媒体流,并且在框840中,由领导者回放装置将第二媒体流提供给跟随者回放装置。在框850中,方法800可以包括:由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放第二媒体流。
图9是图示了用于确定媒体回放装置的音频输出延迟的方法900的流程图。可以使用用于确定本文描述的音频输出延迟的方法来实施方法900。
在框910中,方法900可以包括:确定在参考装置(例如,手持装置,诸如智能电话)上(由参考装置)要播放的声音的音量,其中,使用声音来确定回放装置的音频输出延迟。在框920中,方法900可以包括:迭代地利用回放装置和参考装置播放声音,同时变化每次迭代的回放延迟(回放偏移)。而且,在框920中,对于每次迭代,参考装置可以记录来自回放装置和参考装置的声音的回放。在框930中,方法900可以包括:基于回放和记录的至少两次迭代来确定时间增量(音频回放延迟)。在实施方式中,由跟随者回放装置与领导者回放装置同步地播放媒体流可以包括:由跟随者回放装置基于时钟偏移和使用方法900确定的跟随者回放装置的输出延迟与领导者回放装置同步地播放媒体流。
在普通方面中,用于媒体回放的系统可以包括:媒体投播装置,该媒体投播装置被配置成将媒体流广播到数据网络以便由媒体回放组进行回放;第一媒体回放装置,该第一媒体回放装置被配置成接收媒体流,该第一媒体回放装置是媒体回放组的成员;以及第二媒体回放装置,该第二媒体回放装置被配置成接收媒体流,该第二媒体回放装置是媒体回放组的成员。第一媒体回放装置和第二媒体回放装置可以共同地被配置成将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置。可以将第一媒体回放装置和第二媒体回放装置中未被指定为领导者回放装置的该一个媒体回放装置指定为媒体回放组的跟随者回放装置。第一媒体回放装置和第二媒体回放装置可以进一步共同地被配置成确定领导者回放装置与跟随者回放装置之间的时钟偏移。领导者回放装置可以被配置成:接收来自数据网络的媒体流的广播;播放媒体流;以及将媒体流提供给跟随者回放装置。跟随者回放装置可以被配置成基于时钟偏移与领导者回放装置同步地播放媒体流。
实施方式可以包括以下特征中的一个或者多个。例如,第一媒体回放装置和第二媒体回放装置可以每个包括指示媒体回放组中的成员关系的相应记录。媒体回放组可以是第一媒体回放组,并且第一媒体回放装置的相应记录可以进一步指示第二媒体回放组中的成员关系。
该系统可以包括第三媒体回放装置,该第三媒体回放装置被配置成接收媒体流。第三媒体回放装置可以是媒体回放组的成员。第三媒体回放装置和领导者回放装置可以共同地被配置成确定领导者回放装置与第三回放装置之间的时钟偏移。领导者回放装置可以进一步被配置成将媒体流提供给第三媒体回放装置。第三媒体回放装置可以被配置成基于领导者回放装置与第三回放装置之间的时钟偏移与领导者回放装置同步地播放媒体流。
将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置可以包括:将第一媒体回放装置与数据网络的数据连接的质量的测量与第二媒体回放装置与数据网络的数据连接的质量的测量进行比较。
第一媒体回放装置和第二媒体回放装置中的每一个都可以被配置成实施广播服务,以广播指示媒体回放组中的成员关系的消息。广播消息可以包括向连接至数据网络且是媒体回放组的成员的媒体回放装置请求响应的查询。
领导者回放装置将媒体流提供给跟随者回放装置可以包括:在带时间戳的数据分组的序列中将媒体流提供给跟随者回放装置。
由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放媒体流可以包括:由跟随者回放装置基于时钟偏移和跟随者回放装置的输出延迟与领导者回放装置同步地播放媒体流。可以基于领导者回放装置与跟随者回放装置之间的往返时间(RTT)来确定时钟偏移。
在另一普遍方面中,一种方法可以包括:将第一媒体回放装置与数据网络连接,第一媒体回放装置操作地与媒体回放组相关联;并且将第二媒体回放装置与数据网络连接,第二媒体回放装置操作地与媒体回放组相关联。该方法可以进一步包括:将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为媒体回放组的领导者回放装置,其中,可以将第一媒体回放装置和第二媒体回放装置中未被指定为领导者回放装置的一个媒体回放装置指定为媒体回放组的跟随者回放装置。该方法还可以包括:确定领导者回放装置与跟随者回放装置之间的时钟偏移;在领导者回放装置处接收媒体流以便由媒体回放组进行回放;并且由领导者回放装置播放媒体流。该方法仍然可以进一步包括:由领导者回放装置将媒体流提供给跟随者回放装置,以及由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放媒体流。
实施方式可以包括以下特征中的一个或者多个。例如,将第一媒体回放装置与数据网络连接可以包括:第一媒体回放装置发送指示第一媒体回放装置在媒体回放组中的成员关系的广播消息。广播消息可以包括向连接至数据网络并且操作地与媒体回放组相关联的媒体回放装置请求响应的查询。媒体回放组可以是第一媒体回放组,并且广播消息可以指示第一媒体回放装置在第二媒体回放组中的成员关系。将第二媒体回放装置与数据网络连接可以包括:第二媒体回放装置发送指示第二媒体回放装置在媒体回放组中的成员关系的广播消息。
将第一媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为领导者回放装置可以包括:确定第一媒体回放装置的领导关系度量;确定第二媒体回放装置的领导关系度量;以及基于将第一媒体回放装置的领导关系度量与第二媒体回放装置的领导关系度量进行比较,将第一媒体回放装置和第二媒体回放装置和第二媒体回放装置中的一个媒体回放装置指定为领导者回放装置。第一媒体回放装置的领导关系度量可以基于第一媒体回放与数据网络的网络连接的一个或者多个属性。第二媒体回放装置的领导关系度量可以基于第二媒体回放与数据网络的网络连接的一个或者多个属性。
确定领导者回放装置与跟随者回放装置之间的时钟偏移可以包括:由跟随者回放装置迭代地向领导者回放装置发送包括带时间戳的分组的同步请求,该带时间戳的分组指示跟随者回放装置的时钟的时间;由领导者回放装置接收来自跟随者回放装置的同步请求;由领导者回放装置响应于同步请求而发送同步响应,该同步响应包括领导者回放装置的时钟的时间和同步请求中包括的跟随者回放装置的时钟的时间的指示;以及由跟随者装置基于同步响应来确定:同步请求和同步响应的往返时间(RTT);以及基于RRT的时钟偏移。确定RTT可以包括:基于两个或者更多个同步响应来计算加权移动平均和线性回归中的至少一个。
将媒体流提供给跟随者回放装置可以包括:在带时间戳的数据分组的序列中将媒体流提供给跟随者回放装置。该方法可以包括:由领导者回放装置和跟随者回放装置缓冲媒体流的相应部分。
跟随者回放装置可以是第一跟随者回放装置,并且该方法可以包括将第三媒体回放装置与数据网络连接。第三媒体回放装置可以操作地与媒体回放组相关联。该方法可以包括将第三媒体回放装置指定为第二跟随者回放装置,并且确定领导者回放装置与第二跟随者回放装置之间的时间偏移。该方法可以包括:由领导者回放装置将媒体流提供给第二跟随者回放装置,以及由第二跟随者回放装置基于领导者回放装置与第二跟随者回放装置之间的时钟偏移与领导者回放装置同步地播放媒体流。
该方法可以包括:由跟随者回放装置向领导者回放装置发送跟随者回放装置要离开媒体回放组的指示。响应于该指示,该方法可以包括:由领导者回放装置中止将媒体流提供给跟随者装置,并且由领导者回放装置更新媒体回放组的成员关系信息以移除该跟随者回放装置。
由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放媒体流可以包括:由跟随者回放装置基于时钟偏移和跟随者回放装置的输出延迟与领导者回放装置同步地播放媒体流。
媒体流可以是第一媒体流,并且该方法可以包括:在领导者回放装置处接收对由媒体回放组回放第二媒体流的请求。响应于对回放第二媒体流的请求,该方法可以包括:停止由领导者回放装置和跟随者回放装置回放第一媒体流。在停止回放第一媒体流之后,该方法可以包括:由领导者回放装置播放第二媒体流;并且由跟随者回放装置基于时钟偏移与领导者回放装置同步地播放第二媒体流。
图10示出了可以与本文描述的技术一起使用的通用计算机装置1000和通用移动计算机装置1050的示例。计算装置1000旨在表示各种形式的数字计算机,诸如,膝上型计算机、桌面型计算机、工作站、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。计算装置1050旨在表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、和其它类似的计算装置。此处所示的部件、它们的连接和关系、以及它们的功能仅仅旨在作为示例,并且不旨在限制本文档中描述的和/或要求的本发明的实施方式。
计算装置1000包括:处理器1002、存储器1004、存储装置1006、连接至存储器1004和高速扩展端口1010的高速接口1008、和连接至低速总线1014和存储装置1006的低速接口1012。每个部件1002、1004、1006、1008、1010和1012使用各种总线互相连接,并且可以安装在公共主板上或者根据需要以其它的方式安装。处理器1002可以对用于在计算装置1000内执行的指令进行处理,包括存储在存储器1004中或者存储装置1006上以在外部输入/输出装置诸如耦合至高速接口1008的显示器1016上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多种存储器一起使用。同样,可以连接多个计算装置1000,每个装置提供必要操作的部分(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。
存储器1004存储在计算装置1000内的信息。在一种实施方式中,存储器1004是一个或者多个易失性存储器单元。在另一实施方式中,存储器1004是一个或者多个非易失性存储器单元。存储器1004还可以是另一种形式的计算机可读介质,诸如,磁盘或者光盘。
存储装置1006能够为计算装置1000提供海量存储装置。在一种实施方式中,存储装置1006可以是或者可以包含计算机可读介质,诸如,软盘装置、硬盘装置、光盘装置、或者磁带装置、闪速存储器或者其它类似的固态存储器装置,或者装置的阵列,包括存储区域网络或者其它配置中的装置。计算机程序产品可以有形地体现为信息载体。计算机程序产品还可以包含指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的那些方法。信息载体是计算机可读介质或者机器可读介质,诸如,存储器1004、存储装置1006、或者在处理器1002上的存储器。
高速控制器1008管理计算装置1000的带宽密集型操作,而低速控制器1012管理较低的带宽密集型操作。这种功能分配仅仅是示例性的。在一种实施方式中,高速控制器1008耦合至存储器1004、显示器1016(例如,通过图形处理器或者加速器)、和高速扩展端口1010,该高速扩展端口1010可以接受各种扩展卡(未示出)。在实施方式中,低速控制器1012耦合至存储装置1006和低速扩展端口1014。可以包括各种通信端口(例如,USB、蓝牙、以太网、和无线以太网)的低速扩展端口1014可以例如通过网络适配器耦合至一个或者多个输入/输出装置,诸如,键盘、指向装置、扫描器、或者联网装置诸如交换机或者路由器。
如图所示,可以利用多种形式来实施计算装置1000。例如,可以将计算装置1000实施为标准服务器1020,或者多次实施在一组这种服务器中。还可以将计算装置1000实施为机架式服务器1024的一部分。另外,计算装置1000可以实施在个人计算机(诸如,膝上型计算机1022)中。替选地,来自计算装置1000的部件可以与诸如装置1050的移动装置(未示出)中的其它部件结合。每个这种装置可以包含计算装置1000、1050中的一个或者多个,并且整个系统可以由彼此通信的多个计算装置1000、1050组成。
除了其它部件之外,计算装置1050还包括处理器1052、存储器1064、输入/输出装置诸如显示器1054、通信接口1066、以及收发器1068。装置1050还可以设置有用于提供附加存储的存储装置,诸如,微型硬盘或者其它装置。部件1050、1052、1064、1054、1066和1068中的每个使用各种总线互相连接,并且一些部件可以安装在公共主板上或者根据需要以其它方式安装。
处理器1052可以执行在计算装置1050内的指令,包括存储在存储器1064中的指令。可以将处理器实施为包括单独的和多个模拟和数字处理器的芯片的芯片集。处理器可以提供例如对装置1050的其它部件的协调,诸如用户界面的控件、由装置1050操作的应用、和通过装置1050进行的无线通信。
处理器1052可以通过耦合至显示器1054的控制接口1058和显示器接口1056来与用户通信。例如,显示器1054可以是TFT LCD(薄膜晶体管液晶显示器)或者OLED(有机发光二极管)显示器,或者其它合适的显示技术。显示接口1056可以包括用于驱动显示器1054向用户呈现图形和其它信息的合适的电路系统。控制接口1058可以接收来自用户的命令并且对命令进行转换以提交至处理器1052。另外,可以提供与处理器1052通信的外部接口1062,以便使装置1050能够与其它装置进行邻近区域通信。例如,在一些实施方式中,外部接口1062可以提供有线通信,或者在其它实施方式中,可以提供无线通信,并且还可以使用多个接口。
存储器1064存储在计算装置1050内的信息。可以将存储器1064实施为一个或者多个计算机可读介质、一个或者多个易失性存储器单元、或者一个或者多个非易失性存储器单元。还可以提供扩展存储器1074并且通过扩展接口1072将扩展存储器1074连接至装置1050,例如,该扩展接口1072可以包括SIMM(单线存储器模块)卡接口。这种扩展存储器1074可以为装置1050提供附加存储空间,或者还可以存储装置1050的应用或者其它信息。具体地,扩展存储器1074可以包括用于执行或者补充上文描述的过程的指令,并且还可以包括安全信息。因此,例如,可以将扩展存储器1074提供为装置1050的安全模块,并且可以用允许安全使用装置1050的指令来对其进行编程。另外,可以经由SIMM卡与附加信息一起提供安全应用,诸如,按照不可侵入的方式将识别信息放在SIMM卡上。
如下文讨论的,例如,存储器可以包括闪速存储器和/或NVRAM存储器。在一种实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包含指令,该指令在被执行时执行一种或者多种方法,诸如,上文描述的那些方法。信息载体是计算机可读介质或者机器可读介质,诸如,存储器1064、扩展存储器1074、或者在处理器1052上的存储器。例如,可以通过收发器1068或者外部接口1062来接收该信息载体。
装置1050可以通过通信接口1066无线地通信,若需要,该通信接口1066可以包括数字信号处理电路系统。通信接口1066可以提供在各种模式或者协议下的通信,诸如,GSM语音通话、SMS、EMS、或者MMS消息传送、CDMA、TDMA、PDC、WCDMA、CDMA2000、或者GPRS等。例如,这种通信可以通过射频收发器1068发生。另外,短程通信可以通过使用诸如蓝牙、WiFi、或者其它这种收发器(未示出)而发生。另外,全球定位系统(GPS)接收器模块1070可以将附加的与导航或者位置有关的无线数据提供给装置1050,若合适,该无线数据可以供在装置1050上运行的应用使用。
装置1050还可以通过使用音频编解码器1060进行可听地通信,该音频编解码器1060可以接收来自用户的口头信息并且将口头信息转换为可用的数字信息。音频编解码器1060还可以为用户生成可听见的声音,诸如,通过扬声器,例如,在装置1050的听筒中的扬声器。这种声音可以包括来自语音电话的声音,可以包括记录的声音(例如,语音消息、音乐文件等),并且还可以包括通过在装置1050上操作的应用生成的声音。
如图所示,可以将计算装置1050实施成多种不同的形式。例如,可以将计算装置1050实施为蜂窝电话1080,还可以将计算装置1050实施为智能电话1082、个人数字助理、或者其它类似的移动装置的一部分。
可以利用数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合来实施此处描述的系统和技术的各种实施方式。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以耦合到存储系统、至少一个输入装置、和至少一个输出装置以从其接收数据和指令并且向其发送数据和指令传输。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式包括声输入、语音输入或者、触觉输入来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者web浏览器的用户计算机,用户可以通过该图形用户界面或者该web浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)、和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
已经描述了若干实施例。然而,要理解,在不脱离本发明的精神和范围的情况下,可以做出各种修改。
另外,在示意图中描绘的逻辑流程不需要所示的特定顺序或者相继顺序,以实现期望的结果。另外,可以提供其它步骤或者可以从描述的流程删除步骤,并且可以将其它部件添加至描述的系统或者从描述的系统移除其它部件。因此,其它实施方式在任何随后添加的权利要求书的范围内。

Claims (24)

1.一种用于时间同步的多区域媒体流式传输的系统,所述系统包括:
第一媒体回放装置,所述第一媒体回放装置被配置成经由数据网络从媒体投播装置接收媒体流,所述第一媒体回放装置是媒体回放组的成员;以及
第二媒体回放装置,所述第二媒体回放装置被配置成经由所述数据网络从所述媒体投播装置接收所述媒体流,所述第二媒体回放装置是所述媒体回放组的成员,
所述第一媒体回放装置和所述第二媒体回放装置共同地被配置成:
基于所述第一媒体回放装置与所述数据网络的数据连接的质量的测量与所述第二媒体回放装置与所述数据网络的数据连接的质量的测量的比较,将所述第一媒体回放装置和所述第二媒体回放装置中的一个媒体回放装置指定为所述媒体回放组的领导者回放装置;
将所述第一媒体回放装置和所述第二媒体回放装置中未被指定为所述领导者回放装置的一个媒体回放装置指定为所述媒体回放组的跟随者回放装置;以及
确定所述领导者回放装置与所述跟随者回放装置之间的时钟偏移,
所述领导者回放装置被配置成:
经由所述数据网络从媒体投播装置接收所述媒体流的广播;
播放所述媒体流;以及
将所述媒体流提供给所述跟随者回放装置,
所述跟随者回放装置被配置成:基于所述时钟偏移,与所述领导者回放装置同步地播放所述媒体流。
2.根据权利要求1所述的系统,其中,所述第一媒体回放装置和所述第二媒体回放装置每个包括指示所述媒体回放组中的成员关系的相应记录。
3.根据权利要求2所述的系统,其中,所述媒体回放组是第一媒体回放组,所述第一媒体回放装置的所述相应记录进一步指示第二媒体回放组中的成员关系。
4.根据权利要求1所述的系统,进一步包括:第三媒体回放装置,所述第三媒体回放装置被配置成接收所述媒体流,所述第三媒体回放装置是所述媒体回放组的成员,
所述第三媒体回放装置和所述领导者回放装置共同地被配置成确定所述领导者回放装置与所述第三媒体回放装置之间的时钟偏移,
所述领导者回放装置进一步被配置成将所述媒体流提供给所述第三媒体回放装置,
所述第三媒体回放装置被配置成:基于所述领导者回放装置与所述第三媒体回放装置之间的所述时钟偏移,与所述领导者回放装置同步地播放所述媒体流。
5.根据权利要求1所述的系统,其中,所述第一媒体回放装置和所述第二媒体回放装置中的每一个被配置成:实施广播服务,以广播指示所述媒体回放组中的成员关系的消息。
6.根据权利要求5所述的系统,其中,所广播的消息包括查询,所述查询向连接至所述数据网络的媒体回放装置且是所述媒体回放组的成员请求响应。
7.根据权利要求1所述的系统,其中,所述领导者回放装置将所述媒体流提供给所述跟随者回放装置包括:在带时间戳的数据分组的序列中将所述媒体流提供给所述跟随者回放装置。
8.根据权利要求1所述的系统,其中,由所述跟随者回放装置基于所述时钟偏移与所述领导者回放装置同步地播放所述媒体流包括:基于所述时钟偏移和所述跟随者回放装置的输出延迟,由所述跟随者回放装置与所述领导者回放装置同步地播放所述媒体流。
9.根据权利要求1所述的系统,其中,基于所述领导者回放装置与所述跟随者回放装置之间的往返时间(RTT)来确定所述时钟偏移。
10.一种用于时间同步的多区域媒体流式传输的方法,所述方法包括:
将第一媒体回放装置与数据网络连接,所述第一媒体回放装置操作地与媒体回放组相关联;
将第二媒体回放装置与所述数据网络连接,所述第二媒体回放装置操作地与所述媒体回放组相关联;
基于所述第一媒体回放装置与所述数据网络的数据连接的质量的测量与所述第二媒体回放装置与所述数据网络的数据连接的质量的测量的比较,将所述第一媒体回放装置和所述第二媒体回放装置中的一个媒体回放装置指定为所述媒体回放组的领导者回放装置;
将所述第一媒体回放装置和所述第二媒体回放装置中未被指定为所述领导者回放装置的一个媒体回放装置指定为所述媒体回放组的跟随者回放装置;
确定所述领导者回放装置与所述跟随者回放装置之间的时钟偏移;
在所述领导者回放装置处,经由所述数据网络从媒体投播装置接收媒体流,以便由所述媒体回放组进行回放;
由所述领导者回放装置播放所述媒体流;
由所述领导者回放装置将所述媒体流提供给所述跟随者回放装置;以及
基于所述时钟偏移,由所述跟随者回放装置与所述领导者回放装置同步地播放所述媒体流。
11.根据权利要求10所述的方法,其中,将所述第一媒体回放装置与所述数据网络连接包括:所述第一媒体回放装置发送广播消息,所述广播消息指示所述第一媒体回放装置在所述媒体回放组中的成员关系。
12.根据权利要求11所述的方法,其中,所述广播消息包括查询,所述查询向连接至所述数据网络并且操作地与所述媒体回放组相关联的媒体回放装置请求响应。
13.根据权利要求11所述的方法,其中,所述媒体回放组是第一媒体回放组,并且所述广播消息进一步指示所述第一媒体回放装置在第二媒体回放组中的成员关系。
14.根据权利要求10所述的方法,其中,将所述第二媒体回放装置与所述数据网络连接包括:所述第二媒体回放装置发送广播消息,所述广播消息指示所述第二媒体回放装置在所述媒体回放组中的成员关系。
15.根据权利要求10所述的方法,其中,将所述第一媒体回放装置与所述第二媒体回放装置中的一个媒体回放装置指定为所述领导者回放装置包括:
确定所述第一媒体回放装置的领导关系度量;
确定所述第二媒体回放装置的领导关系度量;以及
基于所述第一媒体回放装置的所述领导关系度量与所述第二媒体回放装置的所述领导关系度量的比较,将所述第一媒体回放装置和所述第二媒体回放装置中的一个媒体回放装置指定为所述领导者回放装置。
16.根据权利要求15所述的方法,其中:
所述第一媒体回放装置的所述领导关系度量基于所述第一媒体回放与所述数据网络的网络连接的一个或者多个属性;以及
所述第二媒体回放装置的所述领导关系度量基于所述第二媒体回放与所述数据网络的网络连接的一个或者多个属性。
17.根据权利要求10所述的方法,其中,确定所述领导者回放装置与所述跟随者回放装置之间的时钟偏移包括,迭代地:
由所述跟随者回放装置向所述领导者回放装置发送包括带时间戳的分组的同步请求,所述带时间戳的分组指示所述跟随者回放装置的时钟时间;
由所述领导者回放装置接收来自所述跟随者回放装置的所述同步请求;
响应于所述同步请求,由所述领导者回放装置发送同步响应,所述同步响应包括所述领导者回放装置的时钟时间和所述同步请求中包括的所述跟随者回放装置的所述时钟时间的指示;以及
由所述跟随者装置基于所述同步响应来确定:
所述同步请求和同步响应的往返时间RTT;以及
基于所述RTT的所述时钟偏移。
18.根据权利要求17所述的方法,其中,确定所述RTT包括:基于两个或者更多个同步响应来计算加权移动平均和线性回归中的至少一个。
19.根据权利要求10所述的方法,其中,将所述媒体流提供给所述跟随者回放装置包括:在带时间戳的数据分组的序列中将所述媒体流提供给所述跟随者回放装置。
20.根据权利要求10所述的方法,进一步包括:由所述领导者回放装置和所述跟随者回放装置缓冲所述媒体流的相应部分。
21.根据权利要求10所述的方法,其中,所述跟随者回放装置是第一跟随者回放装置,所述方法进一步包括:
将第三媒体回放装置与所述数据网络连接,所述第三媒体回放装置操作地与所述媒体回放组相关联;
将所述第三媒体回放装置指定为第二跟随者回放装置;
确定所述领导者回放装置与所述第二跟随者回放装置之间的时钟偏移;
由所述领导者回放装置将所述媒体流提供给所述第二跟随者回放装置;以及
基于所述领导者回放装置与所述第二跟随者回放装置之间的所述时钟偏移,由所述第二跟随者回放装置与所述领导者回放装置同步地播放所述媒体流。
22.根据权利要求10所述的方法,进一步包括:
由所述跟随者回放装置向所述领导者回放装置发送所述跟随者回放装置要离开所述媒体回放组的指示;以及
响应于所述指示:
由所述领导者回放装置中止将所述媒体流提供给所述跟随者装置;以及
由所述领导者回放装置更新所述媒体回放组的成员关系信息以移除所述跟随者回放装置。
23.根据权利要求10所述的方法,其中,基于所述时钟偏移由所述跟随者回放装置与所述领导者回放装置同步地播放所述媒体流包括:基于所述时钟偏移和所述跟随者回放装置的输出延迟,由所述跟随者回放装置与所述领导者回放装置同步地播放所述媒体流。
24.根据权利要求10所述的方法,其中,所述媒体流是第一媒体流,所述方法进一步包括:
在所述领导者回放装置处接收对由所述媒体回放组回放第二媒体流的请求;
响应于对回放所述第二媒体流的所述请求,停止由所述领导者回放装置和所述跟随者回放装置回放所述第一媒体流;
在停止回放所述第一媒体流之后,由所述领导者回放装置播放所述第二媒体流;
由所述领导者回放装置将所述第二媒体流提供给所述跟随者回放装置;以及
由所述跟随者回放装置基于所述时钟偏移与所述跟随者回放装置同步地播放所述第二媒体流。
CN201680034765.4A 2015-09-28 2016-09-23 用于时间同步的多区域媒体流式传输的系统和方法 Active CN107710770B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562233972P 2015-09-28 2015-09-28
US62/233,972 2015-09-28
PCT/US2016/053350 WO2017058654A1 (en) 2015-09-28 2016-09-23 Time-synchronized, multizone media streaming

Publications (2)

Publication Number Publication Date
CN107710770A CN107710770A (zh) 2018-02-16
CN107710770B true CN107710770B (zh) 2021-02-09

Family

ID=57068234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680034765.4A Active CN107710770B (zh) 2015-09-28 2016-09-23 用于时间同步的多区域媒体流式传输的系统和方法

Country Status (4)

Country Link
US (5) US10334306B2 (zh)
EP (1) EP3357252B1 (zh)
CN (1) CN107710770B (zh)
WO (1) WO2017058654A1 (zh)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8326951B1 (en) 2004-06-05 2012-12-04 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
US9344292B2 (en) * 2011-12-30 2016-05-17 Sonos, Inc. Systems and methods for player setup room names
US9231545B2 (en) 2013-09-27 2016-01-05 Sonos, Inc. Volume enhancements in a multi-zone media playback system
US9654545B2 (en) 2013-09-30 2017-05-16 Sonos, Inc. Group coordinator device selection
US10303422B1 (en) 2016-01-05 2019-05-28 Sonos, Inc. Multiple-device setup
US9947316B2 (en) 2016-02-22 2018-04-17 Sonos, Inc. Voice control of a media playback system
US10509626B2 (en) 2016-02-22 2019-12-17 Sonos, Inc Handling of loss of pairing between networked devices
US9965247B2 (en) 2016-02-22 2018-05-08 Sonos, Inc. Voice controlled media playback system based on user profile
US10095470B2 (en) 2016-02-22 2018-10-09 Sonos, Inc. Audio response playback
US10264030B2 (en) 2016-02-22 2019-04-16 Sonos, Inc. Networked microphone device control
US9820039B2 (en) 2016-02-22 2017-11-14 Sonos, Inc. Default playback devices
US9978390B2 (en) 2016-06-09 2018-05-22 Sonos, Inc. Dynamic player selection for audio signal processing
US10152969B2 (en) 2016-07-15 2018-12-11 Sonos, Inc. Voice detection by multiple devices
US10134399B2 (en) 2016-07-15 2018-11-20 Sonos, Inc. Contextualization of voice inputs
US10979757B2 (en) * 2016-07-25 2021-04-13 Roku, Inc. Synchronization with synthesized audio clock
US10115400B2 (en) 2016-08-05 2018-10-30 Sonos, Inc. Multiple voice services
CN110035808A (zh) * 2016-09-14 2019-07-19 声感股份有限公司 具有同步的多设备音频流传输系统
US9942678B1 (en) 2016-09-27 2018-04-10 Sonos, Inc. Audio playback settings for voice interaction
US9743204B1 (en) 2016-09-30 2017-08-22 Sonos, Inc. Multi-orientation playback device microphones
US10805358B2 (en) * 2016-10-13 2020-10-13 Microsoft Technology Licensing, Llc Universal casting service
US10181323B2 (en) 2016-10-19 2019-01-15 Sonos, Inc. Arbitration-based voice recognition
US10028069B1 (en) * 2017-06-22 2018-07-17 Sonos, Inc. Immersive audio in a media playback system
US10475449B2 (en) 2017-08-07 2019-11-12 Sonos, Inc. Wake-word detection suppression
US10048930B1 (en) 2017-09-08 2018-08-14 Sonos, Inc. Dynamic computation of system response volume
US10446165B2 (en) 2017-09-27 2019-10-15 Sonos, Inc. Robust short-time fourier transform acoustic echo cancellation during audio playback
US10621981B2 (en) 2017-09-28 2020-04-14 Sonos, Inc. Tone interference cancellation
US10051366B1 (en) 2017-09-28 2018-08-14 Sonos, Inc. Three-dimensional beam forming with a microphone array
US10482868B2 (en) 2017-09-28 2019-11-19 Sonos, Inc. Multi-channel acoustic echo cancellation
US10466962B2 (en) 2017-09-29 2019-11-05 Sonos, Inc. Media playback system with voice assistance
US10433057B2 (en) * 2017-10-23 2019-10-01 Bose Corporation Wireless audio synchronization
SG11202004890WA (en) * 2017-12-07 2020-06-29 Mcom Media Communications Dmcc Managing content casting
US10897489B2 (en) 2017-12-07 2021-01-19 Mcom Media Comunications Dmcc Managing content casting
US10880650B2 (en) 2017-12-10 2020-12-29 Sonos, Inc. Network microphone devices with automatic do not disturb actuation capabilities
US10818290B2 (en) 2017-12-11 2020-10-27 Sonos, Inc. Home graph
WO2019152722A1 (en) 2018-01-31 2019-08-08 Sonos, Inc. Device designation of playback and network microphone device arrangements
US11175880B2 (en) 2018-05-10 2021-11-16 Sonos, Inc. Systems and methods for voice-assisted media content selection
US10847178B2 (en) 2018-05-18 2020-11-24 Sonos, Inc. Linear filtering for noise-suppressed speech detection
US10959029B2 (en) 2018-05-25 2021-03-23 Sonos, Inc. Determining and adapting to changes in microphone performance of playback devices
US10681460B2 (en) 2018-06-28 2020-06-09 Sonos, Inc. Systems and methods for associating playback devices with voice assistant services
CN112640475B (zh) * 2018-06-28 2023-10-13 搜诺思公司 用于将回放设备与语音助理服务相关联的系统和方法
US11558454B2 (en) * 2018-07-31 2023-01-17 Hewlett Packard Enterprise Development Lp Group leader role queries
US11076035B2 (en) 2018-08-28 2021-07-27 Sonos, Inc. Do not disturb feature for audio notifications
US10461710B1 (en) 2018-08-28 2019-10-29 Sonos, Inc. Media playback system with maximum volume setting
US10587430B1 (en) 2018-09-14 2020-03-10 Sonos, Inc. Networked devices, systems, and methods for associating playback devices based on sound codes
US11024331B2 (en) 2018-09-21 2021-06-01 Sonos, Inc. Voice detection optimization using sound metadata
US10811015B2 (en) 2018-09-25 2020-10-20 Sonos, Inc. Voice detection optimization based on selected voice assistant service
US11100923B2 (en) 2018-09-28 2021-08-24 Sonos, Inc. Systems and methods for selective wake word detection using neural network models
US10692518B2 (en) 2018-09-29 2020-06-23 Sonos, Inc. Linear filtering for noise-suppressed speech detection via multiple network microphone devices
US11416209B2 (en) 2018-10-15 2022-08-16 Sonos, Inc. Distributed synchronization
US11899519B2 (en) 2018-10-23 2024-02-13 Sonos, Inc. Multiple stage network microphone device with reduced power consumption and processing load
EP3654249A1 (en) 2018-11-15 2020-05-20 Snips Dilated convolutions and gating for efficient keyword spotting
US11183183B2 (en) 2018-12-07 2021-11-23 Sonos, Inc. Systems and methods of operating media playback systems having multiple voice assistant services
US11132989B2 (en) 2018-12-13 2021-09-28 Sonos, Inc. Networked microphone devices, systems, and methods of localized arbitration
US10602268B1 (en) 2018-12-20 2020-03-24 Sonos, Inc. Optimization of network microphone devices using noise classification
CN109819310B (zh) * 2019-01-25 2021-07-27 青岛海信传媒网络技术有限公司 一种流媒体数据播放方法及装置
US11315556B2 (en) 2019-02-08 2022-04-26 Sonos, Inc. Devices, systems, and methods for distributed voice processing by transmitting sound data associated with a wake word to an appropriate device for identification
US10867604B2 (en) 2019-02-08 2020-12-15 Sonos, Inc. Devices, systems, and methods for distributed voice processing
US11064228B2 (en) * 2019-04-02 2021-07-13 Qualcomm Incorporated Audio playback timing adjustment
US11120794B2 (en) 2019-05-03 2021-09-14 Sonos, Inc. Voice assistant persistence across multiple network microphone devices
US10586540B1 (en) 2019-06-12 2020-03-10 Sonos, Inc. Network microphone device with command keyword conditioning
US11200894B2 (en) 2019-06-12 2021-12-14 Sonos, Inc. Network microphone device with command keyword eventing
US11361756B2 (en) 2019-06-12 2022-06-14 Sonos, Inc. Conditional wake word eventing based on environment
CA3143942C (en) * 2019-06-17 2023-01-03 Google Llc Methods, systems, and media for providing dynamic media sessions
US10871943B1 (en) 2019-07-31 2020-12-22 Sonos, Inc. Noise classification for event detection
US11138975B2 (en) 2019-07-31 2021-10-05 Sonos, Inc. Locally distributed keyword detection
US11138969B2 (en) 2019-07-31 2021-10-05 Sonos, Inc. Locally distributed keyword detection
US11818187B2 (en) * 2019-08-31 2023-11-14 Sonos, Inc. Mixed-mode synchronous playback
US11189286B2 (en) 2019-10-22 2021-11-30 Sonos, Inc. VAS toggle based on device orientation
US11200900B2 (en) 2019-12-20 2021-12-14 Sonos, Inc. Offline voice control
US11380344B2 (en) 2019-12-23 2022-07-05 Motorola Solutions, Inc. Device and method for controlling a speaker according to priority data
US11562740B2 (en) 2020-01-07 2023-01-24 Sonos, Inc. Voice verification for media playback
US11556307B2 (en) 2020-01-31 2023-01-17 Sonos, Inc. Local voice data processing
US11308958B2 (en) 2020-02-07 2022-04-19 Sonos, Inc. Localized wakeword verification
US11063738B1 (en) * 2020-04-27 2021-07-13 Equinix, Inc. Time synchronization using a weighted regression analysis
US11727919B2 (en) 2020-05-20 2023-08-15 Sonos, Inc. Memory allocation for keyword spotting engines
US11482224B2 (en) 2020-05-20 2022-10-25 Sonos, Inc. Command keywords with input detection windowing
US11308962B2 (en) 2020-05-20 2022-04-19 Sonos, Inc. Input detection windowing
US11698771B2 (en) 2020-08-25 2023-07-11 Sonos, Inc. Vocal guidance engines for playback devices
US11984123B2 (en) 2020-11-12 2024-05-14 Sonos, Inc. Network device interaction by range
US11178227B1 (en) * 2020-11-13 2021-11-16 Vmware, Inc. Efficient resynchronization for stale components of geographically distributed computing systems
CN112685008B (zh) * 2020-11-30 2024-08-16 上海赫千电子科技有限公司 一种基于autosar采用面向服务架构的服务失效控制方法
US11997330B2 (en) 2020-12-17 2024-05-28 That Corporation Audio sampling clock synchronization
US11551700B2 (en) 2021-01-25 2023-01-10 Sonos, Inc. Systems and methods for power-efficient keyword detection
US11943276B2 (en) * 2022-03-23 2024-03-26 International Business Machines Corporation Line-drawing video conferencing
US20240111485A1 (en) * 2022-09-30 2024-04-04 Sonos, Inc. Multichannel Content Distribution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103327377A (zh) * 2012-03-23 2013-09-25 索尼公司 用于内容的同步流传输的系统、方法和基础设施
CN104052562A (zh) * 2013-03-13 2014-09-17 三星电子株式会社 允许回放装置对流传输内容执行同步回放的方法和设备
WO2015038186A1 (en) * 2013-09-16 2015-03-19 Thomson Licensing Auxiliary content synchronization system and method

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5087980A (en) * 1988-01-22 1992-02-11 Soundmaster International, Inc. Synchronization of recordings
CH704101B1 (de) * 2002-11-06 2012-05-31 Barix Ag Verfahren und Vorrichtung zur synchronisierten Wiedergabe von Datenströmen.
US8234395B2 (en) * 2003-07-28 2012-07-31 Sonos, Inc. System and method for synchronizing operations among a plurality of independently clocked digital data processing devices
US9207905B2 (en) * 2003-07-28 2015-12-08 Sonos, Inc. Method and apparatus for providing synchrony group status information
US8015306B2 (en) * 2005-01-05 2011-09-06 Control4 Corporation Method and apparatus for synchronizing playback of streaming media in multiple output devices
US7944922B2 (en) * 2006-10-17 2011-05-17 Altec Lansing Australia Pty Limited Media distribution in a wireless network
US8457328B2 (en) * 2008-04-22 2013-06-04 Nokia Corporation Method, apparatus and computer program product for utilizing spatial information for audio signal enhancement in a distributed network environment
JP5418003B2 (ja) * 2009-06-12 2014-02-19 ソニー株式会社 情報処理装置、同期補正方法及びコンピュータプログラム
CN103368935B (zh) * 2012-03-11 2018-08-07 三星电子株式会社 在Wi-Fi显示网络中提供增强Wi-Fi显示会话的方法和装置
US9787523B2 (en) * 2012-07-05 2017-10-10 Eric Lazarus Managing data in a data queue including synchronization of media on multiple devices
US9307508B2 (en) * 2013-04-29 2016-04-05 Google Technology Holdings LLC Systems and methods for syncronizing multiple electronic devices
US9331799B2 (en) * 2013-10-07 2016-05-03 Bose Corporation Synchronous audio playback
US20160191584A1 (en) * 2014-12-30 2016-06-30 Myine Electronics, Inc. Synchronized vehicle media content sharing moderation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103327377A (zh) * 2012-03-23 2013-09-25 索尼公司 用于内容的同步流传输的系统、方法和基础设施
CN104052562A (zh) * 2013-03-13 2014-09-17 三星电子株式会社 允许回放装置对流传输内容执行同步回放的方法和设备
WO2015038186A1 (en) * 2013-09-16 2015-03-19 Thomson Licensing Auxiliary content synchronization system and method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Inter-destination multimedia synchronization:schemes,use cases and standardization";Mario Montagud Fernando Boronat,Hans Stokking Ray van Brandeburg;《Multimedia Systems》;Springer;20120710;第18卷(第6期);全文 *

Also Published As

Publication number Publication date
EP3357252A1 (en) 2018-08-08
US20190313143A1 (en) 2019-10-10
US10587908B2 (en) 2020-03-10
US20210329332A1 (en) 2021-10-21
EP3357252B1 (en) 2023-09-06
US11463762B2 (en) 2022-10-04
WO2017058654A1 (en) 2017-04-06
US20180262792A1 (en) 2018-09-13
US20220408141A1 (en) 2022-12-22
US10334306B2 (en) 2019-06-25
US11051066B2 (en) 2021-06-29
US11871067B2 (en) 2024-01-09
US20200213658A1 (en) 2020-07-02
CN107710770A (zh) 2018-02-16

Similar Documents

Publication Publication Date Title
CN107710770B (zh) 用于时间同步的多区域媒体流式传输的系统和方法
US10200668B2 (en) Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content
JP5989779B2 (ja) 同期したワイヤレスディスプレイデバイス
US10516718B2 (en) Platform for multiple device playout
US9826491B2 (en) Method and apparatus for synchronization of devices
US20120317243A1 (en) Audio processing method and device for remote desktop protocol
US9967437B1 (en) Dynamic audio synchronization
US10070273B2 (en) Multicast group management technique
EP3526972A1 (en) Enabling a media orchestration
CN107258085B (zh) 针对广播自适应比特率流式传输的延时补偿
US20240267312A1 (en) Method and system for providing a virtual studio environment over the internet
JP2015008475A (ja) データセグメントのオプションのブロードキャスト配信によるストリーミング

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant