【问题标题】:GStreamer RTP packet sizeGStreamer RTP 数据包大小
【发布时间】:2017-09-23 08:41:33
【问题描述】:

我正在运行以下 GStreamer 命令:

gst-launch-1.0 -v filesrc location=audiofile.mp3 ! mad ! audioconvert ! rtpL16pay mtu=1024 ! udpsink port=5005 host=127.0.0.1

这会设置一个最大数据包大小为 1024 字节(最大传输单元)的 RTP 流。当我运行这个流时,我最终得到一个 4 个大小为 1024 的数据包的序列,然后是 1 个大小为 572 的数据包。这个序列在文件的持续时间内重复。为什么会发生这种情况,有没有办法确保统一的数据包大小(至少直到最后一个数据包)?

【问题讨论】:

  • 您好,想知道您是否找到了控制数据包大小的方法

标签: rtp gstreamer


【解决方案1】:

RTP 数据包大小是 MTU、max-ptime(如果设置)或可用数据中的最小值。

因此,在您的情况下,如果没有更多信息,我怀疑 572 字节的数据包大小是因为它是此时管道中的所有可用或剩余数据。

如果您想确保 1024 字节始终可用,请考虑实施 queue 来为您的 rtpL16pay 元素缓冲数据。

【讨论】:

  • 感谢您的建议。我试图在audioconvert 之后插入queue min-threshold-bytes=1024,但似乎没有什么不同。您能否提供一个 gstreamer 中使用队列的示例?我似乎找不到任何东西。
  • 也许this 可以作为一个通用示例提供帮助。您可以使用GST_DEBUG_DUMP_DOT_DIR 调试gst-launch 生成的管道。
  • 谢谢。不幸的是,我使用queue 的任何尝试都没有导致数据包大小发生任何变化。也许我得去别处看看。
  • 我想你会希望queue min-threshold-bytes=1024 在最终的udpsink 之前。 gst-launch-1.0 -v filesrc location=audiofile.mp3 ! mad ! audioconvert ! rtpL16pay mtu=1024 ! queue min-threshold-bytes=1024 ! udpsink port=5005 host=127.0.0.1
  • 不幸的是我也试过了——没有运气。老实说,我在使用queue 的各种尝试中都没有得到任何明显的效果,所以我仍然对我是否在语法上做错了感到困惑。但也没有错误消息,sooo....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多