因此,对于GNURadio项目,我正在向我的电视发送带有PSIP数据的MPEG-2视频。所述数据和视频的实际传递很好,但是视频没有被正确解码。它几乎是空白的,到处都是闪烁的块,快速移动的场景有更多的“垃圾”。它有点looks like this,除了大多数是黑色,“块”随机出现和消失。这应该是to look like this.
我在使用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命令输出中显示的错误是“
"[libav] NULL: start time is not set in estimate_timings_from_pts"
和...
"No PTS found! Making something up"
知道会发生什么事吗?当它是实时源时,如何编写正确的PTS / DTS值?是的,我必须使用MPEG-2和gstreamer。
答案 0 :(得分:0)
正如您所注意到的那样,您缺少PTS / DTS值,这些值是解码器的基本时间戳:它告诉您何时解码并呈现帧。我不认为您可以手动生成它,因为它通常在多路复用操作期间完成。
似乎mpv
成功地模仿了它们,这就是为什么你有一个干净的渲染,但显然你的电视不能。
您是否尝试与ffmpeg
进行多路复用?
答案 1 :(得分:0)
这也可能是因为编码管道严重受压。
您是否收到有关该编码管道的警告?以GST_DEBUG=3
为例。
您使用的是什么版本的GStreamer?
通过videotestsrc生成一个1920x1080 @ 60fps的流是非常cpu密集的(它用于调试目的)。