【问题标题】:Not correct extract video for render to surface on Huawei nova不正确提取视频以在华为 nova 上渲染到表面
【发布时间】:2018-01-05 14:55:38
【问题描述】:

我创建了一个小应用程序来显示我的问题。 https://github.com/Anton111111/MediaExtractorTest

此应用包含两个视频:

这些是具有不同分辨率(1440x720 和 2160x1080)的相同视频。

然后我尝试使用MediaExtractor 提取此视频并将其渲染到文件中。 您可以在内存根目录(两个文件 v1440_720.png 和 v2160_1080.png)上找到结果。

但是对于分辨率为 2160x1080 的视频,我看到它在底部带有绿色伪影。而这个神器我只在华为nova上看到过。

不知道是不是只有华为手机有问题?以及如何解决?

您可以在链接中看到来自华为 nova 的结果: https://github.com/Anton111111/MediaExtractorTest/blob/master/result/v1440_720.png

https://github.com/Anton111111/MediaExtractorTest/blob/master/result/v2160_1080.png

我如何提取您可以在文件中看到: https://github.com/Anton111111/MediaExtractorTest/blob/master/app/src/main/java/com/mediaextractortest/ExtractorMpeg.java

【问题讨论】:

    标签: android video opengl-es huawei-mobile-services


    【解决方案1】:

    我想我找到了解决办法。 这是视频播放器如何处理视频纹理的问题。当 Android 创建一个 Surface 来解码视频时,某些设备会创建一个比实际视频稍大的 Surface。然后他们在 Surface 上设置一个矩阵,该矩阵暴露在 SurfaceTexture.getTransformMatrix 中。

    我在代码中添加了更改以在顶点中使用变换矩阵来解决此问题。它有效。 这是新的顶点着色器:

    vec4 textureCoord = aTextureCoord;
    textureCoord.y = 1.0 - textureCoord.y;
    vTextureCoord = (uSTMatrix * textureCoord).xy;
    

    【讨论】:

      猜你喜欢
      • 2011-03-19
      • 2018-07-22
      • 2021-04-01
      • 1970-01-01
      • 2015-10-29
      • 2020-08-17
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多