/** * Send VOD seek control message * * @param msgIn Message input * @param position New timestamp to play from */ private void sendVODSeekCM(IMessageInput msgIn, int position) { OOBControlMessage oobCtrlMsg = new OOBControlMessage(); oobCtrlMsg.setTarget(ISeekableProvider.KEY); oobCtrlMsg.setServiceName("seek"); Map<String, Object> paramMap = new HashMap<>(1); paramMap.put("position", Integer.valueOf(position)); oobCtrlMsg.setServiceParamMap(paramMap); msgIn.sendOOBControlMessage(this, oobCtrlMsg); // Reset properties vodStartTS = 0; serverStartTS = System.currentTimeMillis(); if (nextRTMPMessage != null) { try { pushMessage(nextRTMPMessage); } catch (IOException err) { log.error("Error while sending message.", err); } nextRTMPMessage.getBody().release(); nextRTMPMessage = null; } ResetMessage reset = new ResetMessage(); try { pushMessage(reset); } catch (IOException err) { log.error("Error while sending message.", err); } scheduleNextMessage(); }
/** * Send VOD initialization control message * * @param msgIn Message input * @param start Start timestamp */ private void sendVODInitCM(IMessageInput msgIn, int start) { if (msgIn != null) { // Create new out-of-band control message OOBControlMessage oobCtrlMsg = new OOBControlMessage(); // Set passive type oobCtrlMsg.setTarget(IPassive.KEY); // Set service name of init oobCtrlMsg.setServiceName("init"); // Create map for parameters Map<String, Object> paramMap = new HashMap<>(1); // Put start timestamp into Map of params paramMap.put("startTS", start); // Attach to OOB control message and send it oobCtrlMsg.setServiceParamMap(paramMap); msgIn.sendOOBControlMessage(this, oobCtrlMsg); } }