记录使用Java的Runtime与Process后台调用ffmpeg转换文件出现的问题

在工作中,有用到在后台用ffmpeg转换文件格式,然后前台收到成功信息之后,访问文件出现错误的问题,后来发现是因为在Action中调用转换文件的时候,传递给前台处理结果,其实文件还没转换完成。

这时候可以使用process.waitfor()让当前线程等子线程(执行控制台命令命令的线程)结束之后再向下执行。或者可以使用proce.getErrorStream 然后输出这个流的形式 来让文件转换完成之后再进行返回。(但是这样操作会造成性能的损失,我们这边这样操作主要是客户认为这种前台收到处理成功,却无法访问文件是一种BUG)

示意代码如下:

            Runtime runtime = Runtime.getRuntime();  
            Process proce = null;  
            String cutCmd = "D:/ffmpeg.exe -i "+oldfilepath+" 
-y -ab 32 -ar 22050 -b 800000 -s 640*480 "+toPath;
            proce = runtime.exec(cutCmd);
            InputStream erro = proce.getErrorStream();
            byte[] a = new byte[1024];
            int j = 0;
            while((j=erro.read(a))>-1){
            	System.out.println(new String(a));
            }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值