2012-07-24 38 views
8

Tôi đang phát nội dung H264 từ camera IP bằng VideoCapture từ OpenCV (được biên dịch bằng hỗ trợ ffmpeg).Làm thế nào để đối phó với cv :: VideoCapture giải mã lỗi?

Vì vậy, điều nay làm việc ok, nhưng mỗi một lần trong một thời gian tôi nhận được lỗi giải mã (từ ffmpeg tôi đoán):

[h264 @ 0x103006400] mb_type 137 in I slice too large at 26 10 
[h264 @ 0x103006400] error while decoding MB 26 10 
[h264 @ 0x103006400] negative number of zero coeffs at 25 5 
[h264 @ 0x103006400] error while decoding MB 25 5 
[h264 @ 0x103006400] cbp too large (421) at 35 13 
[h264 @ 0x103006400] error while decoding MB 35 13 
[h264 @ 0x103006400] mb_type 121 in P slice too large at 20 3 
[h264 @ 0x103006400] error decoding MB 20 3 

Các thông điệp này hiển thị trong giao diện điều khiển. Có cách nào sạch sẽ để nghe những điều này không? Tôi muốn bỏ qua việc xử lý các khung hình không ổn định.

Bất kỳ gợi ý/mẹo nào?

+0

phải đối mặt với cùng một vấn đề .... bất kì giải pháp nào??? – tod

Trả lời

3

gần đây tôi đã giải quyết cùng một vấn đề và cố gắng giải thích các bước tôi đã làm theo.

tôi được cập nhật gần đây nhất opencv_ffmpeg.dll (i đổi tên opencv_ffmpeg.dll để opencv_ffmpeg310.dll để sử dụng với OpenCV 3.1, cũng đổi tên cùng opencv_ffmpeg2412.dll dll để sử dụng với OpenCV 2.4.12

bằng cách làm đó, một chụp cơ bản khung hình và hiển thị đã thành công mà không có vấn đề. nhưng vẫn còn cùng một vấn đề nếu tôi làm một số xử lý hình ảnh hoặc phát hiện gây ra sự chậm trễ giữa chụp khung hình. để xử lý.

here bạn có thể tìm thấy mã thử nghiệm của tôi (nó cần một số cải tiến như sử dụng mutex và bộ nhớ khóa khi cập nhật các Mat)

tôi hy vọng thông tin này sẽ có ích (xin lỗi vì anh nghèo của tôi)

+0

Tôi đã không cố gắng này được nêu ra, nhưng có vẻ thanh lịch hơn nhiều so với cố gắng để ống trong các thông báo lỗi và bỏ qua khung. –

+0

gần đây cách tiếp cận của tôi được giải thích bởi [Mare] (http://study.marearts.com/2016/03/opencv-rtsp-receiving-test.html) trên blog của anh ấy – sturkmen

0

Tôi gặp vấn đề tương tự. Dường như với tôi rằng vấn đề xuất phát từ thực tế là nguồn có nguồn gốc luồng là chậm hơn so với một giải mã. Có lẽ để giải mã bạn có một khung đọc vòng lặp vô tận và giải mã chúng, có thể nhanh hơn những gì mà nguồn của bạn có thể gửi cho bạn.

Tôi không biết cách dừng và chờ cho đến khi bộ đệm đầy. Tôi đang sử dụng một tệp, sao cho nguồn máy ảnh của tôi ghi tệp và tôi đọc khung từ nó trong chương trình giải mã của tôi. Cho đến nay tôi đã không thể đồng bộ hóa chúng

+0

bạn nói đúng, tôi đã có một vòng lặp vô tận, nhưng chưa tìm ra giải pháp cho vấn đề. Tôi đã suy nghĩ về piping trong giao diện điều khiển đầu ra từ opencv/ffmpeg và chỉ sử dụng khung khi không có lỗi giải mã đã gặp phải như hacky làm việc xung quanh, nhưng không có xung quanh để thực hiện điều đó hoặc tìm một giải pháp thanh lịch hơn –

+0

Tôi nghĩ như vậy, nhưng tôi không có ý tưởng về làm thế nào để làm điều này ..:/ – Nacho

Các vấn đề liên quan