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);
        }
Пример #2
0
        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);
            }
        }