2012-01-23 23 views
5

Quiero producir un archivo de video de una secuencia de imágenes RGB que fluye a 52 fps. Encontré la aplicación ap de opencv bastante útil para usar (cv :: VideoWriter). El problema es que puedo reproducir el avi producido solo con VLC; el cual juega el vídeo, pero grita:cv :: VideoWriter produce un video ilegible

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

Cualquier otro reproductor de vídeo (en el mismo equipo) no es capaz de leer y reproducir el vídeo. Durante la grabación, todo se ve bien: obtengo información sobre la salida, sobre el tamaño del marco, el códec de video, los fps, etc. ... no hay error.

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 

Como OPENCV sólo es compatible con AVI como contenedor de vídeo, la única cosa que podría cambiar es el códec de vídeo, he intentado (código FOURCC) FLV1, DIVX, DIV3 pero ninguno de ellos funciona correctamente.

Me gustaría reproducir este video con cualquier reproductor de video en diferentes computadoras. ¿Cómo puedo hacer que funcione? ¿es VideoWriter la elección correcta?

Cualquier sugerencia es muy bienvenida.

Gracias.

+0

Con 52 fps, puede que esté superando los límites de lo que OpenCV puede hacer. Primero probaría con 30 fps y vería cómo los otros jugadores de video responden a esto. – karlphillip

+0

OpenCV depende de FFmpeg para hacer todas las cosas relacionadas con el video de bajo nivel; Estoy bastante seguro de que ffmpeg puede ir más allá de 52 fps. De todos modos, gracias por la sugerencia que probé, pero no funciona. – sciarp

+0

intente con un códec diferente (FOURCC) al crear el archivo de video. Elija uno simple, un MPEG2 o algo así – Sam

Respuesta

1

Si usted tiene una fuente de vídeo para sus imágenes, sería una buena idea utilizar el mismo códec para la salida:

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

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

O bien, puede intentar una, FOURCC más simple mayores. O un específico de Microsoft, si desea ejecutarlo solo en Windows.

Cuestiones relacionadas