x64 x32 visual versión studio microsoft español descargar visual-c++ gstreamer

visual-c++ - x32 - visual studio 2010 c++ versión express



Gstreamer con visual C++ express 2010-tutorial 1 (2)

Creo que estás usando gstreamer 1.0, si no estoy equivocado, intenta usar

"playbin" en lugar de "palybin2"

"playbin2" se renombra a "playbin" de gstreamer 1.0

Soy nuevo en Gstreamer, y tengo problemas cuando compilo el tutorial 1 de Gstreamer. Estoy usando Windows 7 de 64 bits con visual c ++ express 2010 y Gstreamer SDK 2012.11 de 32 bits ( descargado desde aquí ). Aquí está el código:

#include "stdafx.h" #include <gst/gst.h> int main(int argc, char *argv[]) { GstElement *pipeline; GstBus *bus; GstMessage *msg; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Build the pipeline */ pipeline = gst_parse_launch ("playbin2 uri=file://E:/test_1.MOV", NULL); /* Start playing */ gst_element_set_state (pipeline, GST_STATE_PLAYING); /* Wait until error or EOS */ bus = gst_element_get_bus (pipeline); msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); /* Free resources */ if (msg != NULL) gst_message_unref (msg); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); return 0; }

Primer error:

error C2664: ''gst_bus_timed_pop_filtered'' : cannot convert parameter 3 from ''int'' to ''GstMessageType''

Así que acabo de eliminar GST_MESSAGE_ERROR del código. Entonces la línea es ahora:

msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_EOS);

Tuve el mismo problema con Ubuntu. Pero después de eso, en Ubuntu, podría reproducir un video.

Segundo error: pero con Windows, la compilación es buena, pero cuando intento ejecutarla, tengo esos errores:

GStreamer-CRITICAL **: gst_element_set_state: assertion ''GST_IS_ELEMENT <element>'' failed GStreamer-CRITICAL **: gst_element_get_bus: assertion ''GST_IS_ELEMENT <element>'' failed GStreamer-CRITICAL **: gst_bus_timed_pop_filtered: assertion ''GST_IS_BUS <bus>'' failed GStreamer-CRITICAL **: gst_object_unref: assertion ''object=!NULL'' failed GStreamer-CRITICAL **: gst_element_set_state: assertion ''GST_IS_ELEMENT <element>'' failed GStreamer-CRITICAL **: gst_object_unref: assertion ''object=!NULL'' failed

Realmente no entiendo por qué funciona con ubuntu y no con Windows. Y realmente no sé cómo resolver este problema. Usted me podría ayudar por favor ?

Saludos,


l Primer error

Probablemente el código se compila como C ++, que es un poco más estricto en enum cast. Intente reemplazar: GST_MESSAGE_ERROR | GST_MESSAGE_EOS GST_MESSAGE_ERROR | GST_MESSAGE_EOS con (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS)

Segundo error

Hay una gran probabilidad de que la línea:

pipeline = gst_parse_launch ("playbin2 uri=file://E:/test_1.MOV", NULL);

devuelve NULL, y el resto de errores son el resultado de esto. ¿Por qué podría devolver NULL? Hay muchas razones. ¿Tal vez no ha instalado el complemento con "playbin2"? Prueba esto:

  • Pase un puntero a la estructura GError como segundo parámetro a gst_parse_launch (tiene un campo de message que puede darle alguna pista)
  • Pase --gst-debug-level=4 o incluso más alto como un parámetro de línea de comandos al ejecutar su programa. Verá mucha información en la salida de la consola, el motivo de la falla estará en algún lugar allí.