java 实现视频转换通用工具类:视频截图-Ffmpeg(四)

来源:互联网 发布:学唱歌入门教程软件 编辑:程序博客网 时间:2024/05/18 18:20

  

java 实现视频转换通用工具类:获取视频元数据信息(一)

 

java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)

 
 

java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)



1.ffmpeg 截图,自定义命令行

/**       *  ffmpeg 截图,自定义命令行       * @param srcVideoPath 源文件       * @param shellLine 自定义shell命令行       * @param tarImagePath 目标文件       * @return       */       public static boolean processFfmpegImage(String srcVideoPath,String shellLine,String tarImagePath) {           if (!checkfile(srcVideoPath)) {         logger.error("【" + srcVideoPath + "】  不存在 !");                return false;              }             List<String> commend = new java.util.ArrayList<String>();             commend.add(ffmpegPath);             commend.add("-i");             commend.add(srcVideoPath);                        commend.add(shellLine);            commend.add(tarImagePath);             try {                 ProcessBuilder builder = new ProcessBuilder();                builder.command(commend);                Process process = builder.start();                InputStream is = process.getErrorStream();                InputStreamReader inputStreamReader = new InputStreamReader(is);                BufferedReader inputBufferedReader = new BufferedReader(                    inputStreamReader);                String line = null;                StringBuilder stringBuilder = new StringBuilder();               while ((line = inputBufferedReader.readLine()) != null) {                  stringBuilder.append(line);                }                inputBufferedReader.close();                inputBufferedReader = null;                inputStreamReader.close();                inputStreamReader = null;                is.close();                is = null;                if (!checkfile(tarImagePath)) {                 logger.info(tarImagePath + " is not exit! processFfmpegImage 转换不成功 !");                   return false;                 }                 return true;             } catch (Exception e) {           logger.error("【" + srcVideoPath + "】  processFfmpegImage 转换不成功 !");               return false;            }       }  


2.ffmpeg 截图,并指定图片的大小

/**      * ffmpeg 截图,并指定图片的大小      * @param srcVideoPath      * @param tarImagePath 截取后图片路径      * @param width 截图的宽      * @param hight 截图的高      * @param offsetValue 表示相对于文件开始处的时间偏移值 可以是分秒      * @param vframes 表示截图的桢数      *       * @return      */      public static boolean processFfmpegImage(String srcVideoPath,String tarImagePath,int width,int hight,float offsetValue,float vframes) {         if (!checkfile(srcVideoPath)) {          logger.error("【" + srcVideoPath + "】  不存在 !");               return false;             }            List<String> commend = new java.util.ArrayList<String>();            commend.add(ffmpegPath);            commend.add("-i");            commend.add(srcVideoPath);                      commend.add("-y");            commend.add("-f");                     commend.add("image2");                      commend.add("-ss");                      commend.add(offsetValue+"");  //在视频的某个插入时间截图,例子为5秒后                    commend.add("-vframes");                      commend.add(vframes + "");  //截图的桢数                    commend.add("-s");                      commend.add(width + "x" +hight); //截图的的大小          commend.add(tarImagePath);            try {            ProcessBuilder builder = new ProcessBuilder();               builder.command(commend);               Process process = builder.start();               doWaitFor(process);                process.destroy();               if (!checkfile(tarImagePath)) {                logger.info(tarImagePath + " is not exit!  processFfmpegImage 转换不成功 !");                    return false;                }                return true;            } catch (Exception e) {          logger.error("【" + srcVideoPath + "】 processFfmpegImage  转换不成功 !");              return false;           }      }  


原创粉丝点击