问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

急急急!!!java 用ffmpeg将上传的视频转成 .mp4 .ogg .webm 3种格式的...

发布网友 发布时间:2022-04-22 22:27

我来回答

2个回答

热心网友 时间:2022-04-16 02:09

import java.io.File;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class ConvertVideo {

private final static String PATH = "c:\\ffmpeg\\input\\c.mp4";

public static void main(String[] args) {
if (!checkfile(PATH)) {
System.out.println(PATH + " is not file");
return;
}
if (process()) {
System.out.println("ok");
}
}

private static boolean process() {
int type = checkContentType();
boolean status = false;
if (type == 0) {
System.out.println("直接将文件转为flv文件");
status = processFLV(PATH);// 直接将文件转为flv文件
} else if (type == 1) {
String avifilepath = processAVI(type);
if (avifilepath == null)
return false;// avi文件没有得到
status = processFLV(avifilepath);// 将avi转为flv
}
return status;
}

private static int checkContentType() {
String type = PATH.substring(PATH.lastIndexOf(".") + 1, PATH.length())
.toLowerCase();
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
if (type.equals("avi")) {
return 0;
} else if (type.equals("mpg")) {
return 0;
} else if (type.equals("wmv")) {
return 0;
} else if (type.equals("3gp")) {
return 0;
} else if (type.equals("mov")) {
return 0;
} else if (type.equals("mp4")) {
return 0;
} else if (type.equals("asf")) {
return 0;
} else if (type.equals("asx")) {
return 0;
} else if (type.equals("flv")) {
return 0;
}
// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),
// 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
else if (type.equals("wmv9")) {
return 1;
} else if (type.equals("rm")) {
return 1;
} else if (type.equals("rmvb")) {
return 1;
}
return 9;
}

private static boolean checkfile(String path) {
File file = new File(path);
if (!file.isFile()) {
return false;
}
return true;
}

// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
private static String processAVI(int type) {
List<String> commend = new ArrayList<String>();
commend.add("c:\\ffmpeg\\mencoder");
commend.add(PATH);
commend.add("-oac");
commend.add("lavc");
commend.add("-lavcopts");
commend.add("acodec=mp3:abitrate=64");
commend.add("-ovc");
commend.add("xvid");
commend.add("-xvidencopts");
commend.add("bitrate=600");
commend.add("-of");
commend.add("avi");
commend.add("-o");
commend.add("c:\\ffmpeg\\output\\a.avi");
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.start();
return "c:\\ffmpeg\\output\\a.avi";
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private static boolean processFLV(String oldfilepath) {

if (!checkfile(PATH)) {
System.out.println(oldfilepath + " is not file");
return false;
}

// 文件命名
Calendar c = Calendar.getInstance();
String savename = String.valueOf(c.getTimeInMillis())+ Math.round(Math.random() * 100000);
List<String> commend = new ArrayList<String>();
commend.add("c:\\ffmpeg\\ffmpeg");
commend.add("-i");
commend.add(oldfilepath);
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("c:\\ffmpeg\\output\\a.flv");

try {
Runtime runtime = Runtime.getRuntime();
Process proce = null;
String cmd = "";
String cut = " c:\\ffmpeg\\ffmpeg.exe -i "
+ oldfilepath
+ " -y -f image2 -ss 8 -t 0.001 -s 600x500 c:\\ffmpeg\\output\\"
+ "a.jpg";
String cutCmd = cmd + cut;
proce = runtime.exec(cutCmd);
ProcessBuilder builder = new ProcessBuilder(commend);
builder.command(commend);
builder.start();

return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}追问上面的代码只是将视频转为flv格式的,我是想 转成 .mp4 .ogg .webm 的

热心网友 时间:2022-04-16 03:27

1、 先写一个线程,建个队列。(把要转码的视频放到队列)

2、(最好用linux)在linux上安装ffmpeg转码工具
3、用java执行linxu命令,例:cmdString = "ffmpeg -y -i {0} -ar 44100 -vcodec libx264 {1}";({0}是要转码的视频,{1}是转码后的)。

实现起来也不是很简单,加油吧。

补充一下:至于转码前的视频类型,最好要做*,如果不*的话,还需要调用mencoder或者其他转码工具,mencoder我用过,比较难用,而且特慢。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
狐外婆是什么意思? ...都流,有几年了,吃香蕉水果时也流,到底什么原因啊,维生素c也补了也没... 我的牙龈经常出血,刷牙出得最凶,有时候吃香蕉都会出血,请问是什么原 ... 如何通过社交软件添加好友? 过年送礼送购物卡合适吗? 林上的UV能量测试仪的自动和手动模式有什么区别啊?什么情况下用的... 什么是建设银行金卡 建行信用金卡有什么好处 紫外测试仪UV能量计常见问题解答 020028什么卡 请问什么软件能播放ogg格式? 1000左右的手机哪些支持PDF和OGG的? 400左右哪些MP4支持OGG和PDF的? 酷派5930适用什么格式的视频?除AAC,ape,ogg,MP4格式外的还有其他格式吗? 视频格式MP4/m4v/mov等及音频格式mp3/aac/ogg/m4a等格式各自有何区别... 求大神帮我把ogg格式的歌转换成MP3或者MP4 OGG,MP3,WMA,AAC,WMV,MPC,APE,FLAC,MP2,MP4 那个音质好? 双千兆跟普通只有一个千兆端口的路由器有何区别?咨询宽带人员说只有一个... 我的魅族mp4里面的音乐 忽然多了很多ogg,wav格式的东西!! 千兆双频路由器AN1202L 好不好? 为什么用格式工厂把mp4转换成ogg无法播放 千兆路由器选择哪个好点? - 信息提示 千兆路由器哪个品牌好?家有孩子玩游戏要网速快的 html5 video 自己下载的mp4和ogg文件在IE和firefox中显示不出来_百度知 ... html5的&lt;video&gt; 标签很短的ogg文件可以播放,但我选了个9M的MP4视频怎么播放都不行,求指教 双频千兆和双频路由有什么区别? 什么软件能把MP4视频转换成ogg视频,在线等!!! 华硕IC2200双频千兆无线路由器要怎么接网线? ogg与m4a那个好?相同音质哪个更小? 什么是千兆路由器,怎么分辨? 如何把常用音频文件格式转换为MP4支持的格式 OGG的格式怎么转换成MP3格式? 银行贷款期限可以更改吗? 房贷年限可以更改吗? 贷款期限时间可以改吗 房贷贷款时间能够变更吗? 个人商业贷款年限可以更改吗? 房贷审批下来之前可以更改贷款年限吗? 贷款期限是10年可以转成20年么? 贷款还款日期能改变吗? 房贷还款日可以改吗 公积金贷款时间可以修改嘛? 房贷时间可以改吗 组合贷款年限能改么,其中的商贷部分年限能缩短么 按揭房产贷款期限能更改吗 烹饪求助:马苏里拉奶酪除了作披萨,还能怎么吃? 马苏里拉芝士碎怎么做好吃,马苏里拉芝士碎的吃法 马苏里拉手撕奶酪怎么用?要做什么吃的? 马苏里拉奶酪碎的吃法 马苏里拉奶酪怎么吃,可以做焗饭吗?