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 BITS) を使用するか、現在のシステムに組み込まれている暗号化方法が好きではないより強力なものを使用したいと考えています。

4

2 に答える 2

0

私の調査によると、Gstreamerは主にオンザフライのエンコード/デコードを必要とするアプリケーション向けであり、録音はサポートされますが、処理する生データが必要なように思われるため、代わりにPortAudioのような直接ライブラリが必要になります。

于 2012-12-11T04:19:23.080 に答える
0

これらのを見てください。アプリケーションがネットワーク側の処理を行う必要がなくても、gstreamer 内でこれを完全に実現できます。

于 2012-12-11T12:52:19.747 に答える