ffmpeg在C和C++下有直接可以使用的API,但是在JAVA上没找到很好用的开源包。
于是我对其进行了很简单的封装。实际上我是在基于操作系统命令行层面的封装,利用java的跨平台性,可以在windows和linux下使用。
基本上思想就是调用命令行的ffmpeg可执行文件,然后重定位输出,抓取分析输出内容来实现我们的需求。
/**
*
*/
package com.nvvideo.util;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.nvvideo.util.cmd.CmdExecuter;
import com.nvvideo.util.cmd.IStringGetter;
/**
* FFMpegUntil
*
Title: FFMpeg工具类
*
Description: 本类封装FFMpeg对视频的操作
*
Date: 2010-7-14
*
Copyright: Copyright (c) 2010
*
Company: novel-supertv.com
* @author chenggong
* @version 1.0
*/
public class FFMpegUtil implements IStringGetter{
private int runtime = 0;
private String ffmpegUri;//ffmpeg地址
private String originFileUri; //视频源文件地址
private enum FFMpegUtilStatus { Empty, CheckingFile, GettingRuntime };
private FFMpegUtilStatus status = FFMpegUtilStatus.Empty;
/**
* 构造函数
* @param ffmpegUri ffmpeg的全路径
* 如e:/ffmpeg/ffmpeg.exe 或 /root/ffmpeg/bin/ffmpeg
* @param originFileUri 所操作视频文件的全路径
* 如e:/upload/temp/test.wmv
*/
public FFMpegUtil( String ffmpegUr