- 浏览: 227421 次
- 性别:
- 来自: 海南海口
文章分类
- 全部博客 (114)
- java基础 (25)
- 设计模式 (6)
- css (1)
- js (2)
- jquery (5)
- flash as3.0 (3)
- lucene (2)
- tomcat (3)
- uml (0)
- struts2 (7)
- spring (0)
- sql (1)
- ejb3.0 (2)
- jbpm4 (1)
- webservices (1)
- linux (3)
- ajax (1)
- 面试 (1)
- flex (0)
- soa (0)
- oracle解锁 (5)
- 工具 (3)
- ext (3)
- 好的网址 (1)
- junit (2)
- jmx (2)
- encache (1)
- redis (1)
- 网站 (1)
- oracle重要的sql (1)
- web (3)
- hadoop (2)
- DB2 (1)
- ui (1)
- sybase (1)
- ue使用快捷键 (1)
- eclipse优化 (1)
- 前端优化用到的插件 (1)
- zookeeper (1)
- solr (1)
- hibernate (1)
- svn (1)
- resion (1)
- resin (1)
- maven (1)
- mysql (1)
- url (1)
- 通过HttpFileServer设置共享 可以通过http方式访问 (1)
- 非技术 (2)
- 营销 (1)
- ELK (3)
最新评论
-
it_xiaowu:
jqwerty_123 写道我的出同样的问题却是因为引入cxf ...
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Ma -
繁星水:
实验证明可用,最后补充一下,可以不需要 set Package ...
axis根据wsdl生成java客户端代码 -
qq_16699317:
qq_16699317 写道求一份源代码,感激不尽。。。多谢了 ...
java博客系统 -
qq_16699317:
求一份源代码,感激不尽。。。多谢了
java博客系统 -
jqwerty_123:
我的出同样的问题却是因为引入cxf的时候jcl-over-sl ...
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Ma
这几天在写一个视频管理系统,遇到一个很大的问题就是如果把不同格式转换为flv,格式!经过网上的一番搜索,自己在总结,整理,整理,终于整出来了!实现了视频进行转换的同时还能够进行视频截图和删除原文件的功能!
格式转换主要原理就是先用java调用ffmpeg的exe文件!
但是有些格式是ffmpeg不能处理的比如rmvb,这样的可以先调用mencoder先把格式转换为avi再进行转换为flv!
我主要写3个类:分别为Conver.java ConverBegin.java ConverVideo.java
Conver.java 代码如下:
package org.Conver;
/*
* Title:主类
* @author ljz
* Version:1.0
*time:2010 04 14
*/
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
@SuppressWarnings("serial")
public class Conver extends JFrame{
public static JTextArea OutShowLog;
public Conver() {
setTitle("FLV转换");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OutShowLog = new JTextArea();
JScrollPane OutPane = new JScrollPane(OutShowLog);
add(OutPane,BorderLayout.CENTER);
setVisible(true);
}
public static void main(String args[]) {
new Conver();
ConverBegin cb = new ConverBegin();
cb.start();
}
}
ConverBegin.java 代码如下:
package org.Conver;
/*
* Title:线程执行类
* @author ljz
* Version:1.0
*time:2010 04 14
*/
import java.io.File;
public class ConverBegin extends Thread{
String[] ff;
public void run(){
while (true) {
String folderpath = "other/";
//String path = null;
File f = new File(folderpath);
if (f.isDirectory()) {
ff = f.list();
int i = 0;
while (i < ff.length) {
new ConverVideo(folderpath+ff[i]).beginConver();
i++;
}
Conver.OutShowLog.append("---------------总共转换了"+ff.length+"-----------视频------------ ");
ff = null;
}
f = null;
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
//如果失败重启线程
this.start();
}
}
}
}
ConverBegin.java 代码如下
package org.Conver;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
/*
* Title:FLV视频转换类
* @author ljz
* ClassVer:0.1.001.2010.04.14
*/
public class ConverVideo {
private Date dt;
private long begintime;
private String PATH;
private String filerealname; // 文件名 不包括扩展名
private String filename; // 包括扩展名
private String videofolder = "other/"; //别的格式视频的目录
private String flvfolder = "flv/"; //flv视频的目录
private String ffmpegpath="ffmpeg/ffmpeg.exe"; //ffmpeg.exe的目录
private String mencoderpath="ffmpeg/mencoder"; //mencoder的目录
private String videoRealPath="flv/"; //截图的视频目录;
private String imageRealPath ="img/"; //截图的存放目录
//private String batrealpath="ffmpeg/ffmpeg.bat"; //bat目录
public ConverVideo(){}
public ConverVideo(String path) {
PATH = path;
}
public String getPATH() {
return PATH;
}
public void setPATH(String path) {
PATH = path;
}
public boolean beginConver(){
File fi = new File(PATH);
filename = fi.getName();
filerealname = filename.substring(0, filename.lastIndexOf("."))
.toLowerCase();
Conver.OutShowLog.append("----接收到文件("+PATH+")需要转换-------------------------- ");
if (!checkfile(PATH)) {
Conver.OutShowLog.append(PATH + "文件不存在"+" ");
return false;
}
dt = new Date();
begintime = dt.getTime();
Conver.OutShowLog.append("----开始转文件("+PATH+")-------------------------- ");
if (process()) {
Date dt2 = new Date();
Conver.OutShowLog.append("转换成功 ");
long endtime = dt2.getTime();
long timecha = (endtime - begintime);
String totaltime = sumTime(timecha);
Conver.OutShowLog.append("共用了:" + totaltime+" ");
if(processImg()) {
Conver.OutShowLog.append("截图成功了 ");
}else {
Conver.OutShowLog.append("截图不成功了 ");
}
PATH = null;
return true;
}else {
PATH = null;
return false;
}
}
public boolean processImg() {
// System.out.println(newfilename + "->" + newimg);
List commend = new java.util.ArrayList();
commend.add(ffmpegpath);
commend.add("-i");
commend.add(videoRealPath+filerealname+".flv");
commend.add("-y");
commend.add("-f");
commend.add("image2");
commend.add("-ss");
commend.add("38");
commend.add("-t");
commend.add("0.001");
commend.add("-s");
commend.add("320x240");
commend.add(imageRealPath+filerealname+".jpg");
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private boolean process() {
int type = checkContentType();
boolean status = false;
if (type == 0) {
// status = processFLV(PATH);// 直接将文件转为flv文件
status = processFLV(PATH);
} else if (type == 1) {
String avifilepath = processAVI(type);
if (avifilepath == null)
return false;
// avi文件没有得到
else {
System.out.println("kaishizhuang");
status = processFLV(avifilepath);// 将avi转为flv
}
}
return status;
}
private 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 boolean checkfile(String path) {
File file = new File(path);
if (!file.isFile()) {
return false;
}else {
return true;
}
}
// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
private String processAVI(int type) {
List commend = new java.util.ArrayList();
/*
* commend.add("f:\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("f:\rmvb.avi");
*/
commend.add(mencoderpath);
commend.add(PATH);
commend.add("-oac");
commend.add("mp3lame");
commend.add("-lameopts");
commend.add("preset=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(videofolder + filerealname + ".avi");
// 命令类型:mencoder 1.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid
// -xvidencopts bitrate=600 -of avi -o rmvb.avi
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
Process p = builder.start();
doWaitFor(p);
return videofolder + filerealname + ".avi";
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private boolean processFLV(String oldfilepath) {
if (!checkfile(PATH)) {
System.out.println(oldfilepath + " is not file");
return false;
}
List commend = new java.util.ArrayList();
commend.add(ffmpegpath);
commend.add("-i");
commend.add(oldfilepath);
commend.add("-ab");
commend.add("64");
commend.add("-acodec");
commend.add("mp3");
commend.add("-ac");
commend.add("2");
commend.add("-ar");
commend.add("22050");
commend.add("-b");
commend.add("230");
commend.add("-r");
commend.add("24");
commend.add("-y");
commend.add(flvfolder + filerealname + ".flv");
try {
ProcessBuilder builder = new ProcessBuilder();
String cmd = commend.toString();
builder.command(commend);
// builder.redirectErrorStream(true);
Process p = builder.start();
doWaitFor(p);
p.destroy();
deleteFile(oldfilepath);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public int doWaitFor(Process p)
{
InputStream in = null;
InputStream err=null;
int exitValue = -1; // returned to caller when p is finished
try {
System.out.println("comeing");
in = p.getInputStream();
err = p.getErrorStream();
boolean finished = false; // Set to true when p is finished
while (!finished) {
try {
while (in.available() > 0) {
// Print the output of our system call
Character c = new Character((char) in.read());
System.out.print(c);
}
while (err.available() > 0) {
// Print the output of our system call
Character c = new Character((char) err.read());
System.out.print(c);
}
// Ask the process for its exitValue. If the process
// is not finished, an IllegalThreadStateException
// is thrown. If it is finished, we fall through and
// the variable finished is set to true.
exitValue = p.exitValue();
finished = true;
} catch (IllegalThreadStateException e) {
// Process is not finished yet;
// Sleep a little to save on CPU cycles
Thread.currentThread().sleep(500);
}
}
} catch (Exception e) {
// unexpected exception! print it out for debugging...
System.err.println("doWaitFor();: unexpected exception - "
+ e.getMessage());
} finally {
try {
if(in!=null)
{
in.close();
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
if(err!=null)
{
try {
err.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
// return completion status to caller
return exitValue;
}
public void deleteFile(String filepath) {
File file = new File(filepath);
if (PATH.equals(filepath)) {
if (file.delete()) {
System.out.println("文件" + filepath + "已删除");
}
} else {
if (file.delete()) {
System.out.println("文件" + filepath + "已删除 ");
}
File filedelete2 = new File(PATH);
if (filedelete2.delete()) {
System.out.println("文件" + PATH + "已删除");
}
}
}
public String sumTime(long ms) {
int ss = 1000;
long mi = ss * 60;
long hh = mi * 60;
long dd = hh * 24;
long day = ms / dd;
long hour = (ms - day * dd) / hh;
long minute = (ms - day * dd - hour * hh) / mi;
long second = (ms - day * dd - hour * hh - minute * mi) / ss;
long milliSecond = ms - day * dd - hour * hh - minute * mi - second
* ss;
String strDay = day < 10 ? "0" + day + "天" : "" + day + "天";
String strHour = hour < 10 ? "0" + hour + "小时" : "" + hour + "小时";
String strMinute = minute < 10 ? "0" + minute + "分" : "" + minute + "分";
String strSecond = second < 10 ? "0" + second + "秒" : "" + second + "秒";
String strMilliSecond = milliSecond < 10 ? "0" + milliSecond : ""
+ milliSecond;
strMilliSecond = milliSecond < 100 ? "0" + strMilliSecond + "毫秒" : ""
+ strMilliSecond + " 毫秒";
return strDay + " " + strHour + ":" + strMinute + ":" + strSecond + " "
+ strMilliSecond;
}
}
格式转换主要原理就是先用java调用ffmpeg的exe文件!
但是有些格式是ffmpeg不能处理的比如rmvb,这样的可以先调用mencoder先把格式转换为avi再进行转换为flv!
我主要写3个类:分别为Conver.java ConverBegin.java ConverVideo.java
Conver.java 代码如下:
package org.Conver;
/*
* Title:主类
* @author ljz
* Version:1.0
*time:2010 04 14
*/
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
@SuppressWarnings("serial")
public class Conver extends JFrame{
public static JTextArea OutShowLog;
public Conver() {
setTitle("FLV转换");
setSize(500, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
OutShowLog = new JTextArea();
JScrollPane OutPane = new JScrollPane(OutShowLog);
add(OutPane,BorderLayout.CENTER);
setVisible(true);
}
public static void main(String args[]) {
new Conver();
ConverBegin cb = new ConverBegin();
cb.start();
}
}
ConverBegin.java 代码如下:
package org.Conver;
/*
* Title:线程执行类
* @author ljz
* Version:1.0
*time:2010 04 14
*/
import java.io.File;
public class ConverBegin extends Thread{
String[] ff;
public void run(){
while (true) {
String folderpath = "other/";
//String path = null;
File f = new File(folderpath);
if (f.isDirectory()) {
ff = f.list();
int i = 0;
while (i < ff.length) {
new ConverVideo(folderpath+ff[i]).beginConver();
i++;
}
Conver.OutShowLog.append("---------------总共转换了"+ff.length+"-----------视频------------ ");
ff = null;
}
f = null;
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
//如果失败重启线程
this.start();
}
}
}
}
ConverBegin.java 代码如下
package org.Conver;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
/*
* Title:FLV视频转换类
* @author ljz
* ClassVer:0.1.001.2010.04.14
*/
public class ConverVideo {
private Date dt;
private long begintime;
private String PATH;
private String filerealname; // 文件名 不包括扩展名
private String filename; // 包括扩展名
private String videofolder = "other/"; //别的格式视频的目录
private String flvfolder = "flv/"; //flv视频的目录
private String ffmpegpath="ffmpeg/ffmpeg.exe"; //ffmpeg.exe的目录
private String mencoderpath="ffmpeg/mencoder"; //mencoder的目录
private String videoRealPath="flv/"; //截图的视频目录;
private String imageRealPath ="img/"; //截图的存放目录
//private String batrealpath="ffmpeg/ffmpeg.bat"; //bat目录
public ConverVideo(){}
public ConverVideo(String path) {
PATH = path;
}
public String getPATH() {
return PATH;
}
public void setPATH(String path) {
PATH = path;
}
public boolean beginConver(){
File fi = new File(PATH);
filename = fi.getName();
filerealname = filename.substring(0, filename.lastIndexOf("."))
.toLowerCase();
Conver.OutShowLog.append("----接收到文件("+PATH+")需要转换-------------------------- ");
if (!checkfile(PATH)) {
Conver.OutShowLog.append(PATH + "文件不存在"+" ");
return false;
}
dt = new Date();
begintime = dt.getTime();
Conver.OutShowLog.append("----开始转文件("+PATH+")-------------------------- ");
if (process()) {
Date dt2 = new Date();
Conver.OutShowLog.append("转换成功 ");
long endtime = dt2.getTime();
long timecha = (endtime - begintime);
String totaltime = sumTime(timecha);
Conver.OutShowLog.append("共用了:" + totaltime+" ");
if(processImg()) {
Conver.OutShowLog.append("截图成功了 ");
}else {
Conver.OutShowLog.append("截图不成功了 ");
}
PATH = null;
return true;
}else {
PATH = null;
return false;
}
}
public boolean processImg() {
// System.out.println(newfilename + "->" + newimg);
List commend = new java.util.ArrayList();
commend.add(ffmpegpath);
commend.add("-i");
commend.add(videoRealPath+filerealname+".flv");
commend.add("-y");
commend.add("-f");
commend.add("image2");
commend.add("-ss");
commend.add("38");
commend.add("-t");
commend.add("0.001");
commend.add("-s");
commend.add("320x240");
commend.add(imageRealPath+filerealname+".jpg");
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private boolean process() {
int type = checkContentType();
boolean status = false;
if (type == 0) {
// status = processFLV(PATH);// 直接将文件转为flv文件
status = processFLV(PATH);
} else if (type == 1) {
String avifilepath = processAVI(type);
if (avifilepath == null)
return false;
// avi文件没有得到
else {
System.out.println("kaishizhuang");
status = processFLV(avifilepath);// 将avi转为flv
}
}
return status;
}
private 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 boolean checkfile(String path) {
File file = new File(path);
if (!file.isFile()) {
return false;
}else {
return true;
}
}
// 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等), 可以先用别的工具(mencoder)转换为avi(ffmpeg能解析的)格式.
private String processAVI(int type) {
List commend = new java.util.ArrayList();
/*
* commend.add("f:\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("f:\rmvb.avi");
*/
commend.add(mencoderpath);
commend.add(PATH);
commend.add("-oac");
commend.add("mp3lame");
commend.add("-lameopts");
commend.add("preset=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(videofolder + filerealname + ".avi");
// 命令类型:mencoder 1.rmvb -oac mp3lame -lameopts preset=64 -ovc xvid
// -xvidencopts bitrate=600 -of avi -o rmvb.avi
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commend);
Process p = builder.start();
doWaitFor(p);
return videofolder + filerealname + ".avi";
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
private boolean processFLV(String oldfilepath) {
if (!checkfile(PATH)) {
System.out.println(oldfilepath + " is not file");
return false;
}
List commend = new java.util.ArrayList();
commend.add(ffmpegpath);
commend.add("-i");
commend.add(oldfilepath);
commend.add("-ab");
commend.add("64");
commend.add("-acodec");
commend.add("mp3");
commend.add("-ac");
commend.add("2");
commend.add("-ar");
commend.add("22050");
commend.add("-b");
commend.add("230");
commend.add("-r");
commend.add("24");
commend.add("-y");
commend.add(flvfolder + filerealname + ".flv");
try {
ProcessBuilder builder = new ProcessBuilder();
String cmd = commend.toString();
builder.command(commend);
// builder.redirectErrorStream(true);
Process p = builder.start();
doWaitFor(p);
p.destroy();
deleteFile(oldfilepath);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public int doWaitFor(Process p)
{
InputStream in = null;
InputStream err=null;
int exitValue = -1; // returned to caller when p is finished
try {
System.out.println("comeing");
in = p.getInputStream();
err = p.getErrorStream();
boolean finished = false; // Set to true when p is finished
while (!finished) {
try {
while (in.available() > 0) {
// Print the output of our system call
Character c = new Character((char) in.read());
System.out.print(c);
}
while (err.available() > 0) {
// Print the output of our system call
Character c = new Character((char) err.read());
System.out.print(c);
}
// Ask the process for its exitValue. If the process
// is not finished, an IllegalThreadStateException
// is thrown. If it is finished, we fall through and
// the variable finished is set to true.
exitValue = p.exitValue();
finished = true;
} catch (IllegalThreadStateException e) {
// Process is not finished yet;
// Sleep a little to save on CPU cycles
Thread.currentThread().sleep(500);
}
}
} catch (Exception e) {
// unexpected exception! print it out for debugging...
System.err.println("doWaitFor();: unexpected exception - "
+ e.getMessage());
} finally {
try {
if(in!=null)
{
in.close();
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
if(err!=null)
{
try {
err.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
// return completion status to caller
return exitValue;
}
public void deleteFile(String filepath) {
File file = new File(filepath);
if (PATH.equals(filepath)) {
if (file.delete()) {
System.out.println("文件" + filepath + "已删除");
}
} else {
if (file.delete()) {
System.out.println("文件" + filepath + "已删除 ");
}
File filedelete2 = new File(PATH);
if (filedelete2.delete()) {
System.out.println("文件" + PATH + "已删除");
}
}
}
public String sumTime(long ms) {
int ss = 1000;
long mi = ss * 60;
long hh = mi * 60;
long dd = hh * 24;
long day = ms / dd;
long hour = (ms - day * dd) / hh;
long minute = (ms - day * dd - hour * hh) / mi;
long second = (ms - day * dd - hour * hh - minute * mi) / ss;
long milliSecond = ms - day * dd - hour * hh - minute * mi - second
* ss;
String strDay = day < 10 ? "0" + day + "天" : "" + day + "天";
String strHour = hour < 10 ? "0" + hour + "小时" : "" + hour + "小时";
String strMinute = minute < 10 ? "0" + minute + "分" : "" + minute + "分";
String strSecond = second < 10 ? "0" + second + "秒" : "" + second + "秒";
String strMilliSecond = milliSecond < 10 ? "0" + milliSecond : ""
+ milliSecond;
strMilliSecond = milliSecond < 100 ? "0" + strMilliSecond + "毫秒" : ""
+ strMilliSecond + " 毫秒";
return strDay + " " + strHour + ":" + strMinute + ":" + strSecond + " "
+ strMilliSecond;
}
}
- ffmpeg.rar (5.4 MB)
- 下载次数: 798
评论
2 楼
lolicn
2012-08-13
想问一下 为什么 只有java项目才可以使用转换 但是 不存不了你指定的other目录里 就删掉了
web项目发布后使用 只弹出window 但是没有转格式动作 要怎么使用
web项目发布后使用 只弹出window 但是没有转格式动作 要怎么使用
1 楼
xwd_2000
2012-02-24
感动,网上找了好久都没搞好。。。
发表评论
-
多线程超时处理的方法
2014-09-18 17:11 978package cn.mytest; import java ... -
java调用cmd不显示cmd窗口的
2014-07-11 09:34 1092cmd /c start /b fis release 加 ... -
hadoop的入门案例
2013-03-20 17:03 982http://www.cnblogs.com/xia520pi ... -
数据库字段内容的压缩算法
2013-03-08 14:34 1072package cn.ljz; import java. ... -
记录一下消息异步发送的一下框架
2013-02-03 19:02 922disruptor jgroups akka Activ ... -
eclipse中调试jvm内存溢出
2013-01-26 19:45 1318http://www.blogjava.net/rosen/a ... -
jvm退出之前清理工作
2013-01-24 23:25 837try { Runtime.getRu ... -
jvm内存泄露
2012-12-14 14:22 1062查看java内存泄露的办法 1:利用jdk自带的jps命令查看 ... -
Java获取当前运行方法的名称
2012-06-04 14:42 1505方法一:new Exception().getStackTra ... -
jdbc封装事务
2012-02-27 10:10 1145装载从这个网址过来的http://hi.baidu.com/g ... -
hashmap源码解析经典
2011-12-30 22:24 997http://www.java3z.com/cwbwebhom ... -
hashmap的遍历
2011-12-30 22:04 1071for(Iterator ite = map.entrySet ... -
axis根据wsdl生成java客户端代码
2011-12-24 16:30 14373先下载axis jar包:axis-bin-1_4.zip。下 ... -
eclipse设置编译路径
2011-12-24 15:40 1080ljzblog/WebRoot/WEB-INF/classes ... -
java反射判断数组
2011-12-17 19:52 1078if (c.isArray()) { String ca ... -
java方法参数注解
2011-12-03 21:46 16055package cn.ljz.annotation; i ... -
java获取项目路径
2011-08-16 09:19 647this.getClass().getClassLoader( ... -
CardLayout 简单实现Demo
2010-11-10 00:11 2487package cn.ljz.test; import ... -
java反射机制小小总结
2010-08-18 10:40 12771:动态语言就是在程序运行的过程当中,可以改变程序的结果和变量 ... -
java线程小小总结
2010-08-18 09:52 1105线程:简单的来说就是 ...
相关推荐
最简单的java调用FFmpeg转换视频格式为FLV的方法,在win下调用命令提示符。
详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv43260.dll东西放到C:WindowsSystem32下面 这几天在写一个视频管理系统,...
在本文中,我们将深入探讨如何使用Java程序调用FFmpeg执行视频文件格式转换,特别是将非FFmpeg原生支持的格式转换为FLV格式。FFmpeg是一个强大的多媒体处理工具,支持多种视频、音频格式的编码、解码和转换。在这个...
java调用ffmpeg转换视频,并读取转换后视频的分辨率、大小以及时长。主要参考http://blog.sina.com.cn/s/blog_a5116c670102wiwj.html 的代码方式。步骤: 1.研究java如何调用外部程序 2.研究ffmpeg转换视频格式的...
总结起来,Java调用FFmpeg进行视频转换是一个涉及多媒体处理的核心技术,它使得Java应用程序能够处理各种视频格式,适应多样化的用户需求。通过学习和实践,开发者可以熟练掌握这一技能,提升其在音视频领域的开发...
java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...
例如,将一个 MP4 视频转换为 FLV 格式: ```java String command = "ffmpeg -i " + videoPath + " -c:v libx264 -preset slow -crf 23 -c:a aac output.flv"; ``` 在这个命令中,`-c:v libx264` 和 `-c:a aac` ...
本教程将深入讲解如何使用Java进行FFmpeg的封装,实现视频截图和格式转换功能,特别关注将视频转换为FLV格式。 首先,你需要在项目中引入FFmpeg的Java绑定库,如`javacpp-presets/ffmpeg`。这个库提供了与FFmpeg...
在本场景中,我们关注的是如何使用Java将各种视频格式转换为FLV(Flash Video)格式。FLV是Adobe Flash Player支持的一种流式视频格式,常见于在线视频分享平台。 要实现这个功能,我们通常会借助于外部工具或库,...
- `processFLV(String path)`:使用FFmpeg将文件转换为flv格式。 #### 三、注意事项 - **异常处理:** - 在实际应用中,需要考虑文件不存在、转换失败等异常情况,并添加相应的异常处理逻辑。 - **性能优化:**...
压缩包内的`java调用视频转换工具ffmpeg.doc`应该包含了如何在Java代码中使用FFmpeg的具体示例。通常需要编写一个Java工具类,封装FFmpeg的命令行调用,包括设置输入输出路径、编码参数等。 4. 使用说明文档:`java...
后端node.js转流服务 通过ffmpeg将rtsp视频流转成flv通过websocket推送给前端
当遇到FFmpeg无法解析的格式(如wmv9、rm、rmvb等)时,可以使用mencoder工具将这些格式转换为FFmpeg支持的格式(例如avi),然后再使用FFmpeg进行转换。 4. Java代码实现 下面的Java代码示例展示了如何通过Java...
本文将深入探讨如何使用纯Java代码实现视频转码至FLV(Flash Video)格式,并支持在线播放,而不依赖任何第三方库,从而确保高效、快速的转码过程。 首先,我们需要了解FLV格式。FLV是一种流行的网络流媒体格式,...
- 转换视频格式的基本命令结构是:`ffmpeg -i 输入文件 -c:v 输出编码器 -c:a 输出音频编码器 输出文件`。 - 在Java中调用FFmpeg,可以使用Java bindings如`ffmpeg-java`或`JNA`库来执行FFmpeg命令。 - 通过指定...
Java 调用 FFmpeg 实现转换视频的主要原理是通过 Java 语言调用 FFmpeg 的命令来实现视频格式的转换。FFmpeg 是一个自由 SOFTWARE,用于处理音频和视频流的开源项目,提供了强大的视频处理功能。 FFmpeg 的安装和...
以下是一个简单的示例,展示如何使用Java调用FFmpeg进行视频转换: ```java import java.io.IOException; public class VideoConverter { public static void main(String[] args) { String inputFilePath = ...
转换视频的基本命令格式为:`ffmpeg -i input.mp4 output.flv`。其中,`-i`参数指定输入文件,`output.flv`是输出文件。还可以添加其他参数调整视频质量、分辨率、比特率等。 4. **FFmpeg抓取图片**: 从视频中...