急急急!!!java 用ffmpeg将上传的视频转成 .mp4 .ogg .webm 3种格式的视频,没思路,麻烦大神给点思路
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急急急!!!java 用ffmpeg将上传的视频转成 .mp4 .ogg .webm 3种格式的视频,没思路,麻烦大神给点思路相关的知识,希望对你有一定的参考价值。
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 的
参考技术A 1、 先写一个线程,建个队列。(把要转码的视频放到队列)2、(最好用linux)在linux上安装ffmpeg转码工具
3、用java执行linxu命令,例:cmdString = "ffmpeg -y -i 0 -ar 44100 -vcodec libx264 1";(0是要转码的视频,1是转码后的)。
实现起来也不是很简单,加油吧。
补充一下:至于转码前的视频类型,最好要做限制,如果不限制的话,还需要调用mencoder或者其他转码工具,mencoder我用过,比较难用,而且特慢。本回答被提问者采纳
急急急|最后6小时,ipad免费送!
日盼夜盼的国庆小长假终于来了
开心、兴奋、想大叫
先等等
有件紧急的事情要通知大家
想拿ipad、iWatch、扫地机器人的看过来
最后6小时!最后6小时!
万达“寻找最美小嫦娥”征集活动将在
9月30日23:59结束
赶快抓住这最后的机会
点击“小嫦娥”菜单栏
上传人物照
报名成功
奖品设置
一等奖:IPad
二等奖:Iwatch
三等奖:扫地机器人
参与奖:定制手持电风扇
(奖品以实物为准)
投票将在10月1日00:00启动
到时候大家可以给自己喜爱的选手投票
参赛人员也可以向亲戚好友拉票
投票将在10月3日12:00截止
所以大家要抓紧时间哦
点击“小嫦娥”菜单栏
或输入关键词“投票”
然后浏览作品
给选手投票
每人每天仅有一次投票机会
(详情可查看“活动规则”)
想拿大奖的快快快
哦,还有
国庆节嘛,八天小长假
只一个“寻找最美小嫦娥”怎么能够尽兴呢
来来来
你想要的活动都在下面
首届国际甜品节
海南万达广场南洋里金街
200多款美食等你来吃
首届南洋里美食节开幕式暨海南最强音演唱会
10月1日晚7点
海口万达广场
海南最强音一强哥+最强歌后一吴晓芸+最强嘻哈一火山老爹
带来一场最强海南味的演唱会
(图文无关)
万达首届购车节
海口万达广场
百款靓车集中亮相
还有购车好礼大放送
(图文无关)
玩爆假期赢大奖
海口万达广场营销中心
玩游戏,集齐4枚印章
就有机会获得万达大礼包、精美月饼等丰厚大奖
明天
海口万达广场
不见不散
祝大家国庆节玩得愉快
南洋里商业街招商:刘先生15289768799
建筑面积约35—130㎡南洋里七彩商铺全城发售中
商圈渐成,区域价值爆发
在万达的强大品牌号召之下,众多开发商齐聚城南,区域价值迅速提升,各开发商纷纷加快抢占万达开业所带来的区域福利,碧桂园、恩祥新城等开发商环绕,万达商圈初具雏形,未来可期。
龙头万达,商气人气汇聚
海口万达广场凭借全业态、全龄层、一站式的商业平台,自2016年12月23日开业至今,短短数月,业已改变海口市民消费及生活习惯,成为吃、喝、玩、乐、购的首选消费地。
数千商家争相进驻
作为万达商圈核心的万达广场,拥有全国6000余品牌商家资源,多数无法进驻购物中心的品牌,将选择室外街,共享购物中心人潮,与购物中心形成有效互补。
每日数万稳定客流
海口万达广场开业至今,日均客流5万人次以上,逢节假日客流成倍增长。随着6月万达住宅交房、周边小区的持续入住,万达广场将迎来更多稳定客流。有稳定客流,即有稳定现金流。
专业商业运营团队
万达商管集团是亚洲最大的商业运营公司,专业室外街服务式招商运营团队,保障室外街共享购物中心每日数万客流,为整座万达广场的稳场旺场经营提供有力保障。
全天候经营,繁华不落幕
万达室外街,没有购物中心早10点营业晚10点打烊的营业时间限制,可实现全天候经营,满足了更多经营业态的要求,与大商业形成有效互补,可谓24小时繁华不落幕。
临近购物中心,最佳区位
本期商铺正处海榆中线与白水塘路交汇路口,拥有万达广场最优展示面,具有绝佳的昭示性,同时是本项目及周边居民通往万达购物中心的必经之地,是真正意义上的黄金走廊。
点击图片有惊喜哦~
游丹寨 就是扶贫
本广告相关面积均为建筑面积,最终计算面积以房管局测绘面积为准。
本宣传资料对周边环境、政府规划、商业配套、教育配套、投资前景的介绍仅为提供相关信息,并不意味着对此作出任何承诺,买卖双方的权利义务以双方签订的《商品房买卖合同》为准。
以上是关于急急急!!!java 用ffmpeg将上传的视频转成 .mp4 .ogg .webm 3种格式的视频,没思路,麻烦大神给点思路的主要内容,如果未能解决你的问题,请参考以下文章
用JAVA调用ffmpeg实现将各种视频格式转为flv时,怎样做出简单操作的界面?
IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题,这个怎么解决?急急急