我试图弄清楚如何通过我自己的 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 位)或使用更强的加密方法,我不喜欢当前系统内置的内置加密方法。