作为标题(标题),我在这里面临两个问题。
1。将Rtp有效负载获取到本地文件中。
现在我已经完成了以下工作
gst-launch-1.0 udpsrc port=5000 ! "application/x-rtp,media=(string)audio, clock-rate=(int)44100, width=16, height=16, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, channel-positions=(int)1, payload=(int)96" ! rtpL16depay ! filesink location=TestFile.pcm
但是我不确定如何正确关闭文件!!! 现在我正在做的是关闭源管道(当音频文件到达末尾时它会自动关闭)。这样就停止了将数据写入文件。客户端管道(上面给出的那个)有没有办法识别出没有传入数据,因此该管道是免费的。
2。如何检查生成的文件TestFile.pcm
从上述管道生成的文件包含原始音频数据。如何播放(基于linux的音频文件播放器(mplayer)无法播放)以检查发送和接收的数据是否相同。
请帮助。任何建议或意见将不胜感激:)
答案 0 :(得分:0)
尝试尝试元素timeout
的属性udpsrc
。编写逻辑,使您的管道停止在超时的回调函数中。
您是否尝试过以其他格式保存文件?例如mp4,avi等。您知道在源头是否进行了编码吗?如果完成,则必须在元素rtpL16depay
之后使用适当的解码器,以将视频从该编解码器格式解码为原始格式。可能是这个原因,您无法播放文件。
这可能是一个疯狂的猜测,但是我认为L16可能是您在源代码上的编码格式。