本公开涉及数字媒体分发领域。
背景技术:
:数字媒体播放功能可以包含在各种设备中,包括数字电视包括所谓的“智能”电视、机顶盒、膝上型电脑或台式电脑、平板电脑、数字录音设备、数字媒体播放器、视频游戏设备、蜂窝电话包括所谓的“智能”电话、专用视频流设备等。数字媒体内容(例如,视频和音频编程)可以源自多个源,包括例如无线电视提供商、卫星电视提供商、有线电视提供商、在线媒体服务提供商包括所谓的流媒体服务提供商等。数字媒体内容可以通过分组交换网络交付,包括双向网络(诸如互联网协议(ip)网络)和单向网络(诸如数字广播网络)。可以根据内容交付协议模型将数字媒体内容从源传输到接收器设备(例如,数字电视或智能电话)。内容传递协议模式可以基于一个或多个传输标准。传输标准的示例包括数字视频广播(dvb)标准、综合业务数字广播标准(isdb)标准和由高级电视系统委员会(atsc)开发的标准,包括例如目前正在开发的atsc3.0标准系列。用于将数字媒体内容从源传输到接收器设备的当前技术可能不太理想。技术实现要素:根据本公开的一个示例,一种用于发信号通知与媒体呈现相关联的信息的方法包括:发信号通知指示超文本传输协议消息类型上的动态自适应流的帧头,并且将与该消息类型对应的一个或多个所提供的自变量发信号通知为javascript对象表示法编码参数。附图说明[图1]图1是示出根据本公开的一种或多种技术的内容交付协议模型的示例的概念图。[图2]图2是示出可以实现本公开的一种或多种技术的系统的示例的框图。[图3]图3是示出可以实现本公开的一种或多种技术的计算设备的示例的框图。[图4]图4是示出可以实现本公开的一种或多种技术的媒体分发引擎的示例的框图。[图5]图5是示出根据本公开的一种或多种技术的通信流的示例的概念图。[图6a]图6a是示出媒体呈现文档请求消息的相应示例模式的计算机程序列表。[图6b]图6b是示出媒体呈现文档请求消息的相应示例模式的计算机程序列表。[图7a]图7a是示出媒体呈现文档请求响应消息的相应示例模式的计算机程序列表。[图7b]图7b是示出媒体呈现文档请求响应消息的相应示例模式的计算机程序列表。[图8a]图8a是示出分段请求消息的相应示例模式的计算机程序列表。[图8b]图8b是示出分段请求消息的相应示例模式的计算机程序列表。[图9a]图9a是示出分段请求响应消息的相应示例模式的计算机程序列表。[图9b]图9b是示出分段请求响应消息的相应示例模式的计算机程序列表。[图9c]图9c是示出分段请求响应消息的相应示例模式的计算机程序列表。[图9d]图9d是示出分段请求响应消息的相应示例模式的计算机程序列表。[图10a]图10a是示出取消请求消息的相应示例模式的计算机程序列表。[图10b]图10b是示出取消请求消息的相应示例模式的计算机程序列表。[图11a]图11a是示出资源更改通知消息的相应示例模式的计算机程序列表。[图11b]图11b是示出资源更改通知消息的相应示例模式的计算机程序列表。具体实施方式通常,本公开描述了用于实现与数字媒体内容的分发相关联的通信的技术。应当注意,数字媒体内容可以被包括作为视听服务的一部分,或者在一些示例中可以被包括作为专用音频服务。应当注意,虽然在一些示例中,本公开描述了关于特定传输标准和特定数字媒体格式的技术,但是本文描述的技术通常可以适用于各种传输标准和数字媒体格式。例如,本文描述的技术通常可以适用于dvb标准、isdb标准、atsc标准、数字地面多媒体广播(dtmb)标准、数字多媒体广播(dmb)标准、混合广播和宽带电视(hbbtv)标准、万维网联盟(w3c)标准、通用即插即用(upnp)标准和运动图像专家组(mpeg)标准中的任一种。此外,应当注意,将文献以引用方式并入本文是出于描述的目的,并且不应被构造为限制和/或产生关于本文使用的术语的歧义。例如,在一个并入的参考文献中提供的对某个术语的定义不同于另一个并入的参考文献和/或如本文中使用的该术语的情况下,则该术语应以广泛地包括每个相应定义的方式和/或以在包括替代方案中每个特定定义的方式来解释。根据本公开的一个示例,一种用于发信号通知与媒体呈现相关联的信息的方法包括:一个或多个处理器,这些处理器被配置为发信号通知指示超文本传输协议消息类型上的动态自适应流的帧头,并且将与该消息类型对应的一个或多个所提供的自变量发信号通知为javascript对象表示法编码参数。根据本公开的另一个示例,一种发信号通知与媒体呈现相关联的信息的装置包括:用于发信号通知指示超文本传输协议消息类型上的动态自适应流的帧头的装置,以及用于将与该消息类型对应的一个或多个所提供的自变量发信号通知为javascript对象表示法编码参数的装置。根据本公开的另一个示例,非暂态计算机可读存储介质包括存储在其上的指令,这些指令在执行时使得设备的一个或多个处理器发信号通知指示超文本传输协议消息类型上的动态自适应流的帧头,并且将与该消息类型对应的一个或多个所提供的自变量发信号通知为javascript对象表示法编码参数。在以下附图和描述中阐述了一个或多个示例的细节。其他特征、目的和优点将从描述和附图以及权利要求书中显而易见。计算设备和/或传输系统可以基于包括一个或多个抽象层的模型,其中每个抽象层的数据根据特定结构表示,例如,数据包结构、调制方案等。包括已定义的抽象层的模型的示例是所谓的开放系统互连(osi)模型。osi模型定义了7层堆栈模型,包括应用层、呈现层、会话层、传输层、网络层、数据链路层和物理层。应当注意,关于描述堆栈模型中的层,术语“上”和“下”的使用可以基于作为最上层的应用层和作为最下层的物理层。此外,在一些情况下,术语“层1”或“l1”可用于指物理层,术语“层2”或“l2”可用于指链路层,术语“层3”或“l3”或“ip层”可用于指网络层。物理层通常可以指电信号形成数字数据的层。例如,物理层可以指定义调制的射频(rf)符号如何形成数字数据帧的层。数据链路层(也可以称为链路层)可以指在发送侧的物理层处理之前以及在接收侧的物理层接收之后使用的抽象。如本文所用,链路层可以指用于在发送侧将数据从网络层传输到物理层并且用于在接收侧将数据从物理层传输到网络层的抽象,应当注意,发送侧和接收侧是逻辑角色,并且单个设备可以在一个实例中作为发送侧并且在另一个实例中作为接收侧操作。链路层可以将封装在特定分组包类型(例如,互联网协议第4版(ipv4)数据包等)中的各种类型的数据(例如,视频、音频或应用文件)抽象为单个通用格式,以供物理层处理。网络层通常可以指发生逻辑寻址的层。也就是说,网络层通常可以提供寻址信息(例如,ip地址),使得数据包可以被交付到网络内的特定节点(例如,计算设备)。如本文所用,术语网络层可以指链路层上方的层和/或具有结构中的数据的层,使得可以接收它以用于链路层处理。传输层可以指能够实现所谓的进程至进程通信服务的层。会话层、呈现层和应用层中的每一个都可以定义如何交付数据以供用户应用程序使用。传输标准(包括当前正在开发的传输标准)可以包括指定每层的支持协议的内容交付协议模型,并且可以进一步定义一个或多个特定层实现。图1示出了根据本文描述的技术的内容交付协议模型的示例。本文描述的技术可以在被配置为基于内容交付协议模型100进行操作的系统中实现。内容交付协议模型100可以实现数字媒体内容的分发。这样,内容交付协议模型100可以在使用户能够从媒体服务提供商(例如,所谓的流媒体服务)访问数字媒体内容的系统中实现。术语媒体服务或媒体呈现可用于指聚合呈现给用户的媒体部件的集合(例如,视频部件、音频部件和子标题部件),其中组件可以是多种媒体类型,其中服务可以是连续的或间歇的,其中服务可以是实时服务(例如,对应于直播事件的多媒体呈现)或非实时服务(例如,视频点播服务)。如图1所示,内容交付协议模型100包括物理层和数据链路层。如上所述,物理层通常可以指电信号形成数字数据的层,并且数据链路层可以包括用于物理层处理的通用格式。在图1所示的示例中,在一些示例中,物理层可以包括物理层帧结构,该物理层帧结构包括已定义的前导码和数据有效载荷结构,其包括rf信道内的一个逻辑结构或rf信道的一部分。在图1所示的示例中,数据链路层可以是用于将各种特定数据包类型抽象为单个通用格式以供物理层处理的数据结构,如上所述,网络层通常可以指发生逻辑寻址的层。参考图1,内容交付协议模型100可以使用ip寻址方案,例如ipv4和/或ipv6作为网络层。如上所述,传输层通常可以指能够实现所谓的进程至进程通信服务的层。如图1所示,内容交付协议模型100可以利用传输控制协议(tcp)作为传输层。如上所述,内容交付协议模型100可以实现数字媒体内容的分发。在图1的示例中,应用程序可以包括使用户能够再现数字媒体内容的应用程序。例如,内容交付协议模型可以包括在移动设备等上操作的视频播放器应用程序。在图1所示的示例中,媒体编解码器可以包括底层编解码器(即,多媒体编码器/解码器实现),其使得数字媒体内容格式(例如,mpeg格式等)能够由应用程序再现。在图1所示的示例中,内容交付协议模型100利用http上的动态自适应流(dash)来使逻辑客户端能够从逻辑服务器处接收数字媒体内容。dash在mpegdashiso/iec:iso/iec23009-1:2014的dash-if简档中进行了描述,“信息技术_http上的动态自适应流(dash)—第1部分:媒体呈现描述和分段格式”,国际标准化组织,第2版,5/15/2014(在下文中,“iso/iec23009-1:2014”),其据此以引用方式并入本文。如图1所示,dash媒体呈现可以包括数据段、视频段和音频段。在一些示例中,dash媒体呈现可以对应于由服务提供商(例如,单个tv节目或在一段时间内连续的线性tv节目集)定义的给定持续时间的线性服务或线性服务的一部分。根据dash,媒体呈现文档(mpd)是元数据片段,其包括dash媒体呈现的简档的形式化描述。片段可以包括可延伸标记语言(xml)编码的元数据片段集。mpd的内容为媒体呈现内的所识别资源提供分段的资源标识符和上下文。描述了关于iso/iec23009-1:2014的mpd片段的数据结构和语义。此外,应当注意,目前正在提出iso/iec23009-1的草案版本。因此,在图1所示的示例中,mpd可以包括iso/iec23009-1:2014中描述的mpd、当前提出的mpd、和/或其组合。在iso/iec23009-1:2014中,如mpd中描述的媒体呈现可以包括一个或多个周期的序列,其中每个周期可以包括一个或多个适应集。应当注意,在适应集包括多个媒体内容部件的情况下,可以单独描述每个媒体内容部件。每个适应集可以包括一个或多个表示。在iso/iec23009-1:2014中,提供了每个表示:(1)作为单个分段,其中子分段在具有适应集的表示中对齐;以及(2)作为一系列分段,其中每个分段可以由模板生成的全球资源定位符(url)寻址。每个媒体内容部件的属性可以由适应集元素和/或适应集内的元素描述,包括例如内容部件元素。如图1所示,dash可以在http和websocket协议之上操作。也就是说,dash媒体呈现可以通过全双工http兼容协议进行,包括http/2,该协议在互联网工程任务组(ietf)请求注释(rfc)7540、2015年5月的超文本传输协议版本2(http/2)和websocket协议中进行了描述,该websocket协议在ietf中进行了描述:“websocket协议”、rfc6455、2011年12月的互联网工程任务组以及websocketapi、2012年9月20日的万维网联盟(w3c)候选推荐,其中的每一个分别据此以引用方式并入本文。websocket协议通过建立双向套接字实现逻辑客户端与逻辑服务器(可以称为远程主机)之间的双向通信。应当注意,在一些情况下,双向套接字的侧面或端点可以称为终端。基于websocket协议的双向套接字包括双向套接字,该套接字使得以通用转换格式-8(utf-8)编码的字符数据能够通过tcp在逻辑客户端与逻辑服务器之间交换。23009-6国际标准草案:带服务器推送和websockets的dash、iso/iecjtc1/sc29/wg11/w16232,2016年6月,(以下简称“w16232”),其据此以引用方式并入本文,定义了用于使用基于websocket协议的双向套接字来驱动mpeg-dash媒体呈现的交付的信令和消息格式。在w16232中,从服务器到客户端的分段的传输(在w16232中称为推送)是基于推送策略,该推送策略定义了可以从服务器向客户端传输分段的方式。在w16232中,推送指令是从客户端发送到服务器的请求修饰符,它使客户端能够表达对服务器处理请求的推送策略的期望。此外,在w16232中,推送确认(也称为推送确认)是从服务器发送到客户端的响应修饰符,其使服务器能够陈述在处理请求时使用的推送策略。在w16232中,可以通过发送包括dash子协议帧头以及一个或多个所提供的自变量的消息来传送推送指令和推送确认。表1中提供了w16232中提供的dash子协议帧头的语义。表1w16232为每个stream_id、msg_code、e、f、ext_length和extension提供了以下定义:stream_id:是当前流的标识符,允许通过同一websocket连接多路复用多个请求/响应。对特定请求的响应应使用与该请求相同的stream_id。新stream_id的出现指示已发起新的流。取消请求的接收、流结束或错误将导致关闭由携带的stream_id标识的流。msg_code:指示该帧表示的mpeg-dash消息。可用的消息代码在表2中定义。表2e:该字段是错误标志。当设置该字段时,接收器可以将该消息解释为错误。有关错误的其他信息可能在扩展头中提供。f:保留。ext_length:提供在应用程序数据之前的扩展数据的4个字节的长度,包括填充。extension:扩展头必须是适用于请求/响应的附加信息字段的javascript对象表示法(json)编码,符合ietfrfc7158,[javascript对象表示法(json)数据交换格式,2013年3月,其据此以引用方式并入本文]。为了与4字节边界对齐,可以在扩展头之后添加填充0字节。该内容应以utf-8格式编码。扩展头的json编码应由单个根级json对象组成,包含零个或多个名称/值对。如表2所示,每种消息类型都包括所提供的自变量,如表3至表8所示。在表3至表8的每一个中,type指示数据类型,其中uri是包含统一资源标识符(uri)的串,如rfc3986中所定义,string是utf-8字符串、整数,并且boolean是true或false值。在表3至表8的每一个中,基数指示消息实例中参数的所需实例数,其中0指示参数值的信令是任选的。表3表4表5参数名称类型基数说明segmentsegment1服务器返回的分段。push_ackpushack0..n服务器将遵循的推送策略,如[w16232]第6.1.4节所述。headersstring0..1包含适用于该消息的crlf分隔的http1.1一致性头字段集。statusnumber1符合rfc7231第6节的http状态代码,其适用于该消息。表6表7表8参考表3和表4,w16232为pushdirective参数提供以下格式。abnf中的pushdirective格式[ietfrfc5234,语法规范的增强型bnf[巴科斯-诺尔范式]:abnf,2008年1月]形式如下:push_directive=push_type[ows“;”owsqvalue]push_type=<apushtypedefined[below]>qvalue=<aqvalue,asdefinedinrfc7231>“ows”在rfc7230[ietfrfc7230,超文本传输协议(http/1.1):消息语法和路由,2014年6月],第3.2.3节中定义,并表示任选的空格。当将多个推送指令应用于请求时,客户端可以应用质量值(“qvalue”),如在rfc7231中的内容协商中所描述的那样。客户端可以将更高质量的值应用于它希望优先于具有较低质量值的另选指令的指令。请注意,这些值是服务器的提示,并不意味着服务器必须选择具有最高质量值的策略。参考表5和表6,w16232为pushack提供以下格式。abnf形式中的pushack格式如下:push_ack=push_type其中push_type定义为[below]w16232为pushtype提供以下格式:abnf形式的pushtype格式如下:push_type=push_type_name[ows“;”owspush_params]push_type_name=dquote<urn>dquotepush_params=push_param*(ows“;”owspush_param)pushparam=1*vchar其中-“<urn>”语法在rfc2141[ietfrfc2141,统一资源命名(urn)语法,1997年5月]中定义。在w16232中为信令推送指令和推送确认定义的消息可能不太理想。图2是示出可以实现本公开描述的一种或多种技术的系统的示例的框图。系统200可以被配置为根据本文描述的技术传送数据。在图2所示的示例中,系统200包括一个或多个计算设备202a-202n、一个或多个内容提供商站点204a-204n、数据库206、一个或多个媒体分发引擎208a-208n、以及广域网210。系统200可以包括软件模块。软件模块可以存储在存储器中并由处理器执行。系统200可以包括一个或多个处理器以及多个内部和/或外部存储器设备。存储器设备的示例包括文件服务器、文件传输协议(ftp)服务器、附网存储(nas)设备、本地磁盘驱动器或能够存储数据的任何其他类型的设备或存储介质。存储媒体可以包括蓝光盘、dvd、cd-rom、磁盘、闪存存储器或任何其他合适的数字存储介质。当本文描述的技术部分地以软件实现时,设备可以将软件的指令存储在合适的非暂态计算机可读介质中,并使用一个或多个处理器以硬件执行指令。系统200表示系统的示例,该系统可以被配置为允许数字媒体内容(诸如电影、现场体育赛事等)和与其相关联的数据和应用程序以及媒体呈现被分发到多个计算设备并由这些多个计算设备访问。在图2所示的示例中,计算设备202a-202n可以包括配备用于有线和/或无线通信的任何设备,并且可以包括电视机、机顶盒、数字视频录像机、台式电脑、膝上型电脑或平板电脑、游戏控制台、移动设备包括例如“智能”电话、蜂窝电话和个人游戏设备。应当注意,虽然系统200被示为具有不同的站点,但是此类图示是出于描述的目的,并且不将系统200限制到特定的物理构架。可以使用硬件、固件和/或软件具体实施的任何组合来实现系统200的功能和其中包括的站点。图3是示出可以实现本公开的一种或多种技术的计算设备的示例的框图,计算设备300是计算设备的示例,该计算设备可以被配置为从通信网络接收数据并允许用户访问多媒体内容。计算设备300包括中央处理单元302、系统存储器304、系统接口312、音频解码器314、音频输出系统316、视频解码器318、显示系统320、i/o设备322和网络接口324中央处理单元302、系统存储器304、系统接口312、音频解码器314、音频输出系统316、视频解码器318、显示系统320、i/o设备322和网络接口324中的每一个可以互连(物理地、通信地和/或可操作地)用于部件间的通信,并且可以实现为各种合适的电路中的任一种,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。应当注意,虽然计算设备300被示为具有不同的功能块,但是此类图示是出于描述的目的,并且不将计算设备300限制到特定的硬件构架。可以使用硬件、固件和/或软件具体实施的任何组合来实现计算设备300的功能。cpu302可以被配置为实现用于在计算设备300中执行的功能和/或处理指令。cpu302可以包括单核和/或多核中央处理单元。cpu302能够检索和处理用于实现本文描述的一种或多种技术的指令、代码和/或数据结构。指令可以存储在计算机可读介质上,诸如系统存储器304。系统存储器304可以被描述为非暂态或有形计算机可读存储介质。在一些示例中,系统存储器304可以提供临时和/或长期存储。在一些示例中,系统存储器304或其部分可以被描述为非易失性存储器,并且在其他示例中,系统存储器304的部分可以被描述为易失性存储器。系统存储器304可以被配置为存储可以在操作期间由计算设备300使用的信息。系统存储器304可以用于存储程序指令以供cpu302执行,并且可以由在计算设备300上运行的程序使用以在程序执行期间临时存储信息。此外,系统存储器304可以被配置为存储许多数字媒体内容文件。如图3所示,系统存储器304包括操作系统306、应用程序308和浏览器应用程序310。应用程序308可以包括在计算设备300内实现或由其执行的应用程序,并且可以被实现或包含在计算设备300的部件内、可操作、可执行、和/或可操作地/通信地耦接到该计算设备的部件。应用程序308可以包括可以使计算设备300的cpu302执行特定功能的指令。应用程序308可以包括在计算机编程语句中表达的算法,诸如for循环、while循环、if语句、do循环等。可以使用指定的编程语言来开发应用程序308。编程语言的示例包括javatm、jinitm、c,c++、objectivec、swift、perl、python、php、unixshell、visualbasic和visualbasicscript。浏览器应用程序310包括使计算设备300能够使用资源标识符检索数据和/或使得将检索的数据再现的逻辑结构。浏览器应用程序310可以包括一个或多个web浏览器。浏览器应用程序310可以被配置为处理通常对应于网站内容的文档,诸如标记语言文档(例如html5、xml等)和脚本语言文档(例如javascript等)。应用程序308和浏览器应用程序310可以结合操作系统306执行。也就是说,操作系统306可以被配置为促进应用程序与cpu302以及计算设备300的其他硬件部件的交互。在一些示例中,操作系统306可以是被设计为安装在机顶盒、数字视频记录器、电视等上的操作系统。此外,在一些示例中,操作系统306可以是被设计为安装在专用计算设备和/或移动计算设备上的操作系统。应当注意,本文描述的技术可以被配置为利用软件架构的任何和所有组合进行操作的设备使用。系统接口312可以被配置为启用计算设备300的部件之间的通信。在一个示例中,系统接口312包括使数据能够从一个对等设备传输到另一个对等设备或传输到存储介质的结构。例如,系统接口312可以包括支持基于加速图形端口(agp)的协议、基于外围部件互连(pci)总线的协议的芯片组,诸如pciexpresstm(pcie)总线规范,其由外围部件互连特殊兴趣小组维护,或者可以用于互连对等设备的任何其他形式的结构(例如,专有总线协议)。如上所述,计算设备300是计算设备300,其被配置为从通信网络接收数据并从中提取数字媒体内容。所提取的数字媒体内容可以封装在各种数据包类型中。网络接口324可以被配置为使计算设备300能够经由局域网和/或广域网发送和接收数据。网络接口324可以包括网络接口卡诸如以太网卡、光收发器、射频收发器或者被配置为发送和接收信息的任何其他类型的设备。网络接口324可以被配置为根据网络中利用的物理和媒体访问控制(mac)层执行物理信令、寻址和信道访问控制。计算设备300可以被配置为解析根据本文描述的任何技术生成的信号。音频解码器314可以被配置为接收和处理音频数据包。例如,音频解码器314可以包括被配置为实现音频编解码器的各方面的硬件和软件的组合。也就是说,音频解码器314可以被配置为接收音频数据包并将音频数据提供给音频输出系统316以进行再现。音频数据可以使用多信道格式编码,诸如由杜比和数字影院系统开发的格式。可以使用音频压缩格式对音频数据进行编码。音频压缩格式的示例包括运动图像专家组(mpeg)格式、高级音频编码(aac)格式、dts-hd格式和杜比数字(ac-3)格式。音频输出系统316可以被配置为再现音频数据。例如,音频输出系统316可以包括音频处理器、数字-模拟转换器、放大器和扬声器系统。扬声器系统可以包括各种扬声器系统中的任一种,诸如耳机、集成立体声扬声器系统、多扬声器系统或环绕声系统。视频解码器318可以被配置为接收和处理视频数据包。例如,视频解码器318可以包括用于实现视频编解码器的各方面的硬件和软件的组合。在一个示例中,视频解码器318可以被配置为解码根据任何数量的视频压缩标准编码的视频数据,诸如itu-th.262或iso/iecmpeg-2visual、iso/iecmpeg-4visual、itu-th.264(也称为iso/iecmpeg-4高级视频编码(avc))、以及高效视频编码(hevc)。显示系统320可以被配置为检索和处理视频数据以供显示。例如,显示系统320可以从视频解码器318处接收像素数据并输出数据以用于视觉呈现。此外,显示系统320可以被配置为结合视频数据(例如,图形用户界面)输出图形。显示系统320可以包括各种显示设备中的一种,诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器、或能够向用户呈现视频数据的其他类型的显示设备。显示设备可以被配置为显示标准清晰度内容、高清晰度内容或超高清内容。i/o设备322可以被配置为在计算设备300的操作期间接收输入并提供输出。也就是说,i/o设备322可以使用户能够选择将再现的多媒体内容。可以从输入设备处生成输入,诸如,按钮式遥控器、包括触敏屏幕的设备、基于运动的输入设备、基于音频的输入设备、或配置为接收用户输入的任何其他类型的设备。i/o设备322可以使用标准化通信协议可操作地耦接到计算设备300,诸如,通用串行总线协议(usb)、蓝牙、zigbee或专有通信协议,诸如,专有的红外通信协议。再次参考图2,广域网210是被配置为使得能够分发数字媒体内容的网络的示例。广域网210可以包括基于数据包的网络,并且根据一个或多个电信协议的组合进行操作。电信协议可以包括专有方面并且/或者可以包括标准化电信协议。标准化电信协议的示例包括全球系统移动通信(gsm)标准、码分多址(cdma)标准、第三代合作伙伴计划(3gpp)标准、欧洲电信标准协会(etsi)标准、欧洲标准(en)、ip标准、无线应用协议(wap)标准、以及电气与电子工程师协会(ieee)标准,诸如,一个或多个ieee802标准(例如,wi-fi)广域网210可以包括无线和/或有线通信媒体的任何组合。广域网210可以包括同轴电缆、光纤电缆、双绞线电缆、以太网电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种设备和站点之间的通信的任何其他设备。在一个示例中,广域网210通常可以对应于互联网及其子网。此外,广域网210可以包括广播电视服务网络,可以包括公共无线传输网络,公共或付费卫星传输网络、以及公共或付费有线网络和/或顶级或互联网服务提供商。广域网210可以根据与广播电视服务网络相关联的一个或多个电信协议的组合来操作。电信协议可以包括专有方面并且/或者可以包括标准化电信协议。标准化电信协议的示例包括dvb标准、atsc标准、isdb标准、dtmb标准、dmb标准、有线数据服务接口规范(docsis)标准、hbbtv标准、w3c标准和upnp标准。再次参考图2,内容提供商站点204a-204n表示可以发起多媒体内容的站点的示例。例如,内容提供商站点可以包括具有一个或多个工作室内容服务器的工作室,该工作室内容服务器被配置为向媒体分发引擎和/或数据库提供多媒体文件和/或流。数据库306可以包括被配置为存储数据的存储设备,包括例如多媒体内容和与其相关联的数据,包括例如描述性数据和可执行交互式应用程序。与多媒体内容相关联的数据可以根据已定义的数据格式来格式化,诸如,超文本标记语言(html)、动态html、xml和json,并且可以包括url和uri。媒体分发引擎208a-208n可以被配置为经由广域网210分发数字媒体内容。例如,媒体分发引擎208a-208n可以包括在一个或多个广播站、有线电视提供商站点、卫星电视提供商站点、基于互联网的电视提供商站点和/或所谓的流媒体服务站点处。媒体分发引擎208a-208n可以被配置为接收数据,包括例如多媒体内容、交互式应用程序和消息,并且通过广域网210将数据分发到计算设备202a-202n。图4是示出可以实现本公开的一种或多种技术的媒体分发引擎的示例的框图。媒体分发引擎400可以被配置为接收数据并输出表示数据的信号,以便通过通信网络(例如,广域网210)进行分发。例如,媒体分发引擎400可以被配置为接收数字媒体内容并输出一个或多个数据流。数据流通常可以指封装在一个或多个数据包集中的数据。如图4所示,媒体分发引擎400包括中央处理单元402、系统存储器404、系统接口412、媒体呈现描述发生器414、分段发生器416、传输/网络数据包发生器418和网络接口420。中央处理单元402、系统存储器404、系统接口412、媒体呈现发生器414、分段发生器416、传输/网络数据包发生器418和网络接口420中的每一个可以互连(物理地、通信地和/或可操作地)用于部件间的通信,并且可以实现为各种合适的电路中的任一种,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。应当注意,虽然媒体分发引擎400被示为具有不同的功能块,但是此类图示是出于描述的目的,并且不将媒体分发引擎400限制到特定的硬件构架。可使用硬件、固件和/或软件具体实施的任何组合来实现媒体分发引擎400的功能。中央处理单元402、系统存储器404、系统接口412和网络接口420中的每一个可以类似于上述中央处理单元302、系统存储器304、系统接口312和网络接口324。cpu402可以被配置为实现用于在媒体分发引擎400中执行的功能和/或处理指令。系统接口412可以被配置为启用媒体分发引擎400的部件之间的通信。网络接口420可以被配置为使媒体分发引擎400能够经由局域网和/或广域网发送和接收数据。系统存储器404可以被配置为存储可以在操作期间由媒体分发引擎400使用的信息。应当注意,系统存储器404可以包括在部件封装器402、传输/网络数据包发生器404、链路层数据包发生器406以及帧构建器和波形发生器408中的每一个内包括的各个存储器元件。例如,系统存储器404可以包括一个或多个缓冲器(例如,先进先出(fifo)缓冲器),其被配置为存储数据以供媒体分发引擎400的部件处理。如图4所示,系统存储器包括操作系统406、媒体内容408和服务器应用程序410。操作系统406可以被配置为促进应用程序与cpu402以及媒体分发引擎400的其他硬件部件的交互。媒体内容408可以包括形成媒体呈现的数据(例如,视频部件、音频部件、子标题部件等)。媒体呈现发生器414可以被配置为接收一个或多个部件并基于dash生成媒体呈现。此外,媒体呈现发生器414可以被配置为生成媒体呈现描述片段。分段发生器416可以被配置为接收媒体部件并生成一个或多个分段以包括在媒体呈现中。传输/网络数据包发生器418可以被配置为接收传输数据包并将传输数据包封装到对应的传输层数据包(例如,udp、传输控制协议(tcp)等)和网络层数据包(例如,ipv4、ipv6、压缩的ip数据包等)。再次参考图4,系统存储器404包括服务器应用程序410。如上所述,websocket协议通过建立双向套接字实现逻辑客户端与逻辑服务器之间的双向通信。服务器应用程序410可以包括可以使媒体分发引擎400的cpu402执行与websocket协议相关联的特定功能的指令。图5是示出根据本公开的一种或多种技术的通信流的示例的概念图。图5示出了用于在全双工websocket会话上承载mpeg-dash媒体呈现的消息流的示例。如上所述,在w16232中为信令推送指令和推送确认定义的消息可能不太理想。计算设备300和媒体分发引擎400可以被配置为根据本文描述的技术交换消息。在图5所示的示例中,在502处,浏览器应用程序310将mpd请求发送到服务器应用程序410。在一些示例中,浏览器应用程序310可以被称为客户端或http客户端或dash客户端。参考表3,w16232未能为表3中所提供的自变量定义规范的json模式。图6a至图6b是示出媒体呈现文档请求消息的相应示例json模式的计算机程序列表。在一个示例中,浏览器应用程序310可以被配置为基于图6a至图6b中所示的示例模式向服务器应用程序410发送mpd请求。再次参考图5,在504处,服务器应用程序410向浏览器应用程序310发送mpd请求响应。参考表5,w16232未能为表5中所提供的自变量定义规范的json模式。此外,在表5中,参数状态包括w16232中的“number”类型。json数据类型“number”支持整数和浮点数。对于http状态代码,不需要浮点数。因此,在一些示例中,服务器应用程序410可以被配置为使用json数据类型“integer”发送包括参数状态的响应消息。应当注意,在这种情况下,json数据类型可以称为“integer”或“integer”。再次参考表5,w16232提供“mpd”作为具有“mpd”类型的参数。这并未完全指定mpd如何编码为json编码参数,因为它未定义使用的json数据类型。在一个示例中,对于参数“mpd”,服务器应用程序410可以使用具有基于以下示例要求之一的编码的“string”的json数据类型:在删除所有出现的换行符(0×0a)并且所有出现的双引号(0×22)都替换为单引号(0×27)之后,服务器返回的媒体呈现描述(mpd)数据应包含在json串中。or=或者在删除所有换行符(0×0a)或转义编码后,服务器返回的媒体呈现描述(mpd)数据应包含在json串中。or=或者应用转义编码之后,服务器返回的媒体呈现描述(mpd)数据应包含在json串中。因此,在一个示例中,服务器应用程序410可以向浏览器应用程序310发送mpd请求响应,其中如表9中所提供的那样定义mpd请求响应的格式。表9此外,图7a至图7b是示出媒体呈现文档请求响应消息的相应示例模式的计算机程序列表。在一个示例中,服务器应用程序410可以被配置为基于图7a至图7b中所示的示例模式向浏览器应用程序310发送mpd请求响应。再次参考图5,在506处,浏览器应用程序310向服务器应用程序410发送分段请求。参考表4,w16232未能为表4中所提供的自变量定义规范的json模式。图8a至图8b是示出分段请求消息的相应示例json模式的计算机程序列表。在一个示例中,浏览器应用程序310可以被配置为基于图8a至图8b中所示的示例模式向服务器应用程序410发送分段请求。再次参考图5,在508处,服务器应用程序410向浏览器应用程序310发送分段请求响应。参考表6,w16232包括“segment”作为具有类型“segment”的参数。这并未完全指定分段如何编码为json编码参数,因为它未定义使用的json数据类型。在一个示例中,服务器应用程序410可以被配置为发送分段请求响应,其中参数“segment”并非所提供的自变量。在一个示例中,服务器应用程序410可以被配置为在包括“push_ack”、“headers”、“status”的json编码参数之后直接作为二进制数据发送segment数据而不进行json编码。图9a至图9b是示出分段请求响应消息的相应示例模式的计算机程序列表。如图9a至图9b所示,示例模式不包括参数“segment”。应当注意,在图9a至图9b所示的每个示例中,状态可以具有整数数据类型。在一个示例中,服务器应用程序410可以被配置为基于图9a至图9b中所示的示例模式向浏览器应用程序310发送分段请求响应。在另一个示例中,服务器应用程序410可以被配置为将“segment”参数作为json数据发送,该分段参数可以基于表10中提供的描述,其可以替换表6中的对应条目。表10图9c至图9d是示出分段请求响应消息的相应示例模式的计算机程序列表。如图9c至图9d所示,示例模式确实包括参数“segment”。应当注意,在图9c至图9d所示的每个示例中,状态可以具有整数数据类型。在一个示例中,服务器应用程序410可以被配置为基于图9c至图9d中所示的示例模式向浏览器应用程序310发送分段请求响应。在一个示例中,图9c至图9d中的模式可以与表10一起使用。再次参考图5,会话可以由浏览器应用程序310向服务器应用程序410发送取消请求(510)或由服务器应用程序410向浏览器应用程序发送资源更改通知来终止(512)。参考表8,w16232未能为表8中所提供的自变量定义规范的json模式。图10a至图10b是示出取消请求消息的相应示例json模式的计算机程序列表。在一个示例中,浏览器应用程序310可以被配置为基于图10a至图10b中所示的示例模式向服务器应用程序410发送取消请求消息。参考表7,w16232未能为表7中所提供的自变量定义规范的json模式。图11a至图11b是示出资源更改通知消息的相应示例模式的计算机程序列表。在一个示例中,服务器应用程序410可以被配置为基于图11a至图11b中所示的示例模式向浏览器应用程序310发送取消请求消息。如表7所示,包含头参数可以是任选的。在一个示例中,如果end_of_stream消息的实例中不包括头参数,则ext_length应该(或者在某些例子中应该)在dash子协议帧中被设置为0,并且在ext_length字段之后不应该存在空的json参数编码。应当注意,在不存在headers参数的情况下,包括空的json串数据,其中附加的所需填充到4字节边界是浪费带宽并且需要不必要的处理。以这种方式,计算设备300和媒体分发引擎400可以被配置为根据本文描述的技术交换消息。如上所述,在w16232中,abnf形式的pushtype格式如下:push_type=push_type_name[ows“;”owspush_params]push_type_name=dquote<urn>dquotepush_params=push_param*(ows“;”owspush_param)push_param=1*vchar在某些情况下,push_param可能与json保留字符冲突。例如,vchar包含字符dquote(")。json使用dquote作为保留字符。在某些情况下,将pushdirective作为json属性发信号通知,可能需要进行复杂的解析。在一个示例中,可以通过一些简单的改变来定义push_param的语法,以便不干扰json编码。在一个示例中,浏览器应用程序410和服务器应用程序510可以被配置为使得如果push_param包括dquote,则dquote将用前面的'\'(即%×5c)进行转义编码。在另一个处理上面提到的双引号的例子中,可以对w16232进行更改:在“3.2公约”节中添加以下内容:ppchar=%×21/%×23-7e用ppchar替换vchar的出现(在6.1.2pushtype、6.1.5urllist、6.1.6urltemplate和6.1.7faststartparams节中)在6.1.5(url模板)中,使用'(单引号,即%×27)更改两次出现的dquote。在表2中(faststartparams的有效属性)更改dquote的出现次数为'(单引号,即%×27)和"与'(单引号,即%×27)的出现次数上面的更改使用单引号而不是双引号字符。为此,定义ppchar以排除dquote字符(%×22)。应当注意,在w16232中,以下subprotocol-ldentifier用于websocket子协议。子协议标识符:“mpeg-dash”在一些示例中,浏览器应用程序410和服务器应用程序510可以被配置为通过在子协议标识符中包括版本和/或年份来提供将来的可扩展性。在一个示例中,基于标签的子协议标识符可以定义如下:子协议标识符:“tag:mpeg.chiariglione.org-dash,2016:23009-6”在一个示例中,基于urn的子协议标识符可以定义如下:子协议标识符:“urn:mpeg:dash:fdh:2016”or=或者子协议标识符:“urn:mpeg:dash:fdh:2016:23009-6”在一个示例中,子协议标识符和子协议通用名称可以定义如下:子协议标识符:“2016.fdh.dash.mpeg.chiariglione.org”子协议通用名称:“mpeg-dash-fdh-23009-6”以这种方式,计算设备300和媒体分发引擎400可以被配置为根据本文描述的技术交换消息。在一个或多个示例中,所描述的功能可以通过硬件、软件、固件或其任何组合来实现。如果以软件实现,则可将功能作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质上传输,并且由基于硬件的处理单元执行。计算机可读介质可包括对应于有形介质诸如数据存储介质的计算机可读存储介质,或者包括例如根据通信协议促进计算机程序从某个地方传输到另一个地方的任何介质的传播介质。这样,计算机可读介质通常可对应于:(1)非暂态的有形计算机可读存储介质,或者(2)通信介质诸如信号或载波。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。以举例而非限制的方式,此类计算机可读存储介质可包括ram、rom、eeprom、cd-rom或其他光盘存储设备、磁盘存储设备或其他磁存储设备、闪存,或者可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其他介质。而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(dsl)或无线技术诸如红外线、无线电和微波从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术诸如红外线、无线电和微波都包含在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,而是针对非暂态有形存储介质。如本文所用,磁盘和光盘包括压缩光盘(cd)、激光盘、光学光盘、数字通用光盘(dvd)、软磁盘及blu-ray光盘,其中磁盘通常以磁性方式复制数据,而光盘则利用激光以光学方式复制数据。上述的组合也应该包括在计算机可读介质的范围内。可以由一个或多个处理器诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其他等效集成或离散逻辑电路执行指令。因此,如本文所使用的术语“处理器”可以指任何前述结构或适用于实现本文所描述的技术的任何其他结构。此外,在一些方面中,可以在被配置用于编码和解码的专用硬件和/或软件模块内提供本文描述的功能,或者将其结合到组合编解码器中。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。本公开的技术可以在各种设备或装置包括无线手机、集成电路(ic)或一组ic(例如,芯片组)中实现。在本公开中描述了各种部件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,可以将各种单元组合在编解码器硬件单元中,或者通过互操作硬件单元包括如上所述的一个或多个处理器的集合,结合合适的软件和/或固件来提供各种单元。此外,每个上述实施方案中所使用的基站设备和终端设备(视频解码器和视频编码器)的每个功能块或各种特征可通过电路(通常为一个集成电路或多个集成电路)实现或执行。被设计为执行本说明书中所述的功能的电路可包括通用处理器、数字信号处理器(dsp)、专用或通用集成电路(asic)、现场可编程门阵列(fpga),或其他可编程逻辑设备、分立栅极或晶体管逻辑器,或分立硬件部件,或它们的组合。通用处理器可为微处理器,或另选地,该处理器可为常规处理器、控制器、微控制器或状态机。通用处理器或上述每种电路可由数字电路进行配置,或可由模拟电路进行配置。此外,当由于半导体技术的进步而出现制成取代当前集成电路的集成电路的技术时,也能够使用通过该技术生产的集成电路。已经描述了各种示例。这些示例和其他示例在以下权利要求的范围内。本申请涉及2016年10月13日提交的美国临时专利申请no.62/408,008,并且要求该美国临时专利申请的优先权,该美国临时专利申请据此全文以引用方式并入本文。当前第1页12