起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3127|回复: 2

[结贴] 在Bex5里面UI2的java里面是否可执行cmd的命令

[复制链接]

296

主题

813

帖子

3157

积分

论坛元老

Rank: 8Rank: 8

积分
3157
QQ
发表于 2017-4-19 11:44:08 | 显示全部楼层 |阅读模式
在上传完成后执行mp4的元数据转换,ffmpeg出现CMD进程卡死情况,请问是怎么回事?
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.Collections;
  6. import java.util.Comparator;
  7. import java.util.List;
  8. import java.util.UUID;
  9. import java.nio.channels.FileChannel;
  10. import java.io.*;
  11. import javax.servlet.ServletException;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;

  14. import com.justep.biz.client.Action;
  15. import com.justep.biz.client.ActionEngine;
  16. import com.justep.biz.client.ActionResult;
  17. import com.justep.biz.client.ActionUtils;
  18. import com.justep.ui.util.NetUtils;

  19. //@SuppressWarnings("serial")
  20. public class FileUploadAction extends com.justep.ui.impl.JProcessorImpl
  21. {
  22.         //private static final long serialVersionUID = 1L;
  23.         public void doGet(HttpServletRequest request, HttpServletResponse response)
  24.                         throws ServletException, IOException {
  25.                 doPost(request,response);
  26.         }
  27.        
  28.         @SuppressWarnings("resource")
  29.         public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  30.         {
  31.                 //读取配置路径
  32.                 String readPath = "D:/KMS1.1/TEST";
  33.                 String savePath =  "D:/KMS1.1/KMS_Library";
  34.         String folad = "uploads";
  35.         readPath = readPath +File.separator + folad;
  36.                 response.setContentType("text/html;charset=utf-8");
  37.                 String action = request.getParameter("action");
  38.             try
  39.             {
  40.                     if(action.equals("mergeChunks"))
  41.                     {
  42.                             //合并文件
  43.                             //需要合并的文件的目录标记
  44.                             String fileMd5 = request.getParameter("fileMd5");
  45.                             String head_id = request.getParameter("head_id");
  46.                             String target_id = request.getParameter("target_id");
  47.                             String quarter = request.getParameter("quarter");
  48.                             String ext = request.getParameter("ext");
  49.                             String doc_name = request.getParameter("doc_name");
  50.                             String doc_size = request.getParameter("doc_size");
  51.                             String userid = request.getParameter("userid");
  52.                             String username = request.getParameter("username");
  53.                            
  54.                             //读取目录里的所有文件
  55.                             readPath = readPath + File.separator + fileMd5;
  56.                             System.out.println(readPath);
  57.                             File f = new File(readPath);
  58.                             File[] fileArray = f.listFiles(new FileFilter(){
  59.                                     //排除目录只要文件
  60.                                     public boolean accept(File pathname) {
  61.                                             // TODO Auto-generated method stub
  62.                                             if(pathname.isDirectory()){
  63.                                                     return false;
  64.                                             }
  65.                                             return true;
  66.                                     }
  67.                             });

  68.                             //转成集合,便于排序
  69.                             List<File> fileList = new ArrayList<File>(Arrays.asList(fileArray));
  70.                             Collections.sort(fileList,new Comparator<File>() {
  71.                                     public int compare(File o1, File o2) {
  72.                                             // TODO Auto-generated method stub
  73.                                             if(Integer.parseInt(o1.getName()) < Integer.parseInt(o2.getName())){
  74.                                                     return -1;
  75.                                             }
  76.                                             return 1;
  77.                                     }
  78.                             });
  79.                            
  80.                             //UUID.randomUUID().toString()-->随机名
  81.                                 UUID uuid = UUID.randomUUID();
  82.                                 String doc_id = uuid.toString().toUpperCase().replaceAll("-", "");
  83.                 //创建文件夹
  84.                                 savePath = savePath + File.separator +head_id +File.separator + quarter;
  85.                                 File folder = new File(savePath);
  86.                                
  87.                                 if(!folder.exists()){
  88.                                         folder.mkdirs();
  89.                                 }
  90.                                 //文件路径
  91.                                 final String filePath = savePath + File.separator + doc_id+"."+ext;
  92.                                 //factory.setRepository(file);
  93.                                 System.out.println(filePath);
  94.                             File outputFile = new File(filePath);
  95.                             //创建文件
  96.                             outputFile.createNewFile();
  97.                             //输出流
  98.                             FileChannel outChnnel = new FileOutputStream(outputFile).getChannel();
  99.                             //合并
  100.                             FileChannel inChannel;
  101.                             for(File file : fileList){
  102.                                     inChannel = new FileInputStream(file).getChannel();
  103.                                     inChannel.transferTo(0, inChannel.size(), outChnnel);
  104.                                     inChannel.close();
  105.                                     //删除分片
  106.                                     file.delete();
  107.                             }
  108.                             outChnnel.close();
  109.                            
  110.                             //清除上传的缓存文件夹
  111.                             File tempFile = new File(readPath);
  112.                             if(tempFile.isDirectory() && tempFile.exists()){
  113.                                     tempFile.delete();
  114.                             }
  115.                            
  116.                    
  117.                             processMP4(filePath);
  118.                            
  119.                             //插入数据库的明细记录
  120.                             String bSessionID = NetUtils.getBSessionID(request);
  121.                             String language = NetUtils.getLanguage(request);
  122.                             String PROCESS = "/KMS/Library/process/Library/libraryProcess";
  123.                             String ACTIVITY = "mainActivity";
  124.                             String ACTION = "uploadFileAction";
  125.                            
  126.                                 Action action_self = new Action();
  127.                                 action_self.setProcess(PROCESS);
  128.                                 action_self.setActivity(ACTIVITY);
  129.                                 action_self.setName(ACTION);

  130.                                 action_self.setParameter("doc_id", doc_id);
  131.                                 action_self.setParameter("doc_name", doc_name);
  132.                                 action_self.setParameter("doc_size", doc_size);
  133.                                 action_self.setParameter("target_id", target_id);
  134.                                 action_self.setParameter("userid", userid);
  135.                                
  136.                                 action_self.setParameter("username", username);
  137.                                 action_self.setParameter("quarter", quarter);
  138.                                 // 调用动作
  139.                                 ActionResult result = ActionEngine.invokeAction(action_self, ActionUtils.JSON_CONTENT_TYPE, bSessionID, language, null);
  140.                                
  141.                             response.getWriter().write("{"ifExist":1}");
  142.                             //init_MP4(filePath);
  143.                    
  144.                     }
  145.                     else if(action.equals("checkChunk"))
  146.                     {
  147.                             //检查当前分块是否上传成功
  148.                             String fileMd5 = request.getParameter("fileMd5");
  149.                             String chunk = request.getParameter("chunk");
  150.                             String chunkSize = request.getParameter("chunkSize");

  151.                             File checkFile = new File(savePath+"/"+fileMd5+"/"+chunk);

  152.                             //检查文件是否存在,且大小是否一致
  153.                             if(checkFile.exists() && checkFile.length()==Integer.parseInt(chunkSize))
  154.                             {
  155.                                     //上传过
  156.                                     response.getWriter().write("{"ifExist":1}");
  157.                             }
  158.                             else
  159.                             {
  160.                                     //没有上传过
  161.                                     response.getWriter().write("{"ifExist":0}");
  162.                             }
  163.                     }
  164.             }
  165.             catch(Exception e)
  166.             {
  167.                     response.getWriter().write("{"ifExist":-1}");
  168.                     e.printStackTrace();
  169.             }
  170.         }
  171.        
  172.         private  void init_MP4(String oldfilepath) {       
  173.                 List<String> commend = new ArrayList<String>();
  174.                 commend.add("D:\\ffmpeg\\bin\\qt-faststart");               
  175.                 commend.add(oldfilepath);
  176.                 commend.add(oldfilepath);

  177.                          System.out.println(commend.toString());
  178.                         ProcessBuilder builder = new ProcessBuilder(commend);
  179.                          builder.command(commend);
  180.                         try {
  181.                                 builder.start();
  182.                         } catch (IOException e) {
  183.                                 // TODO 自动生成的 catch 块
  184.                                 e.printStackTrace();
  185.                         }
  186.                        
  187.         }
  188.        
  189.         private static  void processMP4(String oldfilepath) {       
  190.                 List<String> commend = new ArrayList<String>();
  191.                 commend.add("D:\\ffmpeg\\bin\\ffmpeg");
  192.                 commend.add("-i");
  193.                 commend.add(oldfilepath);
  194.                 commend.add("-y");
  195.                 commend.add("-metadata");
  196.                 commend.add("title="h"");
  197.                 commend.add("-metadata");
  198.                 commend.add("comment="h"");
  199.                 commend.add("-c:v");
  200.                 commend.add("libx264");
  201.                 commend.add("-preset");
  202.                 commend.add("superfast");
  203.                 commend.add("-x264opts");
  204.                 commend.add("keyint=25");
  205.                 commend.add("-r");
  206.                 commend.add("15");
  207.                 commend.add("-b:v");
  208.                 commend.add("500k");
  209.                 commend.add("-c:a");
  210.                 commend.add("aac");
  211.                 commend.add("-strict");
  212.                 commend.add("experimental");
  213.                 commend.add("-ar");
  214.                 commend.add("44100");
  215.                 commend.add("-ac");
  216.                 commend.add("2");
  217.                 commend.add("-b:a");
  218.                 commend.add("64k");
  219. //                commend.add("-vf");
  220. //                commend.add(""movie=aa.png [watermark]; [in][watermark] overlay=10:10 [out]"");
  221.                 commend.add("-f");
  222.                 commend.add("mp4");
  223.                 commend.add("D:\\99999.mp4");
  224.                
  225.                 System.out.println(commend.toString());
  226.                         try
  227.                         {
  228.                                 ProcessBuilder builder = new ProcessBuilder(commend);
  229.                                 builder.command(commend);
  230.                                 builder.start();
  231.                                 System.out.println("1232134");
  232.                         } catch (IOException e) {
  233.                                 // TODO 自动生成的 catch 块
  234.                                 e.printStackTrace();
  235.                         }               
  236.         }
  237. }
复制代码



遥睇燕云十六州,史诗全译骇鲁迅, 商量旧学几经秋。释老渊源正魏收。 榜加糖法成专史,南北齐名真忝窃, 弥勒奇书释去楼。乍闻乘化重悲忧。

296

主题

813

帖子

3157

积分

论坛元老

Rank: 8Rank: 8

积分
3157
QQ
 楼主| 发表于 2017-4-19 11:46:38 | 显示全部楼层
转换主要是运用到边播放边下载。
遥睇燕云十六州,史诗全译骇鲁迅, 商量旧学几经秋。释老渊源正魏收。 榜加糖法成专史,南北齐名真忝窃, 弥勒奇书释去楼。乍闻乘化重悲忧。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-19 15:20:39 | 显示全部楼层
UI2下的.j就是servlet

看标准的servlet中的处理
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-23 22:47 , Processed in 0.072338 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表