我已经编写了一个实时推送过滤器,它可以获得包含h.264视频和aac音频的mpeg-ts流。我设置了一个directshow管道并配置了输出引脚。我可以渲染h.264流,但我在渲染中得到了伪影,从这个屏幕截图可以看出,当使用videotestsrc和"ball“模式从gstreamer流传输时。

此屏幕截图应仅包含黑色背景上的一个白点。另外两个是播放动画时出现的“剩菜”。
如果我流式传输MPEG-2并相应地更改流水线,则模式呈现时没有错误。我尝试使用描述的on msdn设置来配置引脚,使用H264和AVC1显式地提供序列报头等。我还是得到了同样的神器。
此外,当I帧间隔为60时,错误似乎出现在图像的上半部分,即每2秒。当我们更改为每隔一帧(key-int-max=2)一个I帧时,伪像只出现在图像顶部的窄条中。
下面的gstreamer管道生成了视频流:
videotestsrc live-source=true pattern=ball ! video/x-raw-yuv,format=(fourcc)I420,width=1366,height=768,framerate=30/1 ! timeoverlay halign=left valign=bottom shaded-background=true ! x264enc bitrate=4096 tune=zerolatency ! h264parse ! queue ! mux. audiotestsrc wave=ticks volume=0.2 ! voaacenc ! mux. mpegtsmux name=mux ! udpsink host=<ip> port=<port>这是管道的样子:

本例中的配置是主类型= MEDIATYPE_Video,子类型= MEDIASUBTYPE_H264,格式类型= FORMAT_MPEG2Video。没有特别提供的sequenceheader等。
因此,问题是,这些类型的工件症状是一些常见的配置问题吗?
发布于 2013-05-10 14:33:08
事实证明,MPEG-2多路分解器不是为处理H.264内容而设计的。这就是为什么这些效果会出现。
发布于 2013-05-08 17:53:33
您在传输过程中丢失了数据,可能会导致错误。问题是I图片比P图片有更高的比特率。如果您有cbr n/w,那么您可能会看到此问题。
为什么工件会以这种方式出现:
现在,如果你有一个只有一个白色球的视频,而背景的其余部分是黑色的,当你松动帧时,参考图片就会丢失,它会看起来乱码,因为解码器可能只是尝试使用最后一个有效帧中的帧来显示。由于您的最后一个有效帧都是黑色的,屏幕的其余部分看起来都没问题,while球所在的部分仍然显示错误。
用一个不同的模式替换这个模式,你会更清楚地明白我的意思。
只使用I图片,不存在任何参考图片的问题,因此您将获得干净的输出。
检查传输是否正常的一种方法是将您的输出转储到一个文件,然后在另一端使用文件读取它。如果工作正常,你就知道你的传输丢失了数据。
同样,因为你的时钟在底部,你应该看到时钟也在跳跃,如果有帧的损失。
https://stackoverflow.com/questions/16362132
复制相似问题