Ich habe eine benutzerdefinierte GStreamer-Pipeline erstellt, die ich zum Abspielen von RTSP-Streams verwenden werde. Zur gleichen Zeit möchte ich eine neue GstPlayer
erstellen, um diese Pipeline zu verwenden. Das Problem ist, dass es keine Möglichkeit gibt, die Pipeline GstPlayer
zu setzen (die einzige verwandte Methode ist gst_player_get_pipeline()
. Ich verstehe nicht, wie es keine Möglichkeit gibt, eine Pipeline für einen GstPlayer anzupassen. Das scheint so Basisfunktionalität, so muss ich etwas fehltWie setze ich eine GstPlayer-Pipeline?
Meine Pipeline.
GstElement *pipeline, *source, *filter, *sink;
// Create pipeline elements
pipeline = gst_pipeline_new ("vdi-pipeline");
source = gst_element_factory_make ("rtspsrc", "vdi-source");
filter = gst_element_factory_make ("decodebin", "vdi-filter");
sink = gst_element_factory_make ("appsink", "vdi-sink");
if (!source || !filter || !sink)
{
__android_log_print (ANDROID_LOG_ERROR, "Error", "A GstElement could not be created. Exiting.");
return;
}
// Add elements to pipeline
gst_bin_add_many (GST_BIN (pipeline), source, filter, sink, NULL);
// Link elements together
if (!gst_element_link_many (source, filter, sink, NULL)) {
__android_log_print (ANDROID_LOG_ERROR, "Warning", "Failed to link elements!");
}
Ich sollte den Grund angegeben haben, brauche ich eine benutzerdefinierte Pipeline in der Frage. Ich versuche, einen Frame aus dem Live-Stream abzurufen, um ihn an anderer Stelle zu bearbeiten. Ich glaube, ich muss ein 'appsink'-Element als Senke in der Pipeline verwenden, dann, während das Video läuft, rufe 'gst_app_sink_pull_sample (appsink)' auf, um den aktuellen Frame zu bekommen, den ich dann verarbeiten kann (in meinem Fall will ich nur) um eine Bitmap zu erstellen). – MarkyDD
@MarkyDD Update prüfen – nayana