1

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

在将它添加到混音器进行测试之前,我正在使用 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。

4

2 回答 2

0

正如您注意到的那样,您缺少 PTS/DTS 值,这些值是解码器必不可少的时间戳:它告诉何时解码和呈现帧。我不认为您可以手动生成它,因为它通常在复用操作期间完成。

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

您是否尝试过与 混合ffmpeg

于 2014-07-30T15:20:36.570 回答
0

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

您是否收到有关该编码管道的任何警告?GST_DEBUG=3例如。您使用的是什么版本的 GStreamer?

通过 videotestsrc 生成 1920x1080@60fps 流是...非常占用 cpu 的(它用于调试目的)。

于 2014-07-30T16:08:48.003 回答