public async Task <string> GetMediaInfoAsync(string mediaAddress, string userName, string password) { var messageElement = new TextMessageEncodingBindingElement { MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None) }; HttpTransportBindingElement httpBinding = new HttpTransportBindingElement { MaxReceivedMessageSize = 1024 * 1024 * 1024 }; CustomBinding bind = new CustomBinding(messageElement, httpBinding); //绑定服务地址 EndpointAddress serviceAddress = new EndpointAddress(mediaAddress); MediaClient mediaClient = new MediaClient(bind, serviceAddress); //给每个请求都添加认证信息 mediaClient.Endpoint.EndpointBehaviors.Add(new CustomEndpointBehavior(userName, password)); //不要少了下面这行,会报异常 var channel = mediaClient.ChannelFactory.CreateChannel(); //查看系统时间 var profilesResponse = await mediaClient.GetProfilesAsync(); foreach (var profile in profilesResponse.Profiles) { } var step = new StreamSetup { Transport = new Transport() { Protocol = TransportProtocol.RTSP }, Stream = StreamType.RTPUnicast }; var streamUri = await mediaClient.GetStreamUriAsync(step, profilesResponse.Profiles[0].token); return(streamUri.Uri); }
public static async Task GetMediaInfoAsync(string address) { var messageElement = new TextMessageEncodingBindingElement { MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None) }; HttpTransportBindingElement httpBinding = new HttpTransportBindingElement(); httpBinding.MaxReceivedMessageSize = 1024 * 1024 * 1024; //httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest; CustomBinding bind = new CustomBinding(messageElement, httpBinding); //绑定服务地址 EndpointAddress serviceAddress = new EndpointAddress(address); MediaClient mediaClient = new MediaClient(bind, serviceAddress); //给每个请求都添加认证信息 mediaClient.Endpoint.EndpointBehaviors.Add(new CustomEndpointBehavior()); //不要少了下面这行,会报异常 var channel = mediaClient.ChannelFactory.CreateChannel(); //查看系统时间 var profilesResponse = await mediaClient.GetProfilesAsync(); foreach (var profile in profilesResponse.Profiles) { var step = new StreamSetup { Transport = new Transport() { Protocol = TransportProtocol.RTSP }, Stream = StreamType.RTPUnicast }; var streamUri = await mediaClient.GetStreamUriAsync(step, profile.token); Console.WriteLine(streamUri.Uri); } }