Encoding 将PTS/DTS写入MPEG流(Gstreamer)

Encoding 将PTS/DTS写入MPEG流(Gstreamer),encoding,gstreamer,mpeg-2,pts,Encoding,Gstreamer,Mpeg 2,Pts,因此,对于GNURadio项目,我将MPEG-2视频与PSIP数据混合发送到我的电视。所述数据和视频的实际传递是良好的,但是视频没有被正确解码。它大部分是空白的,到处都是闪烁的方块,快速移动的场景有更多的“垃圾”。它有点像,除了大部分是黑色和“块”随机出现和消失。应该是 在将videtestsrc添加到混频器进行测试之前,我正在使用它。我试过avconv,不管出于什么原因,它都没有这个问题 这是管道,也在下面: VIDEOFORMATIN='video/x-raw, format=UYVY, w

因此,对于GNURadio项目,我将MPEG-2视频与PSIP数据混合发送到我的电视。所述数据和视频的实际传递是良好的,但是视频没有被正确解码。它大部分是空白的,到处都是闪烁的方块,快速移动的场景有更多的“垃圾”。它有点像,除了大部分是黑色和“块”随机出现和消失。应该是

在将videtestsrc添加到混频器进行测试之前,我正在使用它。我试过avconv,不管出于什么原因,它都没有这个问题

这是管道,也在下面:

VIDEOFORMATIN='video/x-raw, format=UYVY, width=1920, height=1080, framerate=60/1, interlaced='true''
gst-launch-1.0 -v videotestsrc do-timestamp=true is-live=true ! $VIDEOFORMATIN \
! videoconvert ! queue ! \
avenc_mpeg2video bitrate=15000000 rc-max-rate=17000000 rc-min-rate=14000000 rc-buffer-size=300000 \
rc-buffer-aggressivity=0.25 ! \
filesink location=video.mpeg
它在mpv、SMPlater和TSReader中呈现良好,可以播放视频,但mpv命令输出中显示的错误为“

而且

"No PTS found! Making something up"

知道会发生什么吗?当它是一个实时源时,我如何编写正确的PTS/DTS值?是的,我必须使用MPEG-2和gstreamer。

正如您注意到的,您缺少PTS/DTS值,这些值是解码器的基本时间戳:它告诉您何时解码和显示帧。我认为您无法手动生成它,因为这是正常的在muxing操作期间,这项操作非常简单

似乎
mpv
成功地模拟了它们,这就是为什么你有一个干净的渲染,但显然你不能


您是否尝试过使用
ffmpeg
进行多路复用?

这也可能是因为编码管道承受着严重的压力

您是否收到该编码管道的任何警告?例如,使用
GST\u DEBUG=3
。 您使用的是什么版本的GStreamer

生成一个1920x1080@60fpsvideotestsrc的流是非常cpu密集型的(用于调试目的)

"No PTS found! Making something up"