我无法让图像叠加显示在环回视频上。我可以使用 rtpEndpoint.connect(rtpEndpoint, function....) 对脚本进行环回,但是当我尝试添加 ImageOverlayFilter 时,出现了一些我无法解决的错误。

错误:“MediaType”的值无效

“错误”:{“代码”:40001,“数据”:{“类型”:“MARSHALL_ERROR”},“消息”:“'MediaType'的值无效”}

   var overlayparams = {
       id: "TESTTEST",
       uri: "file://tmp/media/sample.png",
       offsetXPercent: 0,
       offsetYPercent: 0,
       widthPercent: 0,
       heightPercent: 0,
       keepAspectRatio: true,
       center: true,
       mediaPipeline: pipeline
    }

    pipeline.create("ImageOverlayFilter", overlayparams, function (error, filter) {
       if (error) return console.log(">>>>>"+ error);

       return callback(null, rtpEndpoint, filter);

    });

稍后在文件中
    rtpEndpoint.connect(rtpEndpoint, imageOverlay, rtpEndpoint, function (error) {
        if (error) return onError(error);
        console.log("Added overlay to loopback");
    });

    /*
    // This works for normal loopback
    rtpEndpoint.connect(rtpEndpoint, function (error) {
        if (error) return onError(error);
        console.log("loopback works");
    });
     */

我也尝试过使用 filter.addVideo 方法而不是 overlayparams 对象,但它产生了相同的结果。

最佳答案

更新!
假设 imageoverlayfilter 与 Kurento 中的 faceoverlayfilter 类似,则引用的文件必须是 http(s) url。如果您在本地存储文件,则需要使用网络服务器为它们提供服务器或远程托管它们。

所以,而不是...
“文件://tmp/media/sample.png”

取决于您拥有 http(s) 服务器根目录的位置,您将拥有...
https://localhost/tmp/media/sample.png

另请注意,在 kurento 6.11 之前确认 imageoverlay 过滤器存在问题。最新的是6.13所以它可以解决...
https://github.com/Kurento/bugtracker/issues/350

除了上面描述的更改之外,您还可以尝试使用下面的代码将 FaceOverlayFilter 替换为 ImageOverlayFilter 并将 setOverlayedImage 替换为 addImage,因为这两个过滤器的用法和实现几乎相同。

所以换...

pipeline.create("FaceOverlayFilter", (error, faceOverlayFilter) => {
            if (error) {
                return callback(error);
            }
            // This adds the Mario hat
            faceOverlayFilter.setOverlayedImage(
                url.format(asUrl) + "img/mario-wings.png",
                -0.35,
                -1.2,
                1.6,
                1.6,
                function(error) {
                    if (error) {
                        return callback(error);
                    }
                    return callback(null, webRtcEndpoint, faceOverlayFilter);
                }
            );
        });

至...
pipeline.create("ImageOverlayFilter ", (error, ImageOverlayFilter ) => {
            if (error) {
                return callback(error);
            }
            // This adds the image
            ImageOverlayFilter .addImage (
                "https://localhost/tmp/media/sample.png",
                0,
                0,
                0,
                0,
                true,
                true
                function(error) {
                    if (error) {
                        return callback(error);
                    }
                    return callback(null, webRtcEndpoint, ImageOverlayFilter );
                }
            );
        });

关于node.js - 环回上的 Kurento 媒体管道覆盖图像不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60232249/

10-09 22:20