所公开的主题涉及用于在多个设备上同步媒体内容回放期间调整质量级别的方法、系统和介质。
背景技术:
人们经常观看从诸如与视频共享服务相关联的服务器的服务器下载或流式传输的媒体内容,诸如视频。此外,人们可能想要同时但是在单独的设备上与诸如朋友的其他人一起观看媒体内容。然而,可能难以跨多个设备同步媒体内容的回放。例如,多个设备可以均在媒体内容项的回放之前和期间缓冲媒体内容,但是,每个设备可以以不同的速率来缓冲媒体内容。在一些情况下,这可能使正在缓冲媒体内容的设备比其他设备更慢,不得不在恢复回放之前暂停回放以缓冲附加的媒体内容,这可能导致设备在回放期间失去同步性。
因此,提供用于在多个设备上同步媒体内容回放期间调整质量级别的新方法、系统和介质是可取的。
技术实现要素:
提供了用于在多个设备上的同步媒体内容回放期间调整质量级别的方法、系统和介质。
根据所公开的主题的一些实施例,提供了一种用于同步媒体内容的回放的方法,该方法包括:从服务器向第一用户设备传输与媒体内容项的第一流相对应的第一媒体内容数据,并且从服务器向第二用户设备传输与媒体内容项的第二流相对应的第二媒体内容数据,其中第一媒体内容数据将被存储在第一用户设备的缓冲区中,并且其中第二媒体内容数据将被存储在第二用户设备的缓冲区中;从服务器向第一用户设备和第二用户设备传输使第一用户设备和第二用户设备开始同时呈现媒体内容项的指令;由服务器确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中;响应于确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中,选择与媒体内容项的第一流相对应的媒体内容项的第三流,其中,媒体内容项的第三流的具有比媒体内容项的第一流低的质量级别;以及向第一用户设备传输与媒体内容项的第三流相对应的第三媒体内容数据。
在一些实施例中,使第一用户设备和第二用户设备开始同时呈现媒体内容项的指令是基于确定第一用户设备和第二用户设备已经缓冲与媒体内容项相对应的预定量的媒体内容数据。
在一些实施例中,确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中是基于由服务器从第一用户设备接收到的消息。
在一些实施例中,消息指示在消息被第一用户设备传输到服务器时存储在第一用户设备的缓冲区中的第一媒体内容数据的当前量。
在一些实施例中,确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中是基于存储在第一用户设备的缓冲区中的第一媒体内容数据的量和存储在第二用户设备的缓冲区中的第二媒体内容数据的量的比较。
在一些实施例中,媒体内容项的第三流具有比媒体内容项的第一流低的比特率。
根据公开的主题的一些实施例,提供了一种用于同步媒体内容的回放的系统,该系统包括存储器和硬件处理器,该硬件处理器在执行存储在存储器中的计算机可执行指令时,被配置成:从服务器向第一用户设备传输与媒体内容项的第一流相对应的第一媒体内容数据,并且从服务器向第二用户设备传输与媒体内容项的第二流相对应的第二媒体内容数据,其中第一媒体内容数据将被存储在第一用户设备的缓冲区中,并且其中第二媒体内容数据将被存储在第二用户设备的缓冲区中;从服务器向第一用户设备和第二用户设备传输使第一用户设备和第二用户设备开始同时呈现媒体内容项的指令;由服务器确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中;响应于确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中,选择与媒体内容项的第一流相对应的媒体内容项的第三流,其中,媒体内容项的第三流的具有比媒体内容项的第一流低的质量级别;并且向第一用户设备传输与媒体内容项的第三流相对应的第三媒体内容数据。公开的主题的另一实施例提供一种用于同步媒体内容的回放的系统,该系统包括存储器和硬件处理器,该硬件处理器在执行存储在存储器中的计算机可执行指令时,被配置成执行根据本文所述的任何方面或实施例的方法。
根据所公开的主题的一些实施例,提供一种包含计算机可执行指令的非暂时性计算机可读介质,该计算机可执行指令在由处理器执行时,使处理器执行用于同步媒体内容的回放的方法,该方法包括:从服务器向第一用户设备传输与媒体内容项的第一流相对应的第一媒体内容数据,并且从服务器向第二用户设备传输与媒体内容项的第二流相对应的第二媒体内容数据,其中第一媒体内容数据将被存储在第一用户设备的缓冲区中,并且其中第二媒体内容数据将被存储在第二用户设备的缓冲区中;从服务器向第一用户设备和第二用户设备传输使第一用户设备和第二用户设备开始同时呈现媒体内容项的指令;由服务器确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中;响应于确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中,选择与媒体内容项的第一流相对应的媒体内容项的第三流,其中,媒体内容项的第三流的具有比媒体内容项的第一流低的质量级别;以及向第一用户设备传输与媒体内容项的第三流相对应的第三媒体内容数据。所公开的主题的另一个实施例提供一种包含计算机可执行指令的计算机可读介质(其可以是暂时性或非暂时性介质),所述计算机可执行指令在由处理器执行时,使处理器执行根据本文所述的任何方面或实施例的方法。
根据公开的主题的一些实施例,提供一种用于同步媒体内容的回放的系统,该系统包括:用于从服务器向第一用户设备传输与媒体内容项的第一流相对应的第一媒体内容数据并且从服务器向第二用户设备传输与媒体内容项的第二流相对应的第二媒体内容数据的装置,其中第一媒体内容数据将被存储在第一用户设备的缓冲区中,并且其中第二媒体内容数据将被存储在第二用户设备的缓冲区中;用于从服务器向第一用户设备和第二用户设备传输使第一用户设备和第二用户设备开始同时呈现媒体内容项的指令的装置;用于由服务器确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中的装置;用于响应于确定第一媒体内容数据正以比第二媒体内容数据正被存储在第二用户设备的缓冲区中慢的速率被存储在第一用户设备的缓冲区中而选择与媒体内容项的第一流相对应的媒体内容项的第三流的装置,其中,媒体内容项的第三流具有比媒体内容项的第一流低的质量级别;以及用于向第一用户设备传输与媒体内容项的第三流相对应的第三媒体内容数据的装置。
附图说明
当连同以下附图考虑时,参考对所公开主题的以下详细描述,可以更加充分地理解所公开主题的各种目的、特征和优点,其中,相同的附图标记标识相同的元件。
图1示出根据所公开的主题的一些实施例的用于在多个设备上的同步媒体内容回放的信息流程图的示例。
图2示出根据所公开主题的一些实施例的用于在多个设备上同步媒体内容回放期间调整质量级别的过程的示例。
图3示出根据所公开主题的一些实施例的适用于实现本文所述的用于在多个设备上同步媒体内容回放期间调整质量级别的机制的说明性系统的示意图。
图4示出根据所公开的主题的一些实施例的可以在图3的服务器和/或用户设备中使用的硬件的详细示例。
具体实施方式
根据各种实施例,提供了用于在多个设备上的同步媒体内容回放期间调整质量级别的机制(可以包括方法、系统和介质)。
在一些实施例中,本文描述的机制可以跨多个用户设备同步媒体内容项的回放。例如,在一些实施例中,该机制可以使媒体内容项被同时呈现在多个用户设备上,使得每个用户设备同时处于媒体内容项的相同回放位置处,以使媒体内容项“同步呈现”到每个用户设备。在一些实施例中,该机制可以使媒体内容项在媒体内容项流式传输到每个用户设备期间维持同步呈现。例如,在一些实施例中,该机制可以在多个用户设备中的一个用户设备以比其它用户设备更慢的速率缓冲与流式传输的媒体内容项相对应的媒体内容数据的实例中使媒体内容项的同步呈现跨用户设备被维持。作为更特定的示例,在一些实施例中,机制可以使以较低速率缓冲媒体内容数据的用户设备以较低质量级别呈现媒体内容项。作为另一示例,在一些实施例中,在多个用户设备中的一个用户设备暂停媒体内容项的回放以缓冲附加媒体内容数据的实例中,该机制可以使媒体内容项的同步呈现跨用户设备被维持。作为更特定的示例,在一些实施例中,该机制可以使用户设备以增加的回放速度恢复回放(即,一旦附加媒体内容数据已经被缓冲),直到用户设备上的回放已经赶上在其他用户设备上的回放为止。
应注意,在一些实施例中,本文描述的机制可以跨多个用户设备同步在同步媒体回放会话中呈现的媒体内容项的回放。在一些实施例中,跨多个用户设备的同步媒体回放会话可以包括任何合适的特征或特征的组合。例如,在一些实施例中,如上所述,同步媒体回放会话可以允许多个用户设备中的每个用户设备同时呈现特定的媒体内容项。作为另一个示例,在一些实施例中,同步媒体回放会话可以允许媒体内容项系列(例如,媒体内容项的播放列表和/或媒体内容项的任何其他合适的集合)被同时呈现在多个用户设备中的每个用户设备上。作为又一个示例,在一些实施例中,同步媒体回放会话可以允许参与同步媒体回放会话的用户设备选择视频、暂停视频和/或切换到不同的视频,并且可以使用户设备所执行的动作被反映到参与会话的其他用户设备上,而该用户设备无需向每个其他用户设备单独地发送命令。
在一些实施例中,本文描述的机制可以调整向参与同步媒体回放会话的多个用户设备中的一个或多个用户设备传输的流的质量,以确保会话中的所有设备维持同步观看体验。特别地,在一些实施例中,传输与同步地呈现在参与会话的每个用户设备上的媒体内容项相对应的媒体内容流的服务器可以确定每个用户设备正在缓冲流的速率或相应速率。在一些实施例中,然后服务器可以基于用户设备的缓冲速率来调整用户设备中的一个用户设备的流的质量。例如,在一些实施例中,响应于确定用户设备比参与同步媒体回放会话的其他用户设备更慢地缓冲流,服务器可以传输较低质量的流,从而允许用户设备以与会话中的其它用户设备相同的速率填充用户设备的缓冲区。在一些实施例中,本文描述的机制可以附加地或替代地采用任何其他合适的技术来维持跨多个用户设备的媒体内容的回放的同步,诸如调整多个用户设备的用户设备上的回放速率以允许用户设备赶上其他用户设备或减速到其它用户设备。
通过基于服务器和第一用户设备之间的网络连接质量以及服务器和参与同步媒体回放会话的其他用户设备之间的网络连接质量来调整媒体内容流的质量,此处描述的机制可以被用于确保会话中的所有用户设备在会话期间保持同步(或可以快速地重新建立同步),并且用户设备避免不得不暂停回放以缓冲附加数据。特别地,通过调整媒体内容流的质量(例如,响应于确定服务器和用户设备之间的网络连接不良而降低质量级别),该机制可以允许用户设备将特定量的媒体内容数据维持在缓冲区中,并且/或者快速地填充缓冲区以具有特定量的媒体内容数据。而且,本文中所描述的机制可以被用于通过防止用户设备暂停回放来缓冲额外的媒体内容数据,在查看流式传输的媒体内容时,特别是在同步媒体回放会话中查看流式传输的媒体内容时改善用户的体验。
在常规视频流中,提供流式传输的视频的内容服务器提供速率控制,使得流式传输的视频以用户设备可以处置的速率和质量被递送到用户设备。为此,用户设备可以向内容服务器提供有关参数的信息,诸如用户设备可以多快地解码和处理接收到的视频,视频被流式传输到用户设备的网络上的带宽和/或时延以及接收到的视频的质量。内容服务器可以基于从客户端设备接收的信息来调整视频到客户端设备的递送速率。本公开的各方面在将视频内容项流式传输到多个客户端设备期间提供协调速率控制。速率控制是“协调的”,因为流式传输到一个特定用户设备的速率基于至少一个其他用户设备以及相关特定用户设备供应给内容服务器的信息来确定。这可以将改进的视频递送提供到多个用户设备。在许多情况下,将用于递送的内容提供给多个用户设备(已知为“共同观看”)的服务器将使用第三方流平台,并且无法控制内容流式传输到多个用户设备的速率(或相应速率)。此外,即使常规速率控制技术可以应用于将内容流式传输到多个用户设备,这些技术也将独立的速率控制应用于每个客户端设备。这可能导致用户设备不得不暂停回放以便重新缓冲,经历附加的同步延迟并且/或者经历比可能提供的视频质量低的视频质量。
另外,如上所述,在一些实施例中,同步媒体回放会话可以允许参与同步媒体回放会话的用户设备选择视频、暂停视频和/或切换到其他视频,并且可以使用户设备所执行的动作被反映到参与会话的其他用户设备上。这可以在用户设备不需要与每个其他用户设备进行单独地通信的情况下——当特定用户设备通知内容服务器其已选择视频、暂停视频和/或切换到其他视频时——实现,内容服务器可能以相同方式调整流式传输的内容向所有其他用户设备的递送。
转向图1,根据所公开的主题的一些实施例,示出用于在多个设备上发起同步媒体回放会话并且呈现同步媒体内容的信息流程图的示例100。如所图示的,在一些实施例中,可以在第一用户设备、第二用户设备和服务器上执行过程100的框。注意,尽管图1中所示和下面描述的信息流程图通常描述视频的同步呈现,在一些实施例中,下面描述的技术可以被用于呈现任何合适类型的媒体内容(例如,视频、电影、电视节目、实况流式传输的视频内容、实况流式传输的音频内容、音乐、有声读物和/或任何其他合适类型的媒体内容)。还应注意,尽管图1中所示的信息流程图包括第一用户设备和第二用户设备,这仅是说明性的。任何合适数目的用户设备都可以参与同步媒体回放会话。
在102处,第一用户设备可以从服务器请求要在同步回放会话中呈现的视频。在一些实施例中,可以以任何合适的方式在第一用户设备上发起请求。例如,在一些实施例中,可以响应于第一用户设备的用户选择到特定媒体内容项的链接,响应于第一用户设备的用户选择用于发起连同其他用户设备(例如,第二用户设备)的特定媒体内容项的同步媒体回放会话的链接和/或以任何其他合适的方式而发起请求。注意,在一些实施例中,到同步媒体回放会话的链接可以由任何合适的用户设备创建,并且可以以任何合适的方式与其他用户设备共享。例如,在一些实施例中,可以经由消息(例如,即时消息、文本消息、电子邮件、推送通知和/或以任何其他合适的方式)共享到同步媒体回放会话的链接。在另一个示例中,在一些实施例中,可以在第一用户设备上创建其中回放视频内容项的同步媒体回放会话,其中与其他用户设备相关联的用户账户的列表被包括为被允许加入同步媒体回放会话。
类似地,在104处,第二用户设备可以从服务器请求要在同步回放会话中呈现的视频和/或可以请求加入同步媒体回放会话。类似于在上面连同框102所描述的,在一些实施例中,第二用户设备可以通过选择链接和/或以任何其他合适的方式来请求加入和/或发起同步媒体回放会话。例如,第二用户设备可以接受加入要在其中回放视频内容项的同步回放会话的请求。在另一示例中,第二用户设备可以启动应用,并且可以从其中正在回放视频内容项的回放会话列表中选择回放会话。
注意,在一些实施例中,可以在第一用户设备和第二用户设备(和/或任何其他合适的用户设备)之间发起还不包括视频的同步媒体回放会话。在一些这样的实施例中,第一用户设备和/或第二用户设备可以以任何合适的方式选择视频和/或视频系列以在同步媒体回放会话期间呈现。例如,在一些实施例中,用户设备可以从可用视频组中选择特定视频。作为另一示例,在一些实施例中,用户设备可以通过从可用视频组中选择视频和/或以在同步媒体回放会话期间要呈现的顺序来布置视频来创建视频的播放列表。
在106处,服务器可以开始将与所请求的视频相对应的视频数据传输到第一用户设备和第二用户设备。在一些实施例中,服务器可以以任何合适的方式将视频数据传输到第一用户设备和第二用户设备。例如,在一些实施例中,视频数据可以经由通信网络被传输,如下面连同图3所示和所述。
在108处,第一用户设备可以将接收到的视频数据存储在第一用户设备的缓冲区中。类似地,在110处,第二用户设备可以将接收到的视频数据存储在第二用户设备的缓冲区中。
在112处,第一用户设备可以确定是否已经缓冲预定量的视频数据。在一些实施例中,预定量的视频数据可以是任何合适量的数据。例如,在一些实施例中,预定量的视频数据可以对应于特定数目的千字节的数据、特定持续时间的视频(例如,五秒、十秒、三十秒、两分钟和/或任何其他持续时间的视频)和/或任何其他合适量的视频数据。类似地,在114处,第二用户设备可以确定预定量的视频数据是否已经在第二用户设备上被缓冲。注意,在一些实施例中,第一用户设备和第二用户设备可以均确定是否已经在每个设备上缓冲相同预定量的视频数据。
如果在112处第一用户设备确定尚未缓冲预定量的视频数据(在112处“否”),则第一用户设备可以循环回到108,并可以继续将接收到的视频数据存储在第一用户设备的缓冲区。类似地,如果在114处第二用户设备确定尚未缓冲预定量的视频数据(在114处“否”),则第二用户设备可以循环回到110,并且可以继续将接收到的视频数据存储在第二用户设备的缓冲区中。
如果在112处第一用户设备确定第一用户设备已经缓冲预定量的视频数据(在112处“是”),则第一用户设备可以进入116并可以向服务器传输指示第一用户设备已经缓冲预定量的视频的消息。类似地,如果在114处第二用户设备确定第二用户设备已经缓冲预定量的视频(在114处“是”),则第二用户设备可以进入118并且可以向服务器传输指示第二用户设备已经缓冲预定量的视频的消息。注意,在一些实施例中,任何合适的信息可以被包括在由第一用户设备和第二用户设备传输的消息中,如下面连同图2更详细地描述的。
在120处,服务器可以确定同步媒体回放会话中包括的所有用户设备(例如,图1所示示例中的第一用户设备和第二用户设备)是否已经缓冲预定量的视频数据。例如,在一些实施例中,服务器可以确定其是否已经从同步媒体回放会话中包括的所有用户设备接收到指示已经缓冲预定量的视频数据的消息。
如果在120处服务器确定同步回放会话中包括的设备尚未缓冲预定量的视频数据(在120处“否”),则在122处服务器可以将响应传输到已传输消息的任何用户设备,该消息指示它们已经缓冲预定量的视频数据。特别地,服务器可以传输响应,该响应指令已经缓冲预定量的视频数据的用户设备等待开始视频的回放。
在这样的情况下,响应于从服务器接收到等待开始视频的回放的响应,用户设备可以在任何合适的延迟之后将预定量的视频数据已经缓冲的消息重新传输到服务器。例如,在一些实施例中,用户设备可以以任何合适的频率(例如,每秒一次、每秒两次、和/或任何其他合适的频率)向服务器传输消息。作为更具体的示例,响应于从服务器接收到等待开始回放的响应,第一用户设备可以循环回到框116。作为另一个更具体的示例,响应于从服务器接收到等待开始回放的响应,第二用户设备可以循环回到框118。例如,响应于从服务器接收到等待开始回放视频的指令,用户设备可以继续将视频数据存储在用户设备的缓冲区。(例如,直到缓冲区已经被填充到缓冲区的容量为止)。
相反,如果在120处服务器确定同步媒体回放会话中包括的所有用户设备已经缓冲预定量的视频数据,则服务器可以在124处向所有用户设备传输开始回放视频的指令。例如,服务器可以在同步媒体回放会话中向所有用户设备传输指令,以开始视频的回放。在另一个示例中,服务器可以在同步媒体回放会话中向所有用户设备传输指令,以在特定的时钟时间回放视频。在一些实施例中,服务器可以继续传输与视频相对应的视频数据,并且用户设备可以在视频的回放期间继续缓冲接收到的视频数据。
在一些实施例中,第一用户设备和第二用户设备可以使同步回放会话以任何合适的方式开始。例如,在一些实施例中,视频的呈现可以在任何合适类型的视频播放器窗口中开始。在一些实施例中,在同步回放会话中包括的其他用户设备的任何合适的指示可以连同视频的呈现被呈现。例如,在一些实施例中,可以呈现与同步回放会话中包括的其他用户设备相关联的用户的用户名和/或与和同步回放会话中包括的其他用户设备相关联的用户相关联的图标。
在一些实施例中,同步媒体回放会话可以允许参与会话的用户设备以任何合适的方式与会话中的媒体内容的呈现和/或与参与会话的其他用户设备进行交互。例如,如上所述,在一些实施例中,用户设备可以使媒体内容项的回放在参与会话的所有用户设备上被暂停。作为另一示例,在一些实施例中,用户设备可以使媒体内容项的回放跳到或跳转到所有用户设备上的不同回放位置。作为又一个示例,在一些实施例中,用户设备可以使不同的媒体内容项开始被呈现。作为又一个示例,在一些实施例中,用户设备可以传输要呈现在会话中存在的所有用户设备上的消息,例如,作为即时消息,作为群聊中的消息和/或以任何其它的合适方式。
转向图2,示出根据所公开的主题的一些实施例的用于在同步媒体回放会话中调整流内容的过程200的示例。在一些实施例中,过程200的块可以在服务器上实现,诸如存储媒体内容和/或将媒体内容流式传输到用户设备的服务器(例如,如下面连同图3所示和所述的服务器302)。
过程200可以通过向参与同步媒体回放会话的多个用户设备中的每一个传输媒体内容流在202处开始。注意,如以上连同图1的框102所描述的,可以以任何合适的方式,例如,通过选择链接,在参与该会话的每个用户设备上发起和/或加入同步媒体回放会话。在一些实施例中,媒体内容流可以对应于在同步媒体回放会话期间将同时呈现在多个用户设备中的每一个上的任何媒体内容项。在一些实施例中,媒体内容项可以由任何用户设备选择,例如,参与同步媒体回放会话的用户设备。附加地或可替代地,在一些实施例中,媒体内容项可以是包括在播放列表或媒体内容项的其他集合中的媒体内容项。在一些实施例中,参与同步媒体回放会话的用户设备中的每个用户设备可以将与所接收的媒体内容流相对应的媒体内容数据存储在用户设备的缓冲区中,如上面连同图1的框108和110所描述的。
在一些实施例中,过程200可以以任何合适的方式传输媒体内容流。例如,在一些实施例中,与过程200相关联的服务器(例如,存储媒体内容和/或将媒体内容流式传输到用户设备的服务器,和/或任何其他合适的服务器)可以使用任何适当的通信网络(例如,通信网络304,如以下连同图3所示和所述)将与每个媒体内容流相关联的媒体内容数据传输到用户设备。
在204处,过程200可以从参与同步媒体回放会话的多个用户设备中的第一用户设备接收信息,该信息指示第一用户设备正在以比参与会话的其他用户设备正在缓冲与传输到其他用户设备中的每一个的媒体内容流相对应的媒体内容数据慢的速率缓冲与传输给第一用户设备的媒体内容流相关联的媒体内容数据。在一些实施例中,可以以任何合适的方式来接收来自第一用户设备的信息。例如,在一些实施例中,如以上连同图1的框112-118所描述的,当每个用户设备已经缓冲与要在会话中呈现的媒体内容项相关联的预定量的媒体内容数据时,该用户设备可以向协调同步媒体回放会话的服务器传输消息。在一些这样的实施例中,过程200可以基于与接收到的消息相关联的信息,确定第一用户设备正在以比其他用户设备更慢的速率缓冲媒体内容数据。例如,在一些实施例中,过程200可以基于从每个用户设备接收到的消息的定时来确定第一用户设备正在比其他用户设备更慢地缓冲媒体内容数据。作为更特定的示例,在一些实施例中,过程200可以基于确定第一用户设备是最后一个完成缓冲预定量的媒体内容数据的用户设备来确定第一用户设备正在比其他用户设备更慢地缓冲媒体内容数据。作为另一个更具体的示例,在一些实施例中,过程200可以基于确定过程200已经从除了第一用户设备之外的参与会话的所有用户设备接收到消息,这指示第一用户设备尚未完成对预定媒体内容数据的缓冲,来确定第一用户设备正在比其他用户设备更慢地缓冲媒体内容数据。
作为另一示例,在一些实施例中,过程200可以基于包括在从第一用户设备接收到的消息中的信息来确定第一用户设备正在以比参与同步媒体回放会话的其他用户设备更慢的速率缓冲媒体内容数据。例如,在一些实施例中,过程200可以从第一用户设备接收消息,该消息指示关于第一用户设备和与过程200相关联的服务器之间的当前网络连接的信息。作为更具体的示例,在一些实施例中,该消息可以指示网络连接的当前速度、与网络连接相关联的时延、网络连接的带宽、网络连接已经被丢弃或超时的次数和/或指示网络连接的质量的任何其它合适的信息。
注意,在一些实施例中,过程200可以从参与同步媒体回放会话的任何用户设备接收可以指示任何合适信息的消息。例如,在一些实施例中,来自用户设备的消息可以指示用户设备和与过程200相关联的服务器之间的网络连接的质量。作为另一个示例,在一些实施例中,来自用户设备的消息可以指示关于用户设备的信息,诸如用户设备的类型(例如,用户设备是移动设备、用户设备是智能电视和/或任何其他合适的设备类型)、关于用户设备的显示器的信息(例如,显示器的尺寸、显示器的当前定向和/或任何其他合适的显示信息)和/或任何其他合适的信息。在一些这样的实施例中,过程200可以使用从用户设备接收的信息来确定传输到每个用户设备的媒体内容流的参数,如下面连同框206更详细地描述的。
在206处,过程200可以选择和/或生成与该媒体内容项相对应的媒体内容流,该媒体内容流的质量比先前传输给第一用户设备的媒体内容流的质量低。在一些实施例中,较低质量的媒体内容流可以以任何合适的方式具有降低的质量。例如,在一些实施例中,可以使用比最初传输给第一用户设备的媒体内容流更低的比特率来对较低质量的媒体内容流进行编码。在一些实施例中,过程200可以生成从任何合适的回放位置开始的较低质量的媒体内容流。例如,在一些实施例中,过程200可以识别与最初传输的媒体内容流的媒体内容数据的最后部分相对应的回放位置,并且可以生成继回放位置之后开始的较低质量的媒体内容流。
注意,在一些实施例中,过程200可以使用任何适当的信息和任何适当的技术来选择和/或确定较低质量的媒体内容流的流参数。例如,在一些实施例中,过程200可以基于与在框202处先前被传输到第一用户设备的媒体内容流相关联的流参数来选择和/或确定更新的流参数(例如,流被编码的新比特率和/或任何其他合适的流参数)。作为更具体的示例,在一些实施例中,过程200可以选择比在框202处被传输到第一用户设备的流的比特率低的更新的比特率。作为另一示例,在一些实施例中,过程200可以基于与第一用户设备相关联的信息来选择和/或确定更新的流参数。作为更具体的示例,在一些实施例中,过程200可以基于当前存储在第一用户设备的缓冲区中的媒体内容数据量和/或基于第一用户的在呈现之前对媒体内容流的帧进行解码的能力来选择和/或确定更新的流参数。作为另一个更特定的示例,在一些实施例中,过程200可以基于指示第一用户设备和与过程200相关联的服务器之间的网络连接的质量的信息(例如,与连接相关联的时延、与连接相关联的带宽、连接的速度和/或任何其他合适的信息)来选择和/或确定更新的流参数。作为又一个更特定的示例,在一些实施例中,过程200可以基于指示参与同步媒体回放会话的其他用户设备的性能的信息——诸如其他用户设备中的每一个到与过程200相关联的服务器的网络连接的质量(例如,每个网络连接的速度、每个网络连接的时延、每个网络连接的带宽和/或任何其他合适的信息)、会话中的每个用户设备在呈现之前对帧进行解码的能力、每个设备的缓冲区中存储的数据量和/或除了第一用户设备之外的设备的其他任何合适性能信息——来选择和/或确定更新的流参数。
在208处,过程200可以开始向第一用户设备传输较低质量的媒体内容流。在一些实施例中,过程200可以以任何合适的方式通知第一用户设备正在传输较低质量的媒体内容流。例如,在一些实施例中,过程200可以将与较低质量的媒体内容流相关联的比特率的指示传输到第一用户设备。在一些实施例中,过程200可以传输指令,该指令使在第一用户设备上呈现指示正在传输较低质量的媒体内容流的通知(例如,消息可以指示由于网络连接不良第一用户设备正在接收较低质量的媒体内容流和/或任何其他合适的信息)。
在210处,过程200可以向参与同步媒体回放会话的每个用户设备传输指令,以开始使用传输给每个用户设备的媒体内容流来呈现媒体内容项。例如,如以上连同图1的框124所描述的,指令可以使每个用户设备开始同时呈现媒体内容项。在一些实施例中,如以上连同图1的框124所描述的,在同步媒体回放会话中呈现的媒体内容项可以包括任何合适的特征,诸如参与该会话的其他用户设备的指示、使会话中所有用户设备上的回放均被更改的允许参与该会话的用户设备更改媒体内容项的回放的特征(例如,暂停媒体内容项、跳转到其他播放位置、和/或以其他任何合适的方式更改回放)、和/或允许用户设备的用户相互进行交互的特征(例如,经由消息传递界面和/或以任何其他合适的方式)。
在212处,过程200可以从参与同步媒体回放会话的多个用户设备中的第二用户设备接收指示第二用户设备已经存储比参与同步媒体回放会话的其他用户设备更少的与传输到第二用户设备的媒体内容流相对应的媒体内容数据的信息。在一些实施例中,过程200可以以任何合适的方式从第二用户设备接收信息。例如,在一些实施例中,参与同步媒体回放会话的每个用户设备可以向与过程200相关联的服务器周期性地传输消息,该消息指示用户设备的缓冲区的当前状态(例如,当前缓冲区中的数据量、当前缓冲区中的数据的回放持续时间和/或其他指示缓冲区状态的合适信息)。在一些这样的实施例中,过程200可以基于从第二用户设备接收到的信息与从其它用户设备接收到的信息之间的比较来确定第二用户设备具有比其他用户设备已经存储在它们相应的缓冲区中更少的存储在第二用户设备的缓冲区中的媒体内容数据。例如,在第二用户设备传输指示第二用户设备当前具有存储在第二用户设备的缓冲区中的两秒钟的回放数据的消息,并且其他用户设备指示其他用户设备实质上具有存储在它们相应的缓冲区中的更多的数据(例如,多于八秒的回放数据、多于十秒的回放数据和/或任何其他合适的量)的实例中,过程200可以确定第二用户设备相对于参与会话的其他用户设备具有存储在第二用户设备中的缓冲区中的较少的媒体内容数据。
在214处,过程200可以选择和/或生成比先前传输给第二用户设备的媒体内容流低的质量级别的媒体内容流。例如,如上面连同框206所述,过程200可以选择和/或生成以比最初传输的媒体内容流低的比特率编码的媒体内容流。在一些实施例中,过程200可以生成较低质量的媒体内容流,该较低质量的媒体内容流从对应的媒体内容项的任何合适的回放位置开始。例如,在一些实施例中,过程200可以生成较低质量的媒体内容流,该较低质量的媒体内容流在继第二用户设备缓冲的最后回放位置之后的位置开始。在一些这样的实施例中,过程200可以基于任何合适的信息来确定由第二用户设备缓冲的最后回放位置,诸如包括在与从第二用户设备传输的由与过程200相关联的服务器接收到的消息中的信息。
类似于以上连同框206所描述的,过程200可以基于任何合适的信息或任何合适的信息的组合来选择要传输到第二用户设备的较低质量的媒体内容流的流参数。例如,如上所述,过程200可以基于与第二用户设备相关联的信息来选择流参数,诸如指示当前缓冲数据量的信息、指示第二用户设备和与过程200相关联的服务器之间的网络连接质量的信息、关于第二用户设备的信息(例如,设备类型、关于第二用户设备的显示器的信息和/或任何其他合适的信息)和/或任何其他合适的信息来选择流参数。作为另一示例,在一些实施例中,过程200可以基于关于参与同步媒体回放会话的其他用户设备的信息——诸如关于每个其他用户设备的网络连接质量的信息、当前由其他每个用户设备缓冲的数据量和/或任何其他合适的信息——来选择流参数。作为更特定的示例,在一些实施例中,过程200可以确定较低质量的流将以足够低的比特率被编码,以允许第二用户设备缓冲等于在预定的持续时间内(例如,两秒钟内、五秒钟内、和/或任何其它的合适的持续时间)内由参与会话的其它的用户设备缓冲的数据量的平均值(例如,平均值、加权平均值、中间值和/或任何其他合适的平均值)的媒体内容数据量。
在216处,过程200可以向第二用户设备传输较低质量的媒体内容流。在一些实施例中,然后第二用户设备可以缓冲较低质量的媒体内容流,并且然后可以开始呈现来自缓冲区的较低质量的媒体内容流。
注意,在一些实施例中,过程200可以使用任何其他合适的技术来维持参与同步媒体回放会话的用户设备之间的同步。例如,在参与同步媒体回放会话的用户设备暂停回放以便缓冲附加的媒体内容数据的情况下,过程200可以为暂停回放的用户设备和/或参与同步回放会话的其他用户设备变更回放速度。作为更具体的示例,在一些实施例中,过程200可以为暂停和恢复回放以缓冲附加的媒体内容数据的用户设备加速回放,从而允许用户设备在同步媒体回放会话中赶上其他用户设备。作为另一个更特定的示例,在一些实施例中,过程200可以减速参与同步媒体回放会话的其他用户设备的回放,从而使其他用户设备允许暂停回放的用户设备赶上同步媒体回放会话。注意,在一些实施例中,过程200可以基于任何合适的准则使参与同步媒体回放会话的一个或多个用户设备的回放速度被变更。例如,在一些实施例中,过程200可以响应于确定用户设备与参与会话的其他用户设备不同步大于预定的持续时间(例如,大于两秒、大于五秒和/或任何其他合适的持续时间)来变更回放速度。
另外,注意,在一些实施例中,过程200可以使用任何适当的技术或技术的组合来协调加入现有的同步媒体回放会话的附加用户设备的同步。例如,在一些实施例中,过程200可以使媒体内容项的回放在会话中的所有用户设备上被暂停,而附加的用户设备缓冲媒体内容数据以在同步回放中加入其他用户设备。作为另一示例,在一些实施例中,过程200可以识别在同步媒体回放会话中呈现的媒体内容项的未来回放位置(例如,当前回放位置之后五秒的回放位置、在当前回放位置之后十秒的回放位置和/或任何其他合适的未来回放位置),并且可以将在未来回放位置开始的媒体内容数据传输到附加用户设备,以在附加(第三)用户设备上进行缓冲。然后,过程200可以将指令传输到附加用户设备,该指令使附加用户设备在会话中的其他用户设备到达将来回放位置的时间开始从将来回放位置开始媒体内容项的回放,从而允许附加的用户设备加入同步会话。作为又一个示例,在一些实施例中,过程200可以开始将从当前回放位置的媒体内容数据传输到附加用户设备,并且可以随后基于附加用户设备的缓冲速率和/或网络连接信息来估计附加用户设备将已经缓冲预定量的媒体内容数据(例如,特定数目的千字节的数据、对应于特定回放持续时间的量的数据和/或任何其他合适量的数据)的未来回放位置。然后,过程200可以开始将与估计的未来回放位置相对应的媒体内容数据连同从估计的未来回放位置开始呈现媒体内容项的指令传输到附加的用户设备。
转向图3,示出根据所公开的主题的一些实施例的用于在多个设备的同步媒体内容回放期间调整质量级别的硬件的示例300。如所图示的,硬件300可以包括服务器302、通信网络304和/或一个或多个用户设备306,诸如用户设备308和310。例如,包括用户设备308和310的多个用户设备306可以通过通信网络304参与由一个或多个服务器302管理的同步媒体回放会话。在另一示例中,服务器302可以被配置成向诸如用户设备308和310的一个或多个用户设备306提供同步媒体回放会话中的媒体内容,并且还可以配置成在同步媒体回放会话中处置同步特征。在又一示例中,第一服务器302可以被配置成将同步媒体回放会话中的媒体内容提供给一个或多个用户设备306,并且第二服务器302可以被配置成处置同步媒体回放会话。
服务器302可以是用于存储信息、数据和/或媒体内容的任何合适的服务器。例如,在一些实施例中,服务器302可以存储媒体内容项,其可以被传输到用户设备306以进行呈现。在一些这样的实施例中,媒体内容项可以包括任何合适类型的媒体内容,诸如视频、电影、电视节目、实况流式传输的内容、音频内容(例如,音乐、有声读物、广播节目和/或任何其他合适的音频内容)和/或任何其他合适类型的媒体内容。作为另一示例,在一些实施例中,服务器302可以协调在多个用户设备306上的媒体内容的同步回放,如以上连同图1和图2所描述的。作为更具体的示例,在一些实施例中,服务器302可以接收来自多个用户设备的请求以在同步媒体回放会话中发起媒体内容项的回放,并且可以响应于确定所有用户设备已经缓冲预定量的媒体内容数据而指令用户设备开始媒体内容项的回放,如以上连同图2所描述的。
在一些实施例中,通信网络304可以是一个或多个有线和/或无线网络的任何合适的组合。例如,通信网络304能够包括以下中的任何一种或多种:互联网、内联网、广域网(wan)、局域网(lan)、无线网络、数字订户线路(dsl)网络、帧中继网络、异步转移模式(atm)网络、虚拟专用网(vpn)和/或任何其它合适的通信网络。用户设备206能够通过一个或多个通信链路(例如,通信链路312)连接到通信网络304,该通信网络304能够经由一个或多个通信链路(例如,通信链路314)被链接到服务器302。通信链路可以是适合于在用户设备306和服务器302之间传达数据的任何通信链路,诸如网络链路、拨号链路、无线链路、硬连线链路、任何其它合适的通信链路或此类链路的任何合适的组合。
用户设备306可以包括适合于呈现媒体内容和/或参与同步媒体回放会话的任何一个或多个用户设备。例如,在一些实施例中,用户设备306可以包括移动电话、平板计算机、智能电视、媒体播放器、台式计算机、车辆娱乐系统、可穿戴计算机和/或任何其他合适类型的用户设备。
尽管服务器302被图示为一个设备,但是在一些实施例中,能够使用任何合适数目的设备来执行由服务器302执行的功能。例如,在一些实施例中,能够使用多个设备来实现由服务器302执行的功能。
尽管在图3中示出了两个用户设备308和310以避免使图过于复杂,但是能够在一些实施例中使用任何合适数目的用户设备和/或任何合适类型的用户设备。。
在一些实施例中,能够使用任何合适的硬件来实现服务器302和用户设备306。例如,在一些实施例中,能够使用任何合适的通用计算机或专用计算机来实现设备302和306。例如,可以使用专用计算机来实现移动电话。任何这种通用计算机或专用计算机能够包括任何合适的硬件。例如,如图4的示例硬件400中图示的,这种硬件能够包括硬件处理器402、存储器和/或存储404、输入设备控制器406、输入设备408、显示/音频驱动器410、显示和音频输出电路412、通信接口414、天线416和总线418。
在一些实施例中,硬件处理器402能够包括任何合适的硬件处理器,诸如微处理器、微控制器、数字信号处理器、专用逻辑和/或用于控制通用计算机或专用计算机的功能的任何其它合适的电路。在一些实施例中,能够通过存储在诸如服务器402的服务器的存储器和/或存储中的服务器程序来控制硬件处理器402。例如,在一些实施例中,服务器程序能够使硬件处理器402接收用于协调同步媒体内容查看会话的请求,确定多个用户设备是否准备就绪开始同步媒体内容查看会话,向用户设备传输指令以开始同步媒体内容查看会话,调整媒体内容流的质量和/或执行任何其他合适的功能。在一些实施例中,能够通过存储在用户设备306的存储器和/或存储404中的计算机程序来控制硬件处理器402。例如,计算机程序能够使硬件处理器402将接收到的媒体内容数据存储在用户设备306的缓冲区中,响应于确定已缓冲预定量的媒体内容数据而将消息传输到服务器302,将媒体内容作为同步媒体内容回放会话的一部分呈现,向服务器302传输指示用户设备306的缓冲区的当前状态和/或网络连接的当前质量的消息,和/或执行任何其他合适的功能。
在一些实施例中,存储器和/或存储404可以是用于存储程序、数据和/或任何其它合适的信息的任何合适的存储器和/或存储。例如,存储器和/或存储404能够包括随机存取存储器、只读存储器、闪速存储器、硬盘存储装置、光学介质和/或任何其它合适的存储器。
在一些实施例中,输入设备控制器406可以是用于控制并接收来自一个或多个输入设备408的输入的任何合适的电路。例如,输入设备控制器406可以是用于接收来自触摸屏、来自键盘、来自一个或多个按钮、来自话音辨识电路、来自麦克风、来自相机、来自光学传感器、来自加速度计、来自温度传感器、来自近场传感器、来自压力传感器、来自编码器和/或任何其它类型的输入设备的输入的电路。
在一些实施例中,显示/音频驱动器410可以是用于控制并驱动到一个或多个显示/音频输出设备412的输出的任何合适的电路。例如,显示/音频驱动器410可以是用于驱动触摸屏、平板显示器、阴极射线管显示器、投影仪、一个或多个扬声器和/或任何其它合适的显示器和/或呈现设备的电路。
通信接口414可以是用于与一个或多个通信网络(例如,计算机网络304)对接的任何合适的电路。例如,接口414能够包括网络接口卡电路、无线通信电路和/或任何其它合适类型的通信网络电路。
在一些实施例中,天线416可以是用于以无线方式与通信网络(例如,通信网络304)进行通信的任何合适的一个或多个天线。在一些实施例中,能够省略天线416。
在一些实施例中,总线418可以是用于在两个或更多个组件402、404、406、410和414之间进行通信的任何合适的机制。
能够在依照一些实施例的硬件400中包括任何其它合适的组件。
在一些实施例中,能够以不限于连同各图示出并描述的次序和顺序的任何次序或顺序实行或执行图1和图2的过程的上述框中的至少一些。另外,能够在适当的情况下基本上同时地或并行地实行或执行图1和图2的上述框中的一些以减少时延和处理时间。附加地或替换地,能够省略图1和图2的过程的上述框中的一些。例如,原则上可以在还没有发起如参考图3的块202至210所描述的同步媒体回放会话的情况下应用如参考图3的框212、214和216所描述的方法。
在一些实施例中,任何合适的计算机可读介质能够被用于存储用于执行本文的功能和/或过程的指令。例如,在一些实施例中,计算机可读介质可以是暂时性的或非暂时性的。例如,非暂时性计算机可读介质能够包括诸如以下各项的介质:非暂时性形式的磁性介质(诸如硬盘、软盘和/或任何其它合适的磁性介质)、非暂时性形式的光学介质(诸如紧致盘、数字视频盘、蓝光盘和/或其它任何合适的光学介质)、非暂时性形式的半导体介质(诸如闪速存储器、电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和/或任何其它合适的半导体介质)、在传输不是短暂或缺少任何永久表象的任何合适的介质和/或任何合适的有形介质。作为另一示例,暂时性计算机可读介质能够包括网络上、电线、导体、光纤、电路、在传输期间是短暂且缺少任何永久表象的任何合适的介质和/或任何合适的无形介质中的信号。
因此,提供用于在同步媒体内容呈现期间调整质量级别的方法、系统和介质。
尽管已经在前面的说明性实施例中描述并图示了本发明,但是应理解,已经仅通过示例做出了本公开,并且在不脱离本发明的精神和范围的情况下,能够做出本发明的实现方式的细节方面的许多变化,本发明的精神和范围仅由以下权利要求限定。能够以各种方式组合并重新布置所公开的实施例的特征。