2012-07-24 44 views
8

OpenCV'den VideoCapture (ffmpeg desteği ile derlenmiştir) kullanarak bir IP kameranın H264 içeriğini yayınlıyorum.cv :: VideoCapture kod çözme hataları nasıl ele alınır?

Şimdiye kadar şeyler Tamam çalışır ancak her seferinde bir süre içinde ben çözme hataları olsun (ffmpeg sanırım):

[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 

Bu mesajlar konsolda görünür. Bunları dinlemenin temiz bir yolu var mı? Glitchy çerçevelerin işlenmesini atlamak isterim.

Her türlü ipucu/ipucu?

+0

(güncelleme Mat zaman Muteksleri ve kilit bellek kullanmak gibi bazı iyileştirmeler gerekir) benim test kodunu bulabilirsiniz .... herhangi bir çözüm??? – tod

cevap

3

.

i opencv_ffmpeg.dll (i OpenCV 3.1 ile kullanmak opencv_ffmpeg310.dll için opencv_ffmpeg.dll değiştirildi En son güncellenen, ayrıca o, temel bir yakalama yaparak OpenCV 2.4.12

kullanılacak, aynı dll opencv_ffmpeg2412.dll değiştirildi kareler ve ekran sorunu olmadan başarılı oldu.Ama bazı görüntü işleme veya algılama yaparsanız hala aynı sorun, çerçeveler yakalama arasında gecikme neden olur

İkinci sorunu çözmek için sürekli olarak çerçeveleri yakalama ve genel bir Mat güncelleştirmek için bir iplik kullandım işlemek için:

here Eğer

i bilgileri (Benim kötü İngilizce için üzgünüm) yararlı olacağını umuyoruz aynı sorunla karşı karşıya

+0

Henüz denemedim, ancak hata iletilerinde ve kareleri atlatmaktan çok daha zarif görünüyor. –

+0

son zamanlarda benim yaklaşım onun blogunda [Mare] (http://study.marearts.com/2016/03/opencv-rtsp-receiving-test.html) tarafından açıkladı – sturkmen

0

Aynı sorunu yaşıyorum. Bana öyle geliyor ki sorun, akımı oluşturan kaynağın bir kod çözmekten daha yavaş olduğu gerçeğinden kaynaklanıyor. Muhtemelen kod çözme için sonsuz bir döngü okuma çerçevesine sahip olursunuz ve bunları çözmeniz, kaynağınızın size gönderebileceğinden daha hızlı olabilir.

Arabellek doluncaya kadar nasıl durup durmasını bekleyemiyorum .. Bir dosya kullanıyorum, kamera kaynağım bir dosya yazıyor ve kod çözme programımda çerçeveler okuyorum. Şimdiye kadar ben onları aynı problemi çözdüm ve izlediğim adımları açıklamaya çalışıyorum

+0

haklısın, sonsuz bir döngü geçirdim, ama problem için bir çözüm bulamadım. Opencv/ffmpeg'den konsol çıktısını düşünürken ve çerçeveler kullanarak sadece kod çözme hataları etrafında hacky çalışması yapılmadığı halde düşünürdüm, ama bunu uygulamak için etrafta hiçbir şey yapmadım ya da daha zarif bir çözüm bulmam için –

+0

ama bunun nasıl yapılacağı hakkında hiçbir fikrim yok ..:/ – Nacho