visual c++ विज़ुअल सी++ एक्सप्रेस 2010-ट्यूटोरियल 1 के साथ जीस्ट्रीमर




visual-c++ gstreamer (2)

मैं Gstreamer के लिए नया हूँ, और जब मैं Gstreamer के ट्यूटोरियल 1 को संकलित करता हूं, तो मुझे समस्या है मैं विज़ुअल सी ++ एक्सप्रेस 2010, और जीस्ट्रीमर एसडीके 2012.11 32 बिट्स ( यहां से डाउनलोड किया गया ) के साथ विंडोज 7 64 बिट का उपयोग कर रहा हूं। यहां कोड है:

#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;
}

पहली त्रुटि:

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

इसलिए मैंने कोड से GST_MESSAGE_ERROR को हटा दिया। तो अब रेखा है:

msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_EOS);

मेरे पास उबंटू के साथ एक ही समस्या थी लेकिन उसके बाद, उबंटू में, मैं एक वीडियो खेल सकता था।

दूसरी त्रुटि: लेकिन विंडोज के साथ, संकलन अच्छा है, लेकिन जब मैं इसे चलाने की कोशिश करता हूं, तो मुझे गलतियाँ होती हैं:

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

मुझे वाकई समझ में नहीं आ रहा है कि यह विंडोज़ के साथ उबुंटू के साथ काम क्यों करता है और मैं वास्तव में इस समस्या को हल करने के लिए नहीं जानता। क्या आप कृपया मेरी मदद कर सकते हैं ?

सादर,


पहली त्रुटि

संभवतः कोड को सी ++ के रूप में संकलित किया जाता है, जो कि एन्यूम डाटों पर थोड़ा अधिक सख्त होता है। बदलने की कोशिश करें: GST_MESSAGE_ERROR | GST_MESSAGE_EOS GST_MESSAGE_ERROR | GST_MESSAGE_EOS साथ (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS)

दूसरी त्रुटि

उच्च संभावना है, यह पंक्ति:

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

नल रिटर्न, और बाकी त्रुटियां इस का परिणाम हैं यह नल क्यों लौटा सकता है? इसके कई कारण हैं। शायद आपने "प्लेबिन 2" के साथ प्लगइन स्थापित नहीं किया है? इसे इस्तेमाल करे:

  • GError के दूसरे पैरामीटर के रूप में GError संरचना के लिए एक पॉइंटर पास करें (इसमें message फ़ील्ड है जो आपको कुछ संकेत दे सकता है)
  • पास --gst-debug-level=4 या उच्चतर जब कमांडलाइन पैरामीटर के रूप में आपके प्रोग्राम को चलाते समय आपको कंसोल आउटपुट पर कई सूचनाएं मिलेंगी, असफलता का कारण वहां कहीं होगा।

मुझे लगता है कि आप gstreamer 1.0 का उपयोग कर रहे हैं, अगर मैं गलत नहीं हूं तो उपयोग करने का प्रयास करें

"प्लेबिना 2" के बजाय "प्लेबिन"

"प्लेबिन 2" को gstreamer 1.0 से "प्लेबिन" नाम दिया गया है