2013-08-16 64 views
5

Tôi có một camera mạng HD mà tôi đang cố gắng để lấy khung qua rtsp và sử dụng đoạn mã sau:EMGU QueryFrame trả Image "sọc" trên RTSP

//in Form_Load 
Application.Idle += getNextFrame; 

Và Handler Sự kiện:

private void getNextFrame(object sender, EventArgs ags) 
{ 
     //where _imgCount is the total image Grabs 
     lbl_Count.Text = _imgCount++.ToString(); 
     // and ibLive is a Emgu ImageBox 
     ibLive.Image = capAxis.QueryFrame().Resize(640, 480, INTER.CV_INTER_AREA); 
} 

Khi tôi bắt đầu chương trình, nó sẽ lấy 20-40 khung trước khi "vệt" xuất hiện ở cuối màn hình. Nó luôn ở dưới cùng của hình ảnh, nhưng đôi khi nó chiếm một nửa màn hình.

enter image description here

Độ phân giải dòng là 1920x1080 và nó sử dụng mjpeg. Tôi đã thử chuyển sang h.264 nhưng có cùng kết quả.

Tôi đang sử dụng phiên bản Emgu x86-2.4.0.1717

Bất kỳ ý tưởng nào? Cảm ơn.

Trả lời

2

Tôi biết đây là câu hỏi cũ nhưng gần đây tôi đã gặp phải sự cố tương tự. Tôi khuyên bạn nên sử dụng thư viện phát trực tiếp khác. Ví dụ.

Nếu bạn thực sự cần phải sử dụng dòng EMGU sau đó tạo ra một hồ sơ suối với độ phân giải thấp hơn hoặc nén cao hơn. Tôi đặt nén thành 30 và sử dụng cùng độ phân giải sau đó cung cấp tên hồ sơ luồng trong url rtsp. (Giả sử bạn đang sử dụng máy ảnh Axis như tôi capAxis)

Capture cap = new Capture(@"rtsp://10.0.0.1/axis-media/media.amp?videocodec=h264&streamprofile=rtspstream"); 
1

Tôi gặp vấn đề tương tự như vậy và tôi đã tự giải quyết. Tôi đã sử dụng iSpy để biết url của Camera ONVIF Ip của tôi. Url của Máy ảnh IP của tôi là rtsp: //192.168.1.xxx: 554 // user = admin_password = tlJwpbo6_channel = 1_stream = 0.sdp? Real_stream Đối với luồng = 0, IP Cam của tôi đang chạy ở độ phân giải HD (1280 x 720) và độ phân giải đó tạo ra một kết quả tẻ nhạt của hình ảnh của tôi. Vì vậy, có hai tùy chọn của URL mà iSpy đã cung cấp và một tùy chọn khác chỉ khác trong luồng. Tôi đã thay đổi luồng = 1 cho độ phân giải thấp (352 x 288) và kết quả hình ảnh là tốt! Không có hình ảnh của tôi. Một cái gì đó mà tôi đã học được từ vấn đề này đã được sử dụng RTSP bạn phải sử dụng nó ở độ phân giải thấp. Độ phân giải cao sẽ làm cho kết quả hình ảnh không tốt. Hy vọng nó có thể giúp vấn đề của bạn.

Kính trọng, Alfonsus Dhani

1

Vào cuối chuỗi Capture thêm này "? Tcp"

Capture cap = new Capture(@"rtsp://10.0.0.1/axis-media/media.amp?videocodec=h264&streamprofile=rtspstream?tcp"); 

EDIT

Đây là mã của tôi, và có, nó hoạt động, tôi đang sử dụng DAHUA IP cam.

Capture cap = Capture(@"rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=01?tcp");