【问题标题】:Vertically oriented H.264 stream shows corrupted video垂直方向的 H.264 流显示损坏的视频
【发布时间】:2018-04-26 23:58:48
【问题描述】:

我有一个垂直定向(走廊模式)的 IP 监控摄像头,并且该摄像头已针对该方向进行了配置。当我在 SDP 响应中解码 SPS 时,它正确显示帧大小为 1080 的宽度和 1920 的高度。我的软件读取 RTSP/RTP 视频流,然后将其馈送到 Microsoft H.264 MFT 解码器并通过DX9。我的软件适用于正常的水平视频输入,但当我尝试使用垂直相机时,显示已损坏。这是它的外观的屏幕截图。一种可能性是我需要旋转框架,但似乎已经完成了相机设置并且 SPS 格式的框架尺寸似乎证实了这一点。另外,当我在相机的网络界面和 VLC 中查看视频时,它会正确显示。有谁知道为什么会发生这种情况以及我该如何纠正?谢谢。

【问题讨论】:

    标签: video-streaming h.264 ms-media-foundation


    【解决方案1】:

    效果特定于视频的宽度,而不是特定于方向。帧缓冲区可能实际上比帧更大(更宽),并且您应该在处理的某些步骤中忽略了这一点。视频的宽度为 1080 像素,根据视频硬件的对齐要求,视频缓冲区可能是例如1152 或 1536 像素宽。您应该将考虑到这种对齐的数据逐行复制到较大缓冲区的左上角。

    该问题没有代码或细节来猜测问题究竟发生在哪里。例如,这可能是将数据上传到纹理的步骤。 DirectX 9 和其他版本、DirectShow、Media Foundation - 所有 API 都以这种或其他方式支持扩展步幅的概念,因为这是视频内存中数据的典型布局要求(也适用于 SIMD 处理)。

    仅供参考,讨论了一些具有类似效果的其他问题:

    【讨论】:

    • 我发现到目标表面的步幅不正确。还不知道为什么。感谢 Roman 引导我朝着正确的方向前进!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2016-12-02
    • 1970-01-01
    • 2015-12-19
    • 2022-03-24
    • 2012-08-08
    相关资源
    最近更新 更多