Наложение изображения Kurento Media Pipeline на петлю не работает - PullRequest
4 голосов
/ 14 февраля 2020

У меня проблемы с наложением изображения на петлевое видео. Я могу выполнить петлю с помощью скрипта с rtpEndpoint.connect(rtpEndpoint, function....), но когда я пытаюсь добавить в ImageOverlayFilter, я получаю некоторые ошибки, которые мне не удалось устранить.

Ошибка: недопустимое значение для ' MediaType '

"error": {"code": 40001, "data": {"type": "MARSHALL_ERROR"}, "message": "Недопустимое значение для 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, но он дает те же результаты.

1 Ответ

2 голосов
/ 22 февраля 2020

Обновлено! Предполагая, что imageoverlayfilter - это что-то вроде faceoverlayfilter в Kurento, указанный файл должен быть http (s) url. Если вы храните файлы локально, вам необходимо их сервировать с помощью веб-сервера или разместить их удаленно.

Итак, вместо ... "file: //tmp/media/sample.png"

В зависимости от того, где у вас есть root вашего http (s) сервера. иметь ... "https://localhost/tmp/media/sample.png"

Также обратите внимание, что были проблемы с фильтром наложения изображений, подтвержденным до kurento 6.11. Последняя версия - 6,13, поэтому ее можно решить ... https://github.com/Kurento/bugtracker/issues/350

В дополнение к описанным выше изменениям вы можете попробовать использовать приведенный ниже код, заменив FaceOverlayFilter на ImageOverlayFilter и setOverlayedImage, чтобы добавитьImage в качестве использование и реализация обоих фильтров практически одинаковы.

Итак, измените ...

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 );
                }
            );
        });
...