ILMRTSPResponseBuilder接口

此接口用于构建RTSP命令响应,该命令响应将由RTSP服务器发送到RTSP客户端。接口由铅RTSP Sink过滤器并传递给ILMRTSPServerMedia: HandleCommand方法,当从RTSP客户端接收到RTSP命令时。

方法解析和解释RTSP命令ILMRTSPCommandParser接口,并在该接口中构建响应。

接口属性:

类型

的名字

描述

ResponseCode

此属性指示响应代码。默认值是551(表示错误)。

因此,必须将此属性更改为200以表示成功。有关可能的RTSP响应的完整列表,请参见“RFC 2326 -实时流协议(RTSP)”。

ResponseString

将与ResponseCode一起发送到客户机的字符串。当您更新ResponseCode属性时,此属性将自动更新。

但是,您也可以在更改ResponseCode之后,自己用更有意义的字符串更新它。

ContentType

指示内容类型的字符串。默认值为空字符串。

该值将与“content - type:”前缀一起放在响应中,并告诉RTSP客户端内容的形式。

您应该在需要内容的命令中设置该参数,比如DESCRIBE。最常见的内容类型是“application/sdp”,这是大多数RTSP客户端对DESCRIBE命令的期望。

接口方法:

AddHeaderField(BSTR fieldName, BSTR fieldValue)

参数

字段名

表示字段名的字符串。

fieldValue

表示字段值的字符串。

描述

这个方法将添加一个报头字段。报头字段具有该格式

<头字段>:<头的值>

例如,可以使用下面的调用来添加sessionID字段:

hr = pBuilder->AddHeaderField(L“会话”,我“MySessionString;超时= 70”);

在此之后,RTSP响应将在报头中包含以下信息:

会话:MySessionString;超时= 80

返回

如果成功,S_OK,如果发生错误,< 0。

常见错误码

E_OUTOFMEMORY

内存不足

E_POINTER

至少有一个参数为NULL

添加内容(BSTR内容)

参数

内容

指示一行或多行内容的字符串。

描述

此方法将添加一行或多行内容。行将结束被添加到任何现有内容中,以将以前的内容与正在添加的内容分开。

所添加的内容应该与ContentType属性所指示的类型相匹配。

例如,下面的代码将设置内容类型,添加几行内容并调用ILMRTSPServerSession: HandleCommand完成对DESCRIBE命令的响应:

//在这个例子中,CRTSPServerFolderMedia正在实现ILMRTSPServerMedia//类有一个接收器接口,用于获取描述信息,声明如下:// ILMRTSPServerSession * m_pdescripbesession;HRESULT CRTSPServerFolderMedia::HandleDescribeCommand(ILMRTSPServer *pServer, ILMRTSPCommandParser *pParser, ILMRTSPResponseBuilder *pBuilder, DWORD_PTR socket)/* UpdateDescribeSessionFilename是另一个成员,用指定的源文件更新包含m_pdescripbesession过滤器实例的图形pParser * /HRESULT hr = updatedescripbesessionfilename (pParser);如果(失败(人力资源)//如果updatedescripbesessionfilename失败,则该文件不存在或不支持//所以只需将responseccode设置为适当的错误码并返回pBuilder-> put_responseccode (hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) ?404: 415);返回人力资源;//我可以处理文件,所以设置ContentType为application/sdp和//添加过滤器不知道的内容值hr = pBuilder->put_ContentType(L“应用程序/ sdp”);如果(成功(人力资源)hr = AddContent(pBuilder, L .“v = 0”);如果(成功(人力资源)hr = AddContent(pBuilder, L ."o=- 0 0 IN IP4 127.0.0.1");如果(成功(人力资源)hr = AddContent(pBuilder, L .“s =测试会话”);//在这种情况下,我正在播放整个文件从开始(位置0sec)如果(成功(人力资源)hr = AddContent(pBuilder, L .“=范围:《不扩散核武器条约》= 0 -”);//让ILMRTSPServerSession::HandleCommand填充描述媒体流的其他内容值如果(成功(人力资源)hr = m_pdescripbesession ->HandleCommand(pServer, pParser, pBuilder, socket);如果(成功(人力资源)hr = pBuilder-> put_responseccode (200);/ /成功!其他的pBuilder - > RemoveAllContent ();返回人力资源;

返回

如果成功,S_OK,如果发生错误,< 0。

常见错误码

E_OUTOFMEMORY

内存不足

HRESULT RemoveAllContent ()

描述

此方法删除之前使用AddContent添加的所有内容。

返回

S_OK(函数从不失败)。

LEADTOOLS过滤C API帮助
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2021领德科技有限公司版权所有。