Linux环境下java调用ffmpeg命令进行视频转码
2015-03-26 17:50
561 查看
1.这是在Linux系统下的代码,我运行后可以转换成功: import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.io.*; import java.lang.*; import java.util.*; import java.text.*; import java.net.*; public class Test { public static void main(String[] args) { List<String> commend = new ArrayList<String>(); commend.add("/usr/local/ffmpeg2/bin/./ffmpeg"); commend.add("-i"); commend.add("/opt/spzh/yysp.avi"); commend.add("-ab"); commend.add("128"); commend.add("-acodec"); commend.add("libfaac"); commend.add("-ac"); commend.add("1"); commend.add("-ar"); commend.add("22050"); commend.add("-r"); commend.add("24"); commend.add("-y"); commend.add("/opt/spzh/out/yysp18.flv"); StringBuffer test=new StringBuffer(); for(int i=0;i<commend.size();i++) test.append(commend.get(i)+" "); System.out.println(test); try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(test.toString()); InputStream stderr = proc.getErrorStream(); InputStreamReader isr = new InputStreamReader(stderr); BufferedReader br = new BufferedReader(isr); String line = null; while ( (line = br.readLine()) != null); } catch (IOException e) { e.printStackTrace(); } System.out.println("视频转换成功"); } }
2.这是在Windows下面的代码,在网上找了很多资料说这种在Linux中也能用,但是我自己在Linux系统下运行改代码时发现,该代码视频转换的时候只能转换一部分,举个例子:原视频有7M,直接在Linux下执行装换命令是正常的,而用该java代码执行该命令时视频只能转换1M;而且转换成MP4的时候,视频无法播放。
import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.io.*; import java.lang.*; import java.util.*; import java.text.*; import java.net.*; public class Test1 { public static void main(String[] args) { List<String> commend = new ArrayList<String>(); commend.add("/usr/local/ffmpeg2/bin/./ffmpeg"); commend.add("-i"); commend.add("/opt/spzh/yysp.avi"); commend.add("-ab"); commend.add("128"); commend.add("-acodec"); commend.add("libfaac"); commend.add("-ac"); commend.add("1"); commend.add("-ar"); commend.add("22050"); commend.add("-r"); commend.add("24"); commend.add("-y"); commend.add("/opt/spzh/out/yysp22.flv"); StringBuffer test=new StringBuffer(); for(int i=0;i<commend.size();i++) test.append(commend.get(i)+" "); System.out.println(test); ProcessBuilder builder = new ProcessBuilder(); builder.command(commend); try { builder.redirectErrorStream(true); builder.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("视频转换成功"); } }
x
下面是转换为flv格式和mp4格式的Linux命令:
(1)转flv
./ffmpeg -i /opt/spzh/yysp.avi -ab 128 -acodec libfaac -ac 1 -ar 22050 -r 24 -y /opt/spzh/out/yysp9.flv
(2)转mp4
./ffmpeg -i /opt/spzh/yysp.avi -f mp4 -acodec libfaac -vcodec libxvid -qscale 7 -dts_delta_threshold 1 -y /opt/spzh/out/yysp8.mp4
相关文章推荐
- Java调用linux命令ffmpeg视频转码
- 使用Java调用linux命令ffmpeg视频转码
- Java调用linux命令ffmpeg视频转码
- linux下的java调用ffmpeg进行视频转码
- Java调用ffmpeg进行视频转码
- Java调用ffmpeg进行视频转码
- Java 调用FFMPEG命令进行视频格式转换 (windows环境)
- Java调用ffmpeg进行视频转码
- java 调用 ffmpeg 进行视频转换以及截图
- java调用ffmpeg,mencoder进行视频转换,读取时长等
- Java 调用 FFMPEG 命令时用 url 作为输入源,Linux 下出现 “no such file or directory” 问题的解决
- 使用java调用FFMPEG进行转码
- oracle 调用java执行系统命令(linux环境)
- java 调用 ffmpeg 进行视频转换以及截图
- 使用Java调用linux命令ffmpeg
- Java 调用 FFMPEG 命令时用 url 作为输入源,Linux 下出现 “no such file or directory” 问题的解决
- linux系统部署ffmpeg视频转码环境及使用方法
- java 调用 ffmpeg 进行视频转换以及截图
- linux下进行视频解码时调用ffmpeg的动态库出现error: ‘UINT64_C’ was not declared in this scope
- 解决H5播放视频黑屏只有声音没有图像的问题,Java调用ffmpeg转码成h264的mp4格式