2012-01-23 21 views
5

52fps'de akan RGB görüntülerin akışı dışında bir video dosyası oluşturmak istiyorum. Kullanmak için oldukça kullanışlı opencv api'yi buldum (cv :: VideoWriter). Sorun şu ki, üretilen avi'yi sadece VLC ile çalabiliyorum; hangi video oynatan ama bağırır:cv :: VideoWriter okunaksız video verir

[0x28307b0] xcb_xv generic error: no available XVideo adaptor 

(aynı bilgisayarda) Başka video oynatıcı okumak ve videoyu oynatmak mümkün değildir. Her şey yolunda kaydedilirken: Çıktının, çerçevenin boyutu, video kod çözücüsü, fps, vs ... hatası hakkında bilgi alıyorum.

Output #0, avi, to '01-23-12_15-24-51.avi': 
Stream #0.0: Video: flv, yuv420p, 500x242, q=2-31, 7744 kb/s, 90k tbn, 52tbc 

OpenCv yalnızca video kapsayıcı olarak avi destekler gibi ben değiştirebilecek tek şey video codec denedim (FOURCC kodu) FLV1, DivX, DIV3 ancak bunların hiçbiri düzgün çalışır.

Bu videoyu farklı bilgisayarlardaki herhangi bir video oynatıcıyla oynatmak istiyorum. Nasıl çalıştırabilirim? VideoWriter doğru seçim mi?

Herhangi bir öneri çok hoş geldiniz.

Teşekkürler. Daha eski, daha basit FOURCC deneyebilirsiniz,

int videoType = (int)cap.get(CV_CAP_PROP_FORMAT); 

VideoWriter vout; 
vout.open(videofile + "_out.avi", videoType, 30, imgSize); 

Veya: Eğer görüntüler için bir video kaynağı varsa

+0

52 fps'de OpenCV'nin yapabileceklerinin sınırlarını zorluyor olabilirsiniz. Önce 30 fps ile deneyeceğim ve diğer video oynatıcıların buna nasıl tepki verdiğini göreceğim. – karlphillip

+0

OpenCV, düşük düzeyli video ile ilgili her şeyi yapmak için FFmpeg'e güveniyor; Eminim ffmpeg, 52 fps'nin ötesine geçebilir. Her neyse, denediğim öneri için teşekkürler ama işe yaramıyor. Video dosyasını oluştururken – sciarp

+0

farklı bir codec (FOURCC) deneyin. Basit bir, bir MPEG2 veya benzeri bir şey seçin – Sam

cevap

1

, çıkış için aynı codec'i kullanmak iyi bir fikir olacaktır. Ya da sadece Windows üzerinde çalıştırmak istiyorsanız Microsoft'a özgü.