我有一个以 60fps 编码的流,但我的 gstreamer 管道以 fps 播放它,所以视频看起来很慢。我创建了一个 gstreamer 管道作为
appsrc name=src ! video/x-h264 ! decodebin ! autovideosink sync=false
appsrc 会将缓冲区推送到解码器中。现在我想为我正在播放的视频强制设置一些帧速率。我尝试在
videorate
和 decodebin
之间插入 autovideosink
。但这没有用。然后我插入 framerate=30/1
来强制帧速率为 30fps。但这也不起作用;那么如何强制 gstremer 管道中解码器的帧速率?
在没有看到您尝试过的其他管道的情况下,我想出了这个:
gst-launch-1.0 filesrc location=movie.avi ! decodebin ! \
videorate ! "video/x-raw,framerate=5/1" ! autovideosink
movie.avi 包含一个 30fps 的视频,然后在显示之前固定为 5fps。
正如另一个答案所说,在
videoscale
之后添加元素 decodebin
并添加 capfilter 来指定帧速率。
将属性
max-rate
添加到 videoscale
也可以。
gst-launch-1.0 filesrc location=movie.avi ! decodebin ! \
videorate max-rate=5 ! autovideosink