Package org.apache.openmeetings.db.entity.record

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


          FlvRecording[] recordingListItems = new FlvRecording[recordingList
              .size()];
          int count = 0;
          for (Iterator<FlvRecording> it = recordingList.iterator(); it
              .hasNext();) {
            FlvRecording flvRecording = it.next();
            recordingListItems[count] = flvRecording;
            count++;
          }

          return recordingListItems;
View Full Code Here


          FlvRecording[] recordingListItems = new FlvRecording[recordingList
              .size()];
          int count = 0;
          for (Iterator<FlvRecording> it = recordingList.iterator(); it
              .hasNext();) {
            FlvRecording flvRecording = it.next();
            recordingListItems[count] = flvRecording;
            count++;
          }

          return recordingListItems;
View Full Code Here

  private FlvRecordingLogDao logDao;

  private String FFMPEG_MAP_PARAM = ":";

  public void startConversion(Long flvRecordingId) {
    FlvRecording flvRecording = null;
    try {
      if (isUseOldStyleFfmpegMap()) {
        FFMPEG_MAP_PARAM = ".";
      }

      flvRecording = recordingDao.get(flvRecordingId);
      log.debug("flvRecording " + flvRecording.getFlvRecordingId());

      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", //
          "-map", "0" + FFMPEG_MAP_PARAM + "0", //
          "-map", "1" + FFMPEG_MAP_PARAM + "0", //
          outputFullFlv };

      returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_fullFLV));

      flvRecording.setFileHash(hashFileFullNameFlv);

      // Extract first Image for preview purpose
      // ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
      // 320x240 movie.jpg

      String hashFileFullNameJPEG = "flvRecording_" + flvRecording.getFlvRecordingId() + ".jpg";
      String outPutJpeg = streamFolderGeneralName + hashFileFullNameJPEG;

      flvRecording.setPreviewImage(hashFileFullNameJPEG);

      String[] argv_previewFLV = new String[] { //
          getPathToFFMPEG(), "-y",//
          "-i", outputFullFlv, //
          "-vcodec", "mjpeg", //
          "-vframes", "1", "-an", //
          "-f", "rawvideo", //
          "-s", flvWidth + "x" + flvHeight, //
          outPutJpeg };

      returnLog.add(ProcessHelper.executeScript("previewFullFLV", argv_previewFLV));

      String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi";
      String alternateDownloadFullName = streamFolderGeneralName + alternateDownloadName;

      String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, "-vcodec",
          "copy", alternateDownloadFullName };

      returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));

      flvRecording.setAlternateDownload(alternateDownloadName);

      updateDuration(flvRecording);
      convertToMp4(flvRecording, returnLog);
      flvRecording.setStatus(FlvRecording.Status.PROCESSED);

      for (ConverterProcessResult returnMap : returnLog) {
        logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
      }

      // Delete Wave Files
      for (String fileName : listOfFullWaveFiles) {
        File audio = new File(fileName);
        if (audio.exists()) {
          audio.delete();
        }
      }

    } catch (Exception err) {
      log.error("[startConversion]", err);
      flvRecording.setStatus(FlvRecording.Status.ERROR);
    }
    recordingDao.update(flvRecording);
  }
