c++11 - 获取 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)无法播放)检查发送和接收的数据是否相同。
请帮忙。任何建议或意见将不胜感激:)
解决方案
尝试使用
timeout
element的属性udpsrc
。编写一个逻辑,使您的管道在超时的回调函数中停止。您是否尝试过以不同格式保存文件?比如 mp4、avi 等。你知道是否在源代码处进行了任何编码吗?如果完成,则必须在元素后使用适当的解码器
rtpL16depay
将视频从该编解码器格式解码为原始格式。可能是这个原因,您无法播放文件。这可能是一个疯狂的猜测,但我认为 L16 可以是您源代码的编码格式。
推荐阅读
- python-3.x - 在 Matplotlib 中为 value_counts().plot 添加值文本
- node.js - 完成状态码:Firebase 函数上的 204 并没有发生任何事情
- automation - Gitlab Runner Automation/如何将最新文件本地下载到计算机
- javascript - 检查所有相关子数组是否符合条件
- mysql - 如何清除mysql中的空闲事务?
- android - android Espresso-toast 消息断言不适用于 sdk 30
- reactjs - 如何在 React Table v7 中使用 className 属性?
- snowflake-cloud-data-platform - 从现有表创建表而不复制雪花中的数据
- angular - nativescript/angular webview 外部链接打开应用程序。如何停止打开应用程序
- firebase - 如何使用 Switch 语句处理 FirebaseAuthException