GSTREAMER,如何使用Android上的C播放UDP流?
我正在尝试使用Android上的GSTREAMER播放UDP流。 (我已经使用了此官方GStreamer的教程)。我可以播放RTSP和HTTPS流,但是当我通过UDP URI(像这样: udp://@238.0.0.1:1234
)时,什么都不会发生(有黑屏幕)。在日志中,我有:从element uredecodebin1收到的错误:您的gstreamer安装缺少插件。
我找到了一些文档在这里关于安装插件,但我不明白该怎么做。
这是我使用的代码的部分:
data->context = g_main_context_new ();
g_main_context_push_thread_default (data->context);
/* Build pipeline */
data->pipeline = gst_parse_launch ("playbin", &error);
if (error) {
gchar *message =
g_strdup_printf ("Unable to build pipeline: %s", error->message);
g_clear_error (&error);
set_ui_message (message, data);
g_free (message);
return NULL;
}
第二个:
/* Set playbin2's URI */
void gst_native_set_uri (JNIEnv * env, jobject thiz, jstring uri)
{
CustomData *data = GET_CUSTOM_DATA (env, thiz, custom_data_field_id);
if (!data || !data->pipeline)
return;
const gchar *char_uri = (*env)->GetStringUTFChars (env, uri, NULL);
GST_DEBUG ("Setting URI to %s", char_uri);
if (data->target_state >= GST_STATE_READY)
gst_element_set_state (data->pipeline, GST_STATE_READY);
g_object_set (data->pipeline, "uri", char_uri, NULL);
(*env)->ReleaseStringUTFChars (env, uri, char_uri);
data->duration = GST_CLOCK_TIME_NONE;
data->is_live |=
(gst_element_set_state (data->pipeline,
data->target_state) == GST_STATE_CHANGE_NO_PREROLL);
}
完整代码是在这里
这是我在C和JNI中所做的第一件事,所以我将感谢工作代码片段。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我无意中找到了解决方案。我刚刚修改了
Android.mk
文件,将$(GSTREAMER_PLUGINS_CODECS_RESTRICTED)
添加到GSTREAMER_PLUGINS
行中。现在 udp 流工作正常!Ok, I've accidentaly found the solution. I just modified my
Android.mk
file by adding$(GSTREAMER_PLUGINS_CODECS_RESTRICTED)
intoGSTREAMER_PLUGINS
line. Now udp streams works fine!