View Full Code Here

  public void startConversion(Long flvRecordingId) {
    startConversion(flvRecordingId, false, new ReConverterParams());
  }

  public void startConversion(Long flvRecordingId, boolean reconversion, ReConverterParams rcv) {
    FlvRecording flvRecording = null;
    try {
      flvRecording = recordingDao.get(flvRecordingId);
      log.debug("flvRecording " + flvRecording.getFlvRecordingId());

      List<ConverterProcessResult> returnLog = new ArrayList<ConverterProcessResult>();
      List<String> listOfFullWaveFiles = new LinkedList<String>();
      File streamFolder = getStreamFolder(flvRecording);
      List<FlvRecordingMetaData> metaDataList = metaDataDao.getAudioMetaDataByRecording(flvRecording.getFlvRecordingId());
 
      stripAudioFirstPass(flvRecording, returnLog, listOfFullWaveFiles, streamFolder, metaDataList);
   
      // Merge Wave to Full Length
      File streamFolderGeneral = getStreamsHibernateDir();

      String hashFileFullName = "INTERVIEW_" + flvRecording.getFlvRecordingId() + "_FINAL_WAVE.wav";
      String outputFullWav = streamFolder.getAbsolutePath() + File.separatorChar + hashFileFullName;
      deleteFileIfExists(outputFullWav);

      if (listOfFullWaveFiles.size() == 1) {
        outputFullWav = listOfFullWaveFiles.get(0);
      } else if (listOfFullWaveFiles.size() > 0) {
        String[] argv_full_sox;
        if (reconversion) {
          argv_full_sox = mergeAudioToWaves(listOfFullWaveFiles, outputFullWav, metaDataList, rcv);
        } else {
          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
        File outputWav = new File(streamFolderGeneral, "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.getCanonicalPath(), outputFullWav, "pad", "0", deltaPadding.toString() };

        returnLog.add(ProcessHelper.executeScript("generateSampleAudio", argv_full_sox));
      }
      // Default Image for empty interview video pods
      final File defaultInterviewImageFile = new File(streamFolderGeneral, "default_interview_image.png");

      if (!defaultInterviewImageFile.exists()) {
        throw new Exception("defaultInterviewImageFile does not exist!");
      }

      final int flvWidth = 320;
      final int flvHeight = 260;
      final int frameRate = 25;
      // Merge Audio with Video / Calculate resulting FLV

      String[] pods = new String[2];
      boolean found = false;
      for (FlvRecordingMetaData meta : metaDataList) {
        File flv = new File(streamFolder, meta.getStreamName() + ".flv");

        Integer pod = meta.getInteriewPodId();
        if (flv.exists() && pod != null && pod > 0 && pod < 3) {
          String path = flv.getCanonicalPath();
          /*
           * CHECK FILE:
           * ffmpeg -i rec_316_stream_567_2013_08_28_11_51_45.flv -v error -f null file.null
           */
          String[] args = new String[] {getPathToFFMPEG(), "-y"
              , "-i", path
              , "-an" // only input files with video will be treated as video sources
              , "-v", "error"
              , "-f", "null"
              , "file.null"};
          ConverterProcessResult r = ProcessHelper.executeScript("checkFlvPod_" + pod , args);
          returnLog.add(r);
          if ("0".equals(r.getExitValue())) {
            //TODO need to remove smallest gap
            long diff = diff(meta.getRecordStart(), meta.getFlvRecording().getRecordStart());
            if (diff != 0L) {
              // stub to add
              // ffmpeg -y -loop 1 -i /home/solomax/work/openmeetings/branches/3.0.x/dist/red5/webapps/openmeetings/streams/hibernate/default_interview_image.jpg -filter_complex '[0:0]scale=320:260' -c:v libx264 -t 00:00:29.059 -pix_fmt yuv420p out.flv
              File podFB = new File(streamFolder, meta.getStreamName() + "_pod_" + pod + "_blank.flv");
              String podPB = podFB.getCanonicalPath();
              String[] argsPodB = new String[] { getPathToFFMPEG(), "-y" //
                  , "-loop", "1", "-i", defaultInterviewImageFile.getCanonicalPath() //
                  , "-filter_complex", String.format("[0:0]scale=%1$d:%2$d", flvWidth, flvHeight) //
                  , "-c:v", "libx264" //
                  , "-t", formatMillis(diff) //
                  , "-pix_fmt", "yuv420p" //
                  , podPB };
              returnLog.add(ProcessHelper.executeScript("blankFlvPod_" + pod , argsPodB));
             
              //ffmpeg -y -i out.flv -i rec_15_stream_4_2014_07_15_20_41_03.flv -filter_complex '[0:0]setsar=1/1[sarfix];[1:0]scale=320:260,setsar=1/1[scale];[sarfix] [scale] concat=n=2:v=1:a=0 [v]' -map '[v]'  output1.flv
              File podF = new File(streamFolder, meta.getStreamName() + "_pod_" + pod + ".flv");
              String podP = podF.getCanonicalPath();
              String[] argsPod = new String[] { getPathToFFMPEG(), "-y"//
                  , "-i", podPB //
                  , "-i", path //
                  , "-filter_complex", String.format("[0:0]setsar=1/1[sarfix];[1:0]scale=%1$d:%2$d,setsar=1/1[scale];[sarfix] [scale] concat=n=2:v=1:a=0 [v]", flvWidth, flvHeight) //
                  , "-map", "[v]" //
                  , podP };
              returnLog.add(ProcessHelper.executeScript("shiftedFlvPod_" + pod , argsPod));
 
              pods[pod - 1] = podP;
            } else {
              pods[pod - 1] = path;
            }
          }
          found = true;
        }
      }
      if (!found) {
        ConverterProcessResult r = new ConverterProcessResult();
        r.setProcess("CheckFlvFilesExists");
        r.setError("No valid pods found");
        returnLog.add(r);
        return;
      }
      boolean shortest = false;
      List<String> args = new ArrayList<String>();
      args.add(getPathToFFMPEG());
      args.add("-y");
      for (int i = 0; i < 2; ++i) {
        /*
         * INSERT BLANK INSTEAD OF BAD PAD:
         * ffmpeg -loop 1 -i default_interview_image.jpg -i rec_316_stream_569_2013_08_28_11_51_45.flv -filter_complex '[0:v]scale=320:260,pad=2*320:260[left];[1:v]scale=320:260[right];[left][right]overlay=main_w/2:0' -shortest -y out4.flv
         *
         * JUST MERGE:
         * ffmpeg -i rec_316_stream_569_2013_08_28_11_51_45.flv -i rec_316_stream_569_2013_08_28_11_51_45.flv -filter_complex '[0:v]scale=320:260,pad=2*320:260[left];[1:v]scale=320:260[right];[left][right]overlay=main_w/2:0' -y out4.flv
         */
        if (pods[i] == null) {
          shortest = true;
          args.add("-loop"); args.add("1");
          args.add("-i"); args.add(defaultInterviewImageFile.getCanonicalPath());
        } else {
          args.add("-i"); args.add(pods[i]);
        }
      }
      args.add("-i"); args.add(outputFullWav);
      args.add("-ar"); args.add("22050");
      args.add("-ab"); args.add("32k");
      args.add("-filter_complex");
      args.add(String.format("[0:v]scale=%1$d:%2$d,pad=2*%1$d:%2$d[left];[1:v]scale=%1$d:%2$d[right];[left][right]overlay=main_w/2:0%3$s"
          , flvWidth, flvHeight, shortest ? ":shortest=1" : ""));
      if (shortest) {
        args.add("-shortest");
      }
      args.add("-map"); args.add("0:0");
      args.add("-map"); args.add("1:0");
      args.add("-map"); args.add("2:0");
      args.add("-r"); args.add("" + frameRate);
      args.add("-qmax"); args.add("1");
      args.add("-qmin"); args.add("1");
      args.add("-y");
      String hashFileFullNameFlv = "flvRecording_" + flvRecording.getFlvRecordingId() + ".flv";
      String outputFullFlv = new File(streamFolderGeneral, hashFileFullNameFlv).getCanonicalPath();
      args.add(outputFullFlv);
      // TODO additional flag to 'quiet' output should be added
      returnLog.add(ProcessHelper.executeScript("generateFullBySequenceFLV", args.toArray(new String[]{})));

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

      flvRecording.setFileHash(hashFileFullNameFlv);

      // Extract first Image for preview purpose
      // ffmpeg -i movie.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s
      // 320x240 movie.jpg

      String hashFileFullNameJPEG = "flvRecording_" + flvRecording.getFlvRecordingId() + ".jpg";
      String outPutJpeg = new File(streamFolderGeneral, hashFileFullNameJPEG).getCanonicalPath();
      deleteFileIfExists(outPutJpeg);

      flvRecording.setPreviewImage(hashFileFullNameJPEG);

      String[] argv_previewFLV = new String[] { //
          getPathToFFMPEG(), "-y", //
          "-i", outputFullFlv, //
          "-vcodec", "mjpeg", //
          "-vframes", "100", "-an", //
          "-f", "rawvideo", //
          "-s", (2 * flvWidth) + "x" + flvHeight, //
          outPutJpeg };

      returnLog.add(ProcessHelper.executeScript("generateFullFLV", argv_previewFLV));

      String alternateDownloadName = "flvRecording_" + flvRecording.getFlvRecordingId() + ".avi";
      String alternateDownloadFullName = new File(streamFolderGeneral, alternateDownloadName).getCanonicalPath();
      deleteFileIfExists(alternateDownloadFullName);

      String[] argv_alternateDownload = new String[] { getPathToFFMPEG(), "-y", "-i", outputFullFlv, alternateDownloadFullName };

      returnLog.add(ProcessHelper.executeScript("alternateDownload", argv_alternateDownload));

      flvRecording.setAlternateDownload(alternateDownloadName);

      updateDuration(flvRecording);
      convertToMp4(flvRecording, returnLog);
      flvRecording.setStatus(FlvRecording.Status.PROCESSED);

      logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());

      for (ConverterProcessResult returnMap : returnLog) {
        logDao.addFLVRecordingLog("generateFFMPEG", flvRecording, returnMap);
      }

      // Delete Wave Files
      for (String fileName : listOfFullWaveFiles) {
        File audio = new File(fileName);
        if (audio.exists()) {
          audio.delete();
        }
      }
    } catch (Exception err) {
      log.error("[startConversion]", err);
      flvRecording.setStatus(FlvRecording.Status.ERROR);
    }
    recordingDao.update(flvRecording);
  }
View Full Code Here

    }
  }

  public void addRecordingByStreamId(IConnection conn, String streamId, Client rcl, Long flvRecordingId) {
    try {
      FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);

      Date now = new Date();

      // If its the recording client we need another type of Meta Data
      if (rcl.getIsScreenClient()) {
        if (rcl.getFlvRecordingId() != null && rcl.isScreenPublishStarted()) {
          String streamName_Screen = generateFileName(flvRecordingId, rcl.getStreamPublishName().toString());

          log.debug("##############  ADD SCREEN OF SHARER :: " + rcl.getStreamPublishName());

          Long flvRecordingMetaDataId = metaDataDao.addFlvRecordingMetaData(flvRecordingId, rcl.getFirstname()
              + " " + rcl.getLastname(), now, false, false, true, streamName_Screen, rcl.getInterviewPodId());

          // Start FLV Recording
          recordShow(conn, rcl.getStreamPublishName(), streamName_Screen, flvRecordingMetaDataId, true,
              flvRecording.getIsInterview());

          // Add Meta Data
          rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);

          sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
        }
      } else if (rcl.getIsAVClient()
          && (rcl.getAvsettings().equals("av") || rcl.getAvsettings().equals("a") || rcl.getAvsettings().equals("v"))) {
        // if the user does publish av, a, v
        // But we only record av or a, video only is not interesting

        String streamName = generateFileName(flvRecordingId, String.valueOf(rcl.getBroadCastID()).toString());

        // Add Meta Data
        boolean isAudioOnly = false;
        if (rcl.getAvsettings().equals("a")) {
          isAudioOnly = true;
        }
        boolean isVideoOnly = false;
        if (rcl.getAvsettings().equals("v")) {
          isVideoOnly = true;
        }

        Long flvRecordingMetaDataId = metaDataDao.addFlvRecordingMetaData(flvRecordingId, rcl.getFirstname() + " "
            + rcl.getLastname(), now, isAudioOnly, isVideoOnly, false, streamName, rcl.getInterviewPodId());

        // Start FLV recording
        recordShow(conn, String.valueOf(rcl.getBroadCastID()).toString(), streamName, flvRecordingMetaDataId, false,
            flvRecording.getIsInterview());

        rcl.setFlvRecordingMetaDataId(flvRecordingMetaDataId);

        sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
View Full Code Here

    try {
      Long users_id = sessiondataDao.checkSession(SID);
      if (AuthLevelUtil.hasUserLevel(userDao.getRights(users_id))) {
        log.debug("updateFileOrFolderName " + flvRecordingId);

        FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);

        flvRecording.setPreviewImage(null);

        flvRecording.setProgressPostProcessing(0);

        flvRecordingDaoImpl.update(flvRecording);

        if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
          flvRecorderConverterTask.startConversionThread(flvRecordingId);
        } else {
          flvInterviewReConverterTask.startConversionThread(flvRecordingId, leftSideLoud, rightSideLoud, leftSideTime,
              rightSideTime);
        }
View Full Code Here

      Client currentClient = sessionManager.getClientByStreamId(current.getClient().getId(), null);
      Long room_id = currentClient.getRoom_id();

      Date now = new Date();

      FlvRecording flvRecording = new FlvRecording();

      flvRecording.setFileHash("");
      flvRecording.setFileName(roomRecordingName);
      flvRecording.setInsertedBy(currentClient.getUser_id());
      flvRecording.setFolder(false);
      flvRecording.setIsImage(false);
      flvRecording.setIsPresentation(false);
      flvRecording.setIsRecording(true);
      flvRecording.setComment(comment);
      flvRecording.setIsInterview(isInterview);

      flvRecording.setRoom_id(room_id);
      flvRecording.setRecordStart(now);

      flvRecording.setWidth(currentClient.getVWidth());
      flvRecording.setHeight(currentClient.getVHeight());

      flvRecording.setOwnerId(currentClient.getUser_id());
      flvRecording.setStatus(FlvRecording.Status.PROCESSING);
      flvRecording = recordingDao.update(flvRecording);
      // Receive flvRecordingId
      Long flvRecordingId = flvRecording.getFlvRecordingId();
      log.debug("##REC:: recording created by USER: " + currentClient.getUser_id());

      // Update Client and set Flag
      currentClient.setIsRecording(true);
      currentClient.setFlvRecordingId(flvRecordingId);
View Full Code Here

        currentClient.setIsRecording(false);

        sessionManager.updateClientByStreamId(currentClient.getStreamid(), currentClient, false, null);
        log.debug("flvRecorderConverterTask ", flvRecorderConverterTask);

        FlvRecording flvRecording = flvRecordingDaoImpl.get(flvRecordingId);
        if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
          flvRecorderConverterTask.startConversionThread(flvRecordingId);
        } else {
          flvInterviewConverterTask.startConversionThread(flvRecordingId);
        }
      }
