首页 > 解决方案 > 获取 rtpL16 数据到本地文件 | 如何检查文件是否符合预期?

问题描述

作为标题(标题),我在这里面临两个问题。

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)无法播放)检查发送和接收的数据是否相同。

请帮忙。任何建议或意见将不胜感激:)

标签: c++11audiogstreamerpcmaudio-processing

解决方案


  1. 尝试使用timeoutelement的属性udpsrc。编写一个逻辑,使您的管道在超时的回调函数中停止。

  2. 您是否尝试过以不同格式保存文件?比如 mp4、avi 等。你知道是否在源代码处进行了任何编码吗?如果完成,则必须在元素后使用适当的解码器rtpL16depay将视频从该编解码器格式解码为原始格式。可能是这个原因,您无法播放文件。这可能是一个疯狂的猜测,但我认为 L16 可以是您源代码的编码格式。


推荐阅读