Wowza Community

HTTPProviderGenerateThumbnail doesn't work

I am trying to generate thumbnails for non transcoded, video codec type h264 live stream using below documents. I am using wowza stream engine, and has developer licesne.
Wowza Streaming Engine 4 Developer Edition (Expires: Mar 21, 2022) 4.8.14+9 build20210719152831
https://www.wowza.com/docs/how-to-generate-thumbnail-images-of-live-streams

When I update VHost.xml by adding following provider, the engine stops working as well as all the methods that are available on port 8086 they also stop working. Without adding below provider, the thumbnail gets generated for transcoded stream.

com.wowza.wms.transcoder.thumbnailer.HTTPProviderGenerateThumbnail
thumbnail*
none

Any help or possible leads would really appreciated.
Thanks,

Make sure XML is not broken. Make sure the provider is added in the end and most importantly monitor logs for errors.

Thanks Connessione for your response. I had tried adding http provider at the end. But it doesn’t work! When I remove the http provider and keep the vhost.xml as it is, everything works without issue. Logs doesn’t spit out anything regarding HTTPProviderGenerateThumbnail. These are h264 codecs so doesn’t require to transcode the stream.
Can you please provide any other hints?

Hi There, We got the thread dump (see below) when we try to use thumbnail for non transcoded stream for h264 codec. Please note that the application is also disable for Transcoding. These cameras are IP cameras and do NOT require to transcode. As soon as we try to request the thumbnail for non transcoded stream, the wowza freezes and blocks everything. Becomes unavailable.

Thread 171: (state = IN_NATIVE)

  • com.wowza.wms.transcoder.model.TranscoderSessionNative.thumbnailerGetVideoFrame(long, com.wowza.wms.transcoder.thumbnailer.ThumbnailerRequest, com.wowza.wms.transcoder.thumbnailer.ThumbnailerResponse) @bci=0 (Interpreted frame)
  • com.wowza.wms.transcoder.thumbnailer.ThumbnailerEncoder.generateThumbnail(com.wowza.wms.transcoder.thumbnailer.ThumbnailerRequest, com.wowza.wms.transcoder.thumbnailer.ThumbnailerResponse) @bci=41, line=215 (Interpreted frame)
  • com.wowza.wms.transcoder.thumbnailer.ThumbnailerUtils.generateThumbnail(com.wowza.wms.vhost.IVHost, com.wowza.wms.transcoder.thumbnailer.ThumbnailerRequest) @bci=120, line=36 (Interpreted frame)
  • com.wowza.wms.transcoder.thumbnailer.HTTPProviderGenerateThumbnail.onHTTPRequest(com.wowza.wms.vhost.IVHost, com.wowza.wms.http.IHTTPRequest, com.wowza.wms.http.IHTTPResponse) @bci=193, line=175 (Interpreted frame)
  • com.wowza.wms.http.HTTPRequestAdapter.serviceHTTP(com.wowza.wms.http.IHTTPProvider, org.apache.mina.common.IoSession, com.wowza.wms.server.RtmpSessionInfo, com.wowza.wms.server.RtmpRequestMessage, com.wowza.wms.server.RtmpResponseMessage) @bci=274, line=149 (Interpreted frame)
  • com.wowza.wms.http.HTTPRequestAdapter.service(org.apache.mina.common.IoSession, com.wowza.wms.server.RtmpSessionInfo, com.wowza.wms.server.RtmpRequestMessage, com.wowza.wms.server.RtmpResponseMessage) @bci=278, line=793 (Interpreted frame)
  • com.wowza.wms.server.ServerHandler.a(org.apache.mina.common.IoSession, com.wowza.wms.server.RtmpSessionInfo, com.wowza.wms.server.RtmpRequestMessage, com.wowza.wms.server.RtmpResponseMessage) @bci=162, line=676 (Interpreted frame)
  • com.wowza.wms.server.ServerHandler.a(com.wowza.wms.server.RtmpSessionInfo, org.apache.mina.common.IoSession, java.lang.Object) @bci=192, line=417 (Interpreted frame)
  • com.wowza.wms.server.ServerHandler.messageReceived(org.apache.mina.common.IoSession, java.lang.Object) @bci=205, line=533 (Interpreted frame)
  • com.wowza.wms.server.ServerHandlerThreaded.messageReceived(org.apache.mina.common.IoSession, java.lang.Object) @bci=52, line=79 (Interpreted frame)
  • org.apache.mina.common.support.AbstractIoFilterChain$2.messageReceived(org.apache.mina.common.IoFilter$NextFilter, org.apache.mina.common.IoSession, java.lang.Object) @bci=8, line=181 (Compiled frame)
  • org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(org.apache.mina.common.IoFilterChain$Entry, org.apache.mina.common.IoSession, java.lang.Object) @bci=14, line=511 (Compiled frame)
  • org.apache.mina.common.support.AbstractIoFilterChain.access$900(org.apache.mina.common.support.AbstractIoFilterChain, org.apache.mina.common.IoFilterChain$Entry, org.apache.mina.common.IoSession, java.lang.Object) @bci=4, line=42 (Compiled frame)
  • org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(org.apache.mina.common.IoSession, java.lang.Object) @bci=18, line=786 (Compiled frame)
  • org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush() @bci=25, line=60 (Interpreted frame)
  • org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(org.apache.mina.common.IoFilter$NextFilter, org.apache.mina.common.IoSession, java.lang.Object) @bci=73, line=180 (Interpreted frame)
  • org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(org.apache.mina.common.IoFilterChain$Entry, org.apache.mina.common.IoSession, java.lang.Object) @bci=14, line=511 (Compiled frame)
  • org.apache.mina.common.support.AbstractIoFilterChain.access$900(org.apache.mina.common.support.AbstractIoFilterChain, org.apache.mina.common.IoFilterChain$Entry, org.apache.mina.common.IoSession, java.lang.Object) @bci=4, line=42 (Compiled frame)
  • org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(org.apache.mina.common.IoSession, java.lang.Object) @bci=18, line=786 (Compiled frame)
  • org.apache.mina.filter.executor.ExecutorFilter.processEvent(org.apache.mina.common.IoFilter$NextFilter, org.apache.mina.common.IoSession, org.apache.mina.filter.executor.ExecutorFilter$EventType, java.lang.Object) @bci=11, line=246 (Compiled frame)
  • org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run() @bci=133, line=322 (Compiled frame)
  • java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=95 (Interpreted frame)
  • java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5 (Interpreted frame)
  • java.lang.Thread.run() @bci=11 (Interpreted frame)