我想在C中使用Gstreamer创建一个简单的客户端 - 服务器应用程序。客户端必须从麦克风(1通道,16Khz)捕获音频,并将音频流发送到服务器,将其保存为磁盘上的.wav文件。
实际代码在磁盘上创建文件,但它是空的。我认为服务器工作正常,因为如果我将此命令用作客户端,它会创建文件:gst-launch-1.0 filesrc location = audio.wav! tcpclientsink host = 127.0.0.1 port = 5000
我需要提示客户端有什么问题。
谢谢!
以下是我的客户代码:https://drive.google.com/open?id=0B7umVbxKsF0GVWZ3b3J3QTN2T1k
这是我的服务器代码:https://drive.google.com/open?id=0B7umVbxKsF0GRDVKQXVKVXVGVnM
答案 0 :(得分:0)
您的客户端代码等于gst-launch命令以下
gst-launch-1.0 pulsesrc ! audioconvert ! audioresample ! audio/x-raw, format=S16LE, channels=1, rate=16000, layout=interleaved ! tcpclientsink host=127.0.0.1 port=5000
它发送原始音频,而不是像可运行示例那样的wav文件。
要允许服务器使用此原始音频流,请删除decodebin
将封装过滤器放在那里告诉服务器音频流的格式/频道/速率....
P / s:您的客户端代码中的while(1)
错误,应将其删除