最近公司的网站需要一些视频功能 , 在本地测试了不同格式的视频 , 但是有些格式的视频在浏览器上是不支持的 , 所以就想到了将视频格式转换统一. 找啊找就找到了这个 .

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】自行领取。和一些小伙伴们建了一个技术交流群,一起探讨技术、分享技术资料,旨在共同学习进步,如果感兴趣就扫码加入我们吧!


本文转载:CSDN博客