Examples of FlvRecordingMetaData


Examples of org.apache.openmeetings.db.entity.record.FlvRecordingMetaData

      log.debug(String.format("### %s:: Ser file [%s] exists ? %s; size: %s, lastModified: %s ", prefix, metaSer.getPath(), metaSer.exists(), metaSer.length(), metaSer.lastModified()));
    }
  }
 
  protected FlvRecordingMetaData waitForTheStream(long metaId) throws InterruptedException {
    FlvRecordingMetaData metaData = metaDataDao.get(metaId);
    if (metaData.getStreamStatus() != Status.STOPPED) {
      log.debug("### meta Stream not yet written to disk " + metaId);
      boolean doWait = true;
      long counter = 0;
      long maxTimestamp = 0;
      while(doWait) {
        log.trace("### Stream not yet written Thread Sleep - " + metaId);
       
        metaData = metaDataDao.get(metaId);
       
        if (metaData.getStreamStatus() == Status.STOPPED) {
          printMetaInfo(metaData, "Stream now written");
          log.debug("### Thread continue ... " );
          doWait = false;
          break;
        } else {
          File metaFlv = getMetaFlv(metaData);
          if (metaFlv.exists() && maxTimestamp < metaFlv.lastModified()) {
            maxTimestamp = metaFlv.lastModified();
          }
          File metaSer = getMetaFlvSer(metaData);
          if (metaSer.exists() && maxTimestamp < metaSer.lastModified()) {
            maxTimestamp = metaSer.lastModified();
          }
          if (maxTimestamp + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
            if (metaSer.exists()) {
              log.debug("### long time without any update, trying to repair ... ");
              try {
                if (FLVWriter.repair(metaSer.getCanonicalPath(), null, null) && !metaSer.exists()) {
                  metaData.setStreamStatus(Status.STOPPED);
                  metaDataDao.update(metaData);
                }
              } catch (IOException e) {
                log.error("### Error while file repairing ... ", e);
              }
            } else {
              log.debug("### long time without any update, closing ... ");
              metaData.setStreamStatus(Status.STOPPED);
              metaDataDao.update(metaData);
            }
          }
        }
        if (++counter % 1000 == 0) {
View Full Code Here

Examples of org.apache.openmeetings.db.entity.record.FlvRecordingMetaData

      List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
      List<String> listOfFullWaveFiles = new LinkedList<String>();
      File streamFolder = getStreamFolder(flvRecording);
     
      FlvRecordingMetaData screenMetaData = metaDataDao.getScreenMetaDataByRecording(flvRecording.getFlvRecordingId());

      if (screenMetaData == null) {
        throw new Exception("screenMetaData is Null FlvRecordingId " + flvRecording.getFlvRecordingId());
      }

      if (screenMetaData.getStreamStatus() == Status.NONE) {
        throw new Exception("Stream has not been started, error in recording");
      }

      screenMetaData = waitForTheStream(screenMetaData.getFlvRecordingMetaDataId());

      stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder);

      // Merge Wave to Full Length
      String streamFolderGeneralName = getStreamsHibernateDir().getCanonicalPath() + File.separator; // FIXME

      String hashFileFullName = screenMetaData.getStreamName() + "_FINAL_WAVE.wav";
      String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();

      if (listOfFullWaveFiles.size() == 1) {
        outputFullWav = listOfFullWaveFiles.get(0);
      } else if (listOfFullWaveFiles.size() > 0) {
        String[] argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);

        returnLog.add(ProcessHelper.executeScript("mergeAudioToWaves", argv_full_sox));
      } else {
        // create default Audio to merge it. strip to content length
        String outputWav = streamFolderGeneralName + "one_second.wav";

        // Calculate delta at beginning
        Long deltaTimeMilliSeconds = flvRecording.getRecordEnd().getTime() - flvRecording.getRecordStart().getTime();
        Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds.toString()) / 1000) - 1;

        String[] argv_full_sox = new String[] { getPathToSoX(), outputWav, outputFullWav, "pad", "0", deltaPadding.toString() };

        returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
      }
      screenMetaData.setFullWavAudioData(hashFileFullName);
      metaDataDao.update(screenMetaData);

      // Merge Audio with Video / Calculate resulting FLV

      String inputScreenFullFlv = new File(streamFolder, screenMetaData.getStreamName() + ".flv")
          .getCanonicalPath();

      String hashFileFullNameFlv = "flvRecording_" + flvRecording.getFlvRecordingId() + ".flv";
      String outputFullFlv = streamFolderGeneralName + hashFileFullNameFlv;

      // ffmpeg -vcodec flv -qscale 9.5 -r 25 -ar 22050 -ab 32k -s 320x240
      // -i 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17_FINAL_WAVE.wav
      // -i 65318fb5c54b1bc1b1bca077b493a914_28_12_2009_23_38_17.flv
      // final1.flv

      int flvWidth = flvRecording.getWidth();
      int flvHeight = flvRecording.getHeight();

      log.debug("flvWidth -1- " + flvWidth);
      log.debug("flvHeight -1- " + flvHeight);

      flvWidth = Double.valueOf((Math.floor(flvWidth / 16)) * 16).intValue();
      flvHeight = Double.valueOf((Math.floor(flvHeight / 16)) * 16).intValue();

      log.debug("flvWidth -2- " + flvWidth);
      log.debug("flvHeight -2- " + flvHeight);

      flvRecording.setFlvWidth(flvWidth);
      flvRecording.setFlvHeight(flvHeight);

      String[] argv_fullFLV = new String[] { getPathToFFMPEG(), "-y",//
          "-itsoffset", formatMillis(diff(screenMetaData.getRecordStart(), screenMetaData.getFlvRecording().getRecordStart())),
          "-i", inputScreenFullFlv, "-i", outputFullWav, "-ar", "22050", //
          "-acodec", "libmp3lame", //
          "-ab", "32k", //
          "-s", flvWidth + "x" + flvHeight, //
          "-vcodec", "flashsv", //
View Full Code Here

Examples of org.apache.openmeetings.db.entity.record.FlvRecordingMetaData

            stream.removeStreamListener(iStreamListener);
          }
        }
      }

      FlvRecordingMetaData metaData = metaDataDao.get(metaId);
      BaseConverter.printMetaInfo(metaData, "Stopping the stream");
      // Manually call finish on the stream so that there is no endless loop waiting in the FlvRecorderConverter waiting for the stream to finish
      // this would normally happen in the Listener
      Status s = metaData.getStreamStatus();
      if (Status.NONE == s) {
        log.debug("Stream was not started, no need to stop :: stream with id " + metaId);
      } else {
        metaData.setStreamStatus(listenerAdapter == null && s == Status.STARTED ? Status.STOPPED : Status.STOPPING);
        log.debug("Stopping the stream :: New status == " + metaData.getStreamStatus());
      }
      metaDataDao.update(metaData);
      if (listenerAdapter == null) {
        log.debug("Stream Not Found :: " + metaId);
        log.debug("Available Streams :: " + streamListeners.size());
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

        }
       
        //Manually call finish on the stream so that there is no endless loop waiting 
        //in the FlvRecorderConverter waiting for the stream to finish
        //this would normally happen in the Listener
        FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDaoImpl.
              getFlvRecordingMetaDataById(flvRecordingMetaDataId);
        flvRecordingMetaData.setStreamReaderThreadComplete(true);
        flvRecordingMetaDataDaoImpl.updateFlvRecordingMetaData(flvRecordingMetaData);
       
        throw new IllegalStateException("Could not find Listener to stop! flvRecordingMetaDataId "+flvRecordingMetaDataId);
      }
     
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

   
    super(streamName, scope, flvRecordingMetaDataId, isScreenData);
   
    this.flvRecordingMetaDataDao = flvRecordingMetaDataDao;
   
    FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao.
        getFlvRecordingMetaDataById(flvRecordingMetaDataId);
    flvRecordingMetaData.setStreamReaderThreadComplete(false);
    flvRecordingMetaDataDao.updateFlvRecordingMetaData(flvRecordingMetaData);
  }
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

      writer.close();

      // Add Delta in the beginning, this Delta is the Gap between the
      // device chosen and when the User hits the button in the Flash
      // Security Warning
      FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao
          .getFlvRecordingMetaDataById(this.flvRecordingMetaDataId);

      flvRecordingMetaData.setRecordStart(new Date(
          flvRecordingMetaData.getRecordStart().getTime()
              + this.initialDelta));
     
      flvRecordingMetaData.setStreamReaderThreadComplete(true);
     
      flvRecordingMetaDataDao
          .updateFlvRecordingMetaData(flvRecordingMetaData);
     
     
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

   
    this.flvRecordingMetaDeltaDao = flvRecordingMetaDeltaDao;
    this.flvRecordingMetaDataDao = flvRecordingMetaDataDao;
    this.isInterview  = isInterview;
   
    FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao.
                getFlvRecordingMetaDataById(flvRecordingMetaDataId);
    flvRecordingMetaData.setStreamReaderThreadComplete(false);
    flvRecordingMetaDataDao.updateFlvRecordingMetaData(flvRecordingMetaData);
   
  }
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

      flvRecordingMetaDeltaDao
          .addFlvRecordingMetaDelta(flvRecordingMetaDelta);
     
      //Write the complete Bit to the meta data, the converter task will wait for this bit!
      FlvRecordingMetaData flvRecordingMetaData = flvRecordingMetaDataDao.getFlvRecordingMetaDataById(flvRecordingMetaDataId);
      flvRecordingMetaData.setStreamReaderThreadComplete(true);
      flvRecordingMetaDataDao.updateFlvRecordingMetaData(flvRecordingMetaData);

    } catch (Exception err) {
      log.error("[closeStream]", err);
    }
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

      stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder);

      // Merge Wave to Full Length
      String streamFolderGeneralName = getStreamFolder().getCanonicalPath() + File.separator; //FIXME

      FlvRecordingMetaData flvRecordingMetaDataOfScreen = this.flvRecordingMetaDataDaoImpl
          .getFlvRecordingMetaDataScreenFlvByRecording(flvRecording
              .getFlvRecordingId());
     
      if (flvRecordingMetaDataOfScreen == null) {
        throw new Exception("flvRecordingMetaDataOfScreen is Null FlvRecordingId "+flvRecording
              .getFlvRecordingId());
      }
     
      if (flvRecordingMetaDataOfScreen.getStreamReaderThreadComplete() == null) {
        throw new Exception("StreamReaderThreadComplete Bit is NULL, error in recording");
      }
     
      if (!flvRecordingMetaDataOfScreen.getStreamReaderThreadComplete()) {
       
        log.debug("### meta ScreenStream not yet written to disk" + flvRecordingMetaDataOfScreen.getFlvRecordingMetaDataId());
        boolean doStop = true;
        while(doStop) {
         
          log.debug("### Stream not yet written Thread Sleep - " + flvRecordingMetaDataOfScreen.getFlvRecordingMetaDataId());
         
          Thread.sleep(100L);
         
          flvRecordingMetaDataOfScreen = flvRecordingMetaDataDaoImpl.getFlvRecordingMetaDataById(flvRecordingMetaDataOfScreen.getFlvRecordingMetaDataId());
         
          if (flvRecordingMetaDataOfScreen.getStreamReaderThreadComplete()) {
            log.debug("### Screen Stream now written Thread continue - " );
            doStop = false;
          }
        }
      }
     
     
      String hashFileFullName = flvRecordingMetaDataOfScreen
          .getStreamName() + "_FINAL_WAVE.wav";
      String outputFullWav = new File(streamFolder, hashFileFullName).getCanonicalPath();

      if (listOfFullWaveFiles.size() == 1) {

        outputFullWav = listOfFullWaveFiles.get(0);

        flvRecordingMetaDataOfScreen
            .setFullWavAudioData(hashFileFullName);

      } else if (listOfFullWaveFiles.size() > 0) {

        String[] argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav);

        log.debug("START mergeAudioToWaves ################# ");
        log.debug(argv_full_sox.toString());
        String iString = "";
        for (int i = 0; i < argv_full_sox.length; i++) {
          iString += argv_full_sox[i] + " ";
        }
        log.debug(iString);
        log.debug("END mergeAudioToWaves ################# ");

        flvRecordingMetaDataOfScreen
            .setFullWavAudioData(hashFileFullName);

        this.flvRecordingMetaDataDaoImpl
            .updateFlvRecordingMetaData(flvRecordingMetaDataOfScreen);

        returnLog.add(ProcessHelper.executeScript("mergeWave",
            argv_full_sox));
      } else {

        // create default Audio to merge it.
        // strip to content length
        String outputWav = streamFolderGeneralName + "one_second.wav";

        // Calculate delta at beginning
        Long deltaTimeMilliSeconds = flvRecording.getRecordEnd()
            .getTime() - flvRecording.getRecordStart().getTime();
        Float deltaPadding = (Float.parseFloat(deltaTimeMilliSeconds
            .toString()) / 1000) - 1;

        String[] argv_full_sox = new String[] { this.getPathToSoX(),
            outputWav, outputFullWav, "pad", "0",
            deltaPadding.toString() };

        log.debug("START generateSampleAudio ################# ");
        String tString = "";
        for (int i = 0; i < argv_full_sox.length; i++) {
          tString += argv_full_sox[i] + " ";
        }
        log.debug(tString);
        log.debug("END generateSampleAudio ################# ");

        flvRecordingMetaDataOfScreen
            .setFullWavAudioData(hashFileFullName);

        this.flvRecordingMetaDataDaoImpl
            .updateFlvRecordingMetaData(flvRecordingMetaDataOfScreen);

        returnLog.add(ProcessHelper.executeScript("mergeWave",
            argv_full_sox));

      }

      // Merge Audio with Video / Calculate resulting FLV

      String inputScreenFullFlv = new File(streamFolder, flvRecordingMetaDataOfScreen.getStreamName() + ".flv").getCanonicalPath();

      String hashFileFullNameFlv = "flvRecording_"
          + flvRecording.getFlvRecordingId() + ".flv";
      String outputFullFlv = streamFolderGeneralName
          + hashFileFullNameFlv;
View Full Code Here

Examples of org.apache.openmeetings.persistence.beans.flvrecord.FlvRecordingMetaData

          "WHERE c.flvRecordingMetaDataId = :flvRecordingMetaDataId";
     
      TypedQuery<FlvRecordingMetaData> query = em.createQuery(hql, FlvRecordingMetaData.class);
      query.setParameter("flvRecordingMetaDataId", flvRecordingMetaDataId);
     
      FlvRecordingMetaData flvRecordingMetaData = null;
      try {
        flvRecordingMetaData = query.getSingleResult();
        } catch (NoResultException ex) {
        }
     
View Full Code Here
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.