Package com.kurento.demo.player

Source Code of com.kurento.demo.player.GenericPlayer

/*
* (C) Copyright 2013 Kurento (http://kurento.org/)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser General Public License
* (LGPL) version 2.1 which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-2.1.html
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
*/
package com.kurento.demo.player;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.kurento.kmf.content.ContentEvent;
import com.kurento.kmf.content.HttpPlayerSession;
import com.kurento.kmf.media.HttpGetEndpoint;
import com.kurento.kmf.media.JackVaderFilter;
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;

/**
* Static class which contains a generic implementation of an HTTP Player,
* selecting the video to be played depending on the <code>contentId</code>.
* This static code will be used in {@link PlayerRedirect}, {@link PlayerTunnel}
* , {@link PlayerJsonRedirect} and {@link PlayerJsonTunnel}.
*
* @author Boni García (bgarcia@gsyc.es)
* @version 1.0.1
*/
public class GenericPlayer {

  public static final Log log = LogFactory.getLog(GenericPlayer.class);

  public static void play(final HttpPlayerSession session) {
    // contendId discriminates between a termination or a play. In case of
    // the play, contentId selects the URL and filter to be employed
    String contentId = session.getContentId();

    if (contentId != null && contentId.equalsIgnoreCase("reject")) {
      session.terminate(407, "Reject in player handler");
    } else {
      // Small video in WEBM by default (small.webm)
      String url = VideoURLs.map.get("small-webm");
      if (contentId != null && VideoURLs.map.containsKey(contentId)) {
        url = VideoURLs.map.get(contentId);
      }
      if (contentId != null && contentId.equalsIgnoreCase("jack")) {
        // Jack Vader Filter
        MediaPipelineFactory mpf = session.getMediaPipelineFactory();
        MediaPipeline mp = mpf.create();
        session.releaseOnTerminate(mp);
        PlayerEndpoint playerEndPoint = mp.newPlayerEndpoint(url)
            .build();
        JackVaderFilter filter = mp.newJackVaderFilter().build();
        playerEndPoint.connect(filter);
        HttpGetEndpoint httpEndpoint = mp.newHttpGetEndpoint()
            .terminateOnEOS().build();
        filter.connect(httpEndpoint);
        session.setAttribute("player", playerEndPoint);
        session.start(httpEndpoint);
      } else if (contentId != null && contentId.equalsIgnoreCase("zbar")) {
        // ZBar Filter
        MediaPipelineFactory mpf = session.getMediaPipelineFactory();
        MediaPipeline mp = mpf.create();
        PlayerEndpoint player = mp.newPlayerEndpoint(url).build();
        session.setAttribute("player", player);
        ZBarFilter zBarFilter = mp.newZBarFilter().build();
        player.connect(zBarFilter);
        HttpGetEndpoint httpEndpoint = mp.newHttpGetEndpoint()
            .terminateOnEOS().build();
        zBarFilter.connect(httpEndpoint);
        session.start(httpEndpoint);
        session.setAttribute("eventValue", "");
        zBarFilter
            .addCodeFoundListener(new MediaEventListener<CodeFoundEvent>() {
              @Override
              public void onEvent(CodeFoundEvent event) {
                log.info("Code Found " + event.getValue());
                if (session.getAttribute("eventValue")
                    .toString().equals(event.getValue())) {
                  return;
                }
                session.setAttribute("eventValue",
                    event.getValue());
                session.publishEvent(new ContentEvent(event
                    .getType(), event.getValue()));
              }
            });
      }

      else {
        // Player without filter
        session.start(url);
      }
    }
  }
}
TOP

Related Classes of com.kurento.demo.player.GenericPlayer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.