Ant-Media-Server icon indicating copy to clipboard operation
Ant-Media-Server copied to clipboard

Filter plugin does not work without audio

Open JCFontoura opened this issue 3 years ago • 0 comments

Getting 500 error when using the plugin filter without audio on the input stream:

`Access-Control-Allow-Origin: * Content-Type: text/html;charset=utf-8 Content-Language: en Content-Length: 4853 Date: Sat, 25 Jun 2022 03:59:13 GMT Connection: close

HTTP Status 500 – Internal Server Error

HTTP Status 500 – Internal Server Error


Type Exception Report

Message java.lang.NullPointerException

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: java.lang.NullPointerException
    org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:410)
    org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1230)
    io.antmedia.filter.IPFilter.doFilter(IPFilter.java:24)
    io.antmedia.filter.JWTFilter.doFilter(JWTFilter.java:44)
    org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:368)
    org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:174)

Root Cause

java.lang.NullPointerException
io.antmedia.filter.FilterAdaptor.update(FilterAdaptor.java:193)
io.antmedia.filter.FilterAdaptor.createFilter(FilterAdaptor.java:347)
io.antmedia.plugin.FiltersManager.createFilter(FiltersManager.java:34)
io.antmedia.rest.FilterRestService.create(FilterRestService.java:49)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219)
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
org.glassfish.jersey.internal.Errors.process(Errors.java:292)
org.glassfish.jersey.internal.Errors.process(Errors.java:274)
org.glassfish.jersey.internal.Errors.process(Errors.java:244)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
100  5085  100  4853  100   232  45355   2168 --:--:-- --:--:-- --:--:-- 47971ey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1230)
io.antmedia.filter.IPFilter.doFilter(IPFilter.java:24)
io.antmedia.filter.JWTFilter.doFilter(JWTFilter.java:44)
org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:368)
org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:174)

Note The full stack trace of the root cause is available in the server logs.


Apache Tomcat/8.5.78

`

Steps to reproduce:

  1. start a broadcasting without audio. In this example is the "123" stream id.
  2. curl to post filter curl -i -X POST -H "Accept: Application/json" -H "Content-Type: application/json" "https://<server>:5443/<app>/rest/v2/filters/create" -d '{"filterId":"demo","inputStreams":["123"],"outputStreams":["output"],"videoFilter":"[in0]v360=fisheye:e:ih_fov=180:iv_fov=180:pitch=90[out0]","audioFilter":"[in0]acopy[out0]","videoEnabled":"true","audioEnabled":"false","type":"asynchronous"}'

It should be able to not use the "audioFilter" if the stream doesn't have audio. Or insert some dummy audio.

JCFontoura avatar Jun 25 '22 04:06 JCFontoura