MSDC 4.3 接口规范(7)
4.4 流媒体服务管理
以下部分定义了一组调用来管理流服务的启动/停止顺序。
4.4.1 服务状态
图 4-18 显示了应用程序可见的流服务状态。 根据 MSDC 采取的操作,服务可能会从一种状态移动到另一种状态。
- STOPPED– 服务的默认状态。 该服务可供用户使用,但尚未启动。
– 如果用户停止已经启动或停止的服务,它会进入停止状态。 发生这种情况时,应用程序会收到 streamingServiceStopped() 通知(请参阅第 4.4.3 节)。 - STARTED– 当设备上提供流数据(如果网络上可用)时,服务将移至已启动。 当 Streaming 服务状态变为 STARTED 时,应用程序会收到 streamingServiceStarted() 通知(参见第 4.4.2 节)。
- STALLED – 如果处于 STARTED 状态的服务存在导致流数据对 DASH 客户端不可用的临时问题,则 MSDC 将服务移至 STALLED。 当流服务状态变为 STALLED 时,streamingServiceStalled() 会通知应用程序(参见第 4.4.5.1 节)。
– STALLED 预计是一个临时状态。 一旦 MSDC 可以从网络获取流数据,它就会将其移至 STARTED。 或者,应用程序可以选择使用 streamingServiceStopped() 将服务移动到 STOPPED(参见第 4.4.3 节)。
注意:图 4-18 中没有显示两个临时中间状态:
- START_REQUESTED — 当应用程序请求启动服务但尚未收到 streamingServiceStarted() 通知时(参见第 4.4.2 和 4.4.4 节)。
- STOP_REQUESTED – 当应用程序请求停止服务但尚未收到 streamingServiceStopped() 通知时(参见第 4.4.3 和 4.4.4 节)
4.4.2 启动流媒体服务
4.4.2.1 接口函数
void startStreamingService (int serviceId);
void streamingServiceStarted (int serviceId);
void streamingServiceError (int errorCode, String message, int serviceId)
4.4.2.2 先决条件
流媒体模块连接初始化
4.4.2.3 描述
要启动流服务,应用程序应使用 startStreamingService()。 通过这个调用,应用程序给出了要启动的服务的服务 ID。
如果启动 Streaming 服务成功,MSDC API 会以 streamingServiceStarted() 响应,以指示服务已移至 STARTED 状态。
4.4.2.4 调用流程
4.4.2.4.1 启动流媒体服务
如果应用想要启动流媒体服务,它必须使用 startStreamingService() 发送请求。
该函数提供需要启动的 Streaming 服务的服务 ID。 应用程序可以从 getStreamingServiceList() 获取服务 ID(参见第 4.4.8.2 节)。
服务成功启动后,MSDC API 将 streamingServiceStarted() 发送到应用程序并将服务移动到 STARTED 状态。
4.4.2.4.2 服务已经处于STARTED状态
如果应用程序尝试启动已处于 STARTED 状态的服务,MSDC API 会以 streamingServiceError() 和错误代码 ERROR_S_UNABLE_TO_INITIALIZE 进行响应(参见图 4-16)。
4.4.2.4.3 达到并发服务限制
如果已在运行允许的最大并发服务数,则 MSDC API 使用 streamingServiceError() 和错误代码 ERROR_S_CONCURRENT_SERVICE_LIMIT_REACHED 响应应用程序。
4.4.2.4.4 无法启动流媒体服务
如果 MSDC 由于某种原因无法启动流服务,MSDC API 会使用 streamingServiceError() 和错误代码 ERROR_S_UNABLE_TO_START_SERVICE 响应应用程序。