在Android gstreamer中使用多个进程!!

时间:2014-06-19 17:12:13

标签: android c stream gstreamer pipeline

我正在阅读gstreamer的Android教程。我想从中制作一个简单的管道 一个Android手机到另一个,like this。 我读过这些问题:loading same gstreamer elements multiple times in a process, 和JNI - multi threads,但他们没有帮我解决当前的问题。

我想制作两个进程来发送Android手机 并接收音频!

在Linux上我会使用fork(),如下所示:

p = fork();
if p==0{
    //pipeline1
}
else {
   //pipeline2
}

但这不适用于Android,我收到此错误:

{
g_source_set_callback: assertion `source != NULL' failed
Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1)
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用GStreamer,您可以在同一过程中运行2个管道,而不必担心线程,因为它已在内部处理。

void
start (GError **error) {
  GstElement *pipe1;
  GstElement *pipe2;

  *error = NULL;
  pipe1 = gst_parse_launch ("src ! enc ! mux ! sink", error);
  if (*error != NULL)
    return;
  pipe2 = gst_parse_launch ("src ! demux ! dec ! sink", error);
  if (*error != NULL)
    return;
  gst_element_set_state (pipe1, GST_STATE_PLAYING);
  gst_element_set_state (pipe2, GST_STATE_PLAYING);
}