有人知道在 java中使用ffmpeg转码时,怎么判断转码是否已经结束了呢

问题描述

有人知道在 java中使用ffmpeg转码时,怎么判断转码是否已经结束了呢
if(!strFileType.equals("".mp4"")&&!strFileType.equals("".flv"")&&!strFileType.equals("".mov""))
{
commend.add(""E:ffmpegbinffmpeg.exe"");

commend.add(""-i"");
commend.add(resourcePath);
commend.add(""-ab"");
commend.add(""56"");
commend.add(""-ar"");
commend.add(""22050"");
commend.add(""-qscale"");
commend.add(""8"");
commend.add(""-r"");
commend.add(""15"");
commend.add(""-s"");
commend.add(""600x500"");
commend.add(ServletActionContext.getServletContext().getRealPath(""/videos"")+""//""+savename+"".flv"");

                      vE.setVEUrl(savename+"".flv"");                                              try {                            ProcessBuilder builder = new ProcessBuilder(commend);                               Process p=builder.start();         //p.waitFor();好像不行啊?。。阻塞了貌似                        }                    catch (IOException e) {                        e.printStackTrace();                    }

解决方案

看这个例子
http://blog.chinaunix.net/uid-25885064-id-3396371.html

解决方案二:
用Process.waitFor等待进程结束。

解决方案三:
如果不想阻塞,那么就可以开个线程什么的监控进程对象是否退出。

时间: 2024-08-03 22:51:12

有人知道在 java中使用ffmpeg转码时,怎么判断转码是否已经结束了呢的相关文章

服务器-在java中使用ffmpeg的问题

问题描述 在java中使用ffmpeg的问题 我要实现的是微信公众号网页中用户可以把手机录的视频上传到服务器,目前存在的问题是ios的mov格式视频在安卓手机端无法通过video标签播放. 于是我在网上找到可以通过java调用ffmpeg.exe实现转码的方法,但是由于对ffmpeg不熟悉,故而有一些问题不太明白. 1.html5上传文件可以通过二进制流来上传,数据到服务器后写成文件.然而ffmpeg肯定也是需要读取文件然后解码.再编码.....,那么我可以直接调用ffmpeg来接收html5上

java 使用变量-java 中使用变量之前是不是一定得判断是否为空?

问题描述 java 中使用变量之前是不是一定得判断是否为空? java 中使用变量之前是不是一定得判断是否为空? java 中使用变量之前是不是一定得判断是否为空? 解决方案 Java 中判断 String 变量为空的条件 解决方案二: 这个要视情况而定了.如果你定义的时候给了初始值,并且在程序运行过程中,你确定没有其他地方该对象进行null赋值,那么就不需要判断了. 如果你不确定,那么最好在使用前判断下,避免空指针异常 解决方案三: 其实从安全性考虑,无论何时,只要使用了该变量都最好判断一下,

java中form表单提交时Action传入不同的对象

问题描述 java中form表单提交时Action传入不同的对象 如题 在我点保存的时候进入action时传参(参数是实体类),参数有可能是不同的实体类, 解决方案 使用hashmap,hashmap的key是属性,value是属性值.在服务器端通过反射给属性赋值/取值/遍历属性. 解决方案二: 可以通过jquery $(""#id"").attr(""action""xxxxx"")然后再$("

java中循环遍历数组操作时跳出循环问题

问题描述 java中循环遍历数组操作时跳出循环问题 在遍历数组时,对数组中的值进行比较的时候,如果不是数组内的元素要跳出循环 解决方案 可以啊,直接用break就可以跳出循环了. for (int x : arr1) { bool b = false; for (int y: arr2) { if (x == y) { b = true; break; } } if (!b) y不属于arr1 } 解决方案二: 难理解遍历数组怎么会出现不是数组的元素,实现跳出循环使用break就行了 解决方案三

java中使用TDES算法实现身份认证的源码

问题描述 谁给我个java中使用TDES算法实现身份认证的源码啊,本人第一次接触加密,求高人指点

java中在调用一个方法时,堆和栈是如何分配的?

问题描述 如题.java一个类中方法太多,会有什么负面影响? 解决方案 解决方案二:看<深入Java虚拟机>第二版第五章解决方案三:一个类中方法过多,会造成系统分层困难,耦合度会比较大!~解决方案四:还没有那么深入,帮顶.祝楼主好运

图片-关于java中释放资源和垃圾回收的问题

问题描述 关于java中释放资源和垃圾回收的问题 后面的ps=null:是为了加速回收吗?什么叫释放资源,感觉有点抽象.可不可以直接=null来回收,为啥要释放资源后回收.求大牛们帮帮我,感激不尽 解决方案 Java中资源回收机制是,一直判断对象是否被使用,在对象在未被使用后会归入回收的行列...当对象被置为null时代表明确告诉系统该对象不再使用,系统就会优先去回收 解决方案二: ps 等于空的赋值,一般是为了防止 ps 被再次使用.因为它已经关闭了! 解决方案三: obj = null,只是

Java中JVM虚拟机详解

1. 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上

Java中的向前引用

所谓向前引用,就是在定义类.接口.方法.变量之前使用它们,例如, class MyClass { void method() { System.out.println(myvar); } String myvar = "var value"; } myvar在method方法后定义,但method方法可以先使用该变量.在很多语言,如C++,是需要提前定义的,而Java已经允许了向前引用.不过在使用向前引用时可能会容易犯一些错误.例如,下面的代码. class MyClass { int