1

我试图弄清楚如何通过我自己的 UDP 打包系统发送流式音频数据,我意识到 Gstreamer 内置了一个非常方便的功能,但我真的相信我必须手动执行此操作才能使我的项目正常工作。

因此,即使我已经成功编写了自己的 TCP 流和 UDP 流,我基本上只需要知道如何使用 Gstreamer 管道并将其转换为微小的帧,以便我手动处理并通过 UDP 数据包发送(或流如何你曾经看过这种意识形态)。我怀疑它不是每次都将 Gstreamer 管道放入 UDP 数据包发送请求那么简单吗?

源是音频输入(或者我认为)

下面的代码没有显示 UDP 网络流,但它确实为有人向我展示了如何利用当前设置转换为某种可用的 UDP 数据包的字节流/二进制流提供了基础。

#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 ("alsasrc device=hw 0", 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;
}

编辑:我主要想使用我自己的加密方法(熵的 RSA 3096 位)或使用更强的加密方法,我不喜欢当前系统内置的内置加密方法。

4

2 回答 2

0

我的研究告诉我,Gstreamer 主要用于需要即时编码/解码的应用程序,虽然支持录制,但听起来我需要处理原始数据,所以我需要像 PortAudio 这样的直接库。

于 2012-12-11T04:19:23.080 回答
0

看看这些例子。您可以在 gstreamer 中完全实现这一点,而您的应用程序甚至不需要做网络方面的事情。

于 2012-12-11T12:52:19.747 回答