最近公司的网站需要一些视频功能 , 在本地测试了不同格式的视频 , 但是有些格式的视频在浏览器上是不支持的 , 所以就想到了将视频格式转换统一. 找啊找就找到了这个 .
ffmpeg.exe是一个源于Linux的工具软件,为FLV视频转换器,可以轻易地实现FLV向其它格式avi、asf、 mpeg的转换或者将其它格式转换为flv。
这个工具的使用需要找个这个工具的存放位置或者 , 程序中会调用ffmpeg.exe文件(这个东西网上很多随便下一个)
/**
* 将视频转为flv视频
*
* @param mediapath 视频文件路径(原)
* @param ffmpegpath 转码工具所在路径
* @param codedMediaPath 转码 后的视频文件位置(新)
* @uesr "xinzhifu@knet.cn"
* @date 2016年11月19日下午3:32:38
*/
public static boolean transCodeToFlv(String mediapath, String ffmpegpath,
String codcFilePath) {
File file = new File(mediapath);
if (!file.exists()) {
System.err.println("路径[" + mediapath + "]对应的视频文件不存在!");
return false;
}
// 创建一个List集合来保存转换视频文件为flv格式的命令
List<String> commands = new java.util.ArrayList<String>();
commands.add(ffmpegpath); // 添加转换工具路径
commands.add("-i"); // 添加参数"-i",该参数指定要转换的文件
commands.add(mediapath); // 添加要转换格式的视频文件的路径
commands.add("-qscale"); // 指定转换的质量
commands.add("6");
commands.add("-ab"); // 设置音频码率
commands.add("64");
commands.add("-ac"); // 设置声道数
commands.add("2");
commands.add("-ar"); // 设置声音的采样频率
commands.add("22050");
commands.add("-r"); // 设置帧频
commands.add("24");
commands.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的文件
commands.add(codcFilePath);
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commands);
builder.redirectErrorStream(true);
builder.start();
System.out.println("转码成功!");
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 截取视频的截图
* @param media_path
* @param ffmpeg_path
* @param picPath
* @return
* @uesr "xinzhifu@knet.cn"
* @date 2016年11月19日下午3:35:54
*/
public static boolean mediaPrtScreen(String media_path, String ffmpeg_path,
String picPath) {
File file = new File(media_path);
if (!file.exists()) {
System.err.println("路径[" + media_path + "]对应的视频文件不存在!");
return false;
}
List<String> commands = new java.util.ArrayList<String>();
commands.add(ffmpeg_path);
commands.add("-i");
commands.add(media_path);
commands.add("-y");
commands.add("-f");
commands.add("image2");
commands.add("-ss");
commands.add("20");// 这个参数是设置截取视频多少秒时的画面
// commands.add("-t");
// commands.add("0.001");
commands.add("-s");
commands.add("700x525");
commands.add(picPath);
try {
ProcessBuilder builder = new ProcessBuilder();
builder.command(commands);
builder.start();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) {
transCodeToFlv("F:/video/建国大业.mpg", "F:/video/ffmpeg.exe",
"F:/video/建国大业.flv");
mediaPrtScreen("F:/video/屌丝男士.mov", "F:/video/ffmpeg.exe",
"F:/video/屌丝男士.jpg");
}
这个工具的命令很多 , 这里我只是调用了一些简单的命令 .
整理了几百本各类技术电子书和视频课程 ,送给小伙伴们。同名公号内回【666】自行领取。和一些小伙伴们建了一个技术交流群,一起探讨技术、分享技术资料,旨在共同学习进步,如果感兴趣就扫码加入我们吧!