更新日志
v1.1:升级命令模块,支持in流和error流的日志读取。
v1.2:开放FFTerminal中的输入输出流的权限,可以get使用,方便对控制台的扩展。
使用
<dependency>
<groupId>org.mountcloud</groupId>
<artifactId>ffmpeg-operate</artifactId>
<version>1.2</version>
</dependency>
描述
这个项目使用的前提条件是环境中安装了FFMPEG,并且可以在控制台中使用FFMPEG命令。本项目极大方便了java使用FFMPEG功能。
项目中内置了3个对视频的操作,1:视频格式转为M3U8(FFMpegVideoFormatM3u8),2:查看视频属性(FFMpegVideoInfo),3:视频截图(FFMpegVideoScreenShot)。还可以通过继承FFMpegOperationBase来进行扩展。
特点
1:可以获取任务的执行百分比进度。
2:非常高的可扩展性。
3:多线程方式进行操作。
Demo 用例
@Test
public void convertM3u8() {
//create result bean
FFVideoInfoResult result = new FFVideoInfoResult();
//find video info
FFMpegVideoInfo ffMpegVideoInfo = new FFMpegVideoInfo();
ffMpegVideoInfo.setVideoUrl("D:\\cma_15307640036trzll1p.mp4");
FFMepgVideoInfoTask videoInfoTask = new FFMepgVideoInfoTask(result,ffMpegVideoInfo);
FFTaskContext.getContext().submit(videoInfoTask,null);
String bitrate = "5286k";
//create to m3u8 operation
FFMpegVideoFormatM3u8 m3u8Operation = new FFMpegVideoFormatM3u8();
m3u8Operation.setVideoFileName("D:\\cma_15307640036trzll1p.mp4");
m3u8Operation.setBitrate(bitrate);
m3u8Operation.setTimes(5);
m3u8Operation.setM3u8File("D:\\cma_15307640036trzll1p\\cma_15307640036trzll1p.m3u8");
m3u8Operation.setTsFiles("D:\\cma_15307640036trzll1p\\cma_15307640036trzll1p%5d.ts");
//to m3u8 task
FFMepgVideoFormatM3u8Task task = new FFMepgVideoFormatM3u8Task(m3u8Operation);
//add task
FFTaskContext.getContext().addTask(task);
while(!task.getProgress().getState().equals(FFTaskStateEnum.COMPLETE)){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}
System.out.println("COMPLETE");
}
note 笔记
1:FFTaskContext.getContext().addTask(task) 为异步任务,FFTaskContext.getContext().submit(taks)为同步任务