我想使用 C 语言的 Gstreamer 创建一个简单的客户端-服务器应用程序。客户端必须从麦克风(1 channel ,16Khz)捕获音频,并将音频流发送到服务器,服务器将其保存为磁盘上的 .wav 文件。
实际代码在磁盘上创建文件,但它是空的。我认为服务器工作正常,因为如果我使用此命令作为客户端,它会创建文件: gst-launch-1.0 filesrc location=audio.wav ! tcpclientsink 主机=127.0.0.1 端口=5000
我需要有关客户端出了什么问题的提示。
谢谢!
这是我的客户端代码:https://drive.google.com/open?id=0B7umVbxKsF0GVWZ3b3J3QTN2T1k
这是我的服务器代码:https://drive.google.com/open?id=0B7umVbxKsF0GRDVKQXVKVXVGVnM
最佳答案
您的客户端代码等于下面的 gst-launch 命令
gst-launch-1.0 脉冲源!音频转换!音频重采样!音频/x-raw,格式=S16LE, channel =1,速率=16000,布局=交错! tcpclientsink 主机=127.0.0.1 端口=5000
它发送原始音频,而不是像您的可运行示例那样的 wav 文件。
要允许服务器使用此原始音频流,请删除 decodebin
并在那里放置一个 capsfilter 来告诉服务器音频流的格式/ channel /速率...。
P/s:客户端代码中的 while(1)
很糟糕,应该将其删除
关于c - Gstreamer 客户端服务器音频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35745737/