gpt4 book ai didi

gstreamer - 如何使 rtpjitterbuffer 在没有时间戳的流上工作?

转载 作者:行者123 更新时间:2023-12-04 02:10:02 26 4
gpt4 key购买 nike

我正在使用 gstreamer 通过 RTP 发送 H.264 字节流。

# sender
gst-launch-1.0 filesrc location=my_stream.h264 ! h264parse disable-passthrough=true ! rtph264pay config-interval=10 pt=96 ! udpsink host=localhost port=5004

然后我在其他 gstreamer 实例中接收帧,解码和显示。
# receiver
gst-launch-1.0 udpsrc port=5004 ! application/x-rtp,payload=96,media="video",encoding-name="H264",clock-rate="90000" ! rtph264depay ! h264parse ! decodebin ! xvimagesink

这按原样工作,但我想尝试添加一个 rtpjitterbuffer 以完美地平滑播放。
# receiver
gst-launch-1.0 udpsrc port=5004 ! application/x-rtp,payload=96,media="video",encoding-name="H264",clock-rate="90000" ! rtpjitterbuffer ! rtph264depay ! h264parse ! decodebin ! xvimagesink

但是,一旦我这样做,接收器就只显示一个帧并卡住。

如果我用 MP4 文件替换 .h264 文件,播放效果很好。

我假设我的 h264 流没有启用 jitter buffer 所需的时间戳。

我通过添加 identity datarate=1000000 取得了一些进展.这允许 jitterbuffer 播放,但是这与我的帧速率有关,因为 P 帧的数据少于 I 帧。很明显 identity element 添加了正确的时间戳,但只是使用了错误的数字。

是否可以通过在某处正确指定“帧速率”上限来自动生成发送方的时间戳?到目前为止,我的尝试还没有奏效。

最佳答案

你已经部分回答了这个问题:

If I replace the .h264 file with an MP4 file, the playback works great.

I assume that my h264 stream does not have the required timestamps to enable the jitter buffer to function.



您的发送方管道没有协商的帧速率,因为您使用的是原始 h264 流,而您实际上应该使用具有此信息的容器格式(例如 MP4)。没有时间戳 udpsink无法与时钟同步以进行节流,因此发送方正在以管道可以处理的速度吐出数据包。这不是活水槽。

但是添加一个 rtpjitterbuffer使您的接收器充当实时信号源。它卡住是因为它正在尽最大努力应对格式错误的时间戳数据包。据我所知,RTP 不会传输“丢失”的时间戳,因此所有数据包可能都具有相同的时间戳。因此,它可能会重建第一帧并将其余帧作为重复项丢弃。

我必须同意 用户1998586 从某种意义上说,在这种情况下,管道崩溃并显示良好的错误消息应该更好,而不是尽最大努力。

Is it possible to automatically generate timestamps on the sender by specifying the "framerate" caps correctly somewhere? So far my attempts have not worked.



不,你真的应该使用容器。

然而,理论上,一个 au对齐的 H264 原始流可以通过仅知道帧速率来标记时间戳,但是没有 gstreamer 元素(我知道)可以这样做,而仅指定上限不会这样做。

关于gstreamer - 如何使 rtpjitterbuffer 在没有时间戳的流上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39565204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com