package com.kurento.demo; import com.kurento.kmf.content.ContentEvent; import com.kurento.kmf.content.HttpPlayerHandler; import com.kurento.kmf.content.HttpPlayerService; import com.kurento.kmf.content.HttpPlayerSession; import com.kurento.kmf.media.HttpGetEndpoint; import com.kurento.kmf.media.MediaPipeline; import com.kurento.kmf.media.PlayerEndpoint; import com.kurento.kmf.media.ZBarFilter; import com.kurento.kmf.media.events.CodeFoundEvent; import com.kurento.kmf.media.events.MediaEventListener; import com.kurento.kmf.media.factory.MediaPipelineFactory; /** * HTTP Player Handler which plays a media pipeline composed by a * <code>PlayerEndpoint</code> with a <code>ZBarFilter</code>; using redirect * strategy; with JSON signalling protocol. * * @author Luis López (llopez@gsyc.es) * @author Boni García (bgarcia@gsyc.es) * @since 1.0.0 */ @HttpPlayerService(name = "PlayerJsonRealEventsHandler", path = "/playerJsonEvents", redirect = true, useControlProtocol = true) public class PlayerJsonRealEventsHandler extends HttpPlayerHandler { private String url = ""; @Override public void onContentRequest(final HttpPlayerSession session) throws Exception { MediaPipelineFactory mpf = session.getMediaPipelineFactory(); MediaPipeline mp = mpf.create(); session.releaseOnTerminate(mp); PlayerEndpoint playerEndpoint = mp.newPlayerEndpoint( VideoURLs.map.get("zbar")).build(); ZBarFilter filter = mp.newZBarFilter().build(); playerEndpoint.connect(filter); filter.addCodeFoundListener(new MediaEventListener<CodeFoundEvent>() { @Override public void onEvent(CodeFoundEvent event) { getLogger().info("Event {}-->{}", event.getType(), event.getValue()); if (url.equals(event.getValue())) { return; } url = event.getValue(); session.publishEvent(new ContentEvent(event.getType(), event .getValue())); } }); session.setAttribute("player", playerEndpoint); HttpGetEndpoint httpEP = mp.newHttpGetEndpoint().terminateOnEOS() .build(); filter.connect(httpEP); session.start(httpEP); } @Override public void onContentStarted(HttpPlayerSession session) { PlayerEndpoint playerEndpoint = (PlayerEndpoint) session .getAttribute("player"); playerEndpoint.play(); } }