View Full Code Here

              checkRecordingFile(hibernateDir, rec.getPreviewImage(), rec.getDeleted(), params, cleanup);
            }
            long invalid = 0;
            for (File f : hibernateDir.listFiles()) {
              if (f.isFile() && f.getName().endsWith(".flv")) {
                FlvRecording rec = recordDao.getRecordingByHash(f.getName());
                if (rec == null) {
                  cleanUpFile(invalid, cleanup, f);
                  String name = f.getName().substring(0, f.getName().length() - 5);
                  cleanUpFile(invalid, cleanup, new File(hibernateDir, name + ".avi"));
                  cleanUpFile(invalid, cleanup, new File(hibernateDir, name + ".jpg"));
View Full Code Here

public class RecordingItemPanel extends RecordingPanel {
  private static final long serialVersionUID = 1L;

  public RecordingItemPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
    super(id, model);
    FlvRecording r = model.getObject();
    long errorCount = getBean(FlvRecordingLogDao.class).countErrors(r.getFlvRecordingId());
    boolean visible = errorCount != 0 || (Status.PROCESSING != r.getStatus() && !isRecordingExists(r.getFileHash() + MP4_EXTENSION));
    item.add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
      private static final long serialVersionUID = 1L;

      @Override
      protected void onEvent(AjaxRequestTarget target) {
View Full Code Here

TOP

Related Classes of org.apache.openmeetings.db.entity.record.FlvRecording

Copyright © 2018 www.massapicom. 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.