package com.ssm.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* 视频转换(转换为flv格式)
*
* 创建时间:2010-11-21
*/
public class Convert {
/** 输入文件路径属性 */
private String IN_PATH;
/** 输出文件路径属性 */
private String OUT_PATH;
/** ffmpeg.exe存放路径属性 */
private String FFMPEG_PATH;
/** 构造方法 */
public Convert(String inpath, String outpath, String ffmpegpath) {
this.IN_PATH = inpath;// 赋值待转换的视频文件路径
this.OUT_PATH = outpath;// 赋值转换生成的flv格式的文件路径
this.FFMPEG_PATH = ffmpegpath;// 赋值实际转换外部程序ffmpeg所在的目录
}
/** 主方法(测试) */
public static void main(String[] args) {
Convert convert = new Convert("d:/a.mp4",
"d:/a.flv", "d:/");
convert.execute(convert.toFlv());// 执行转换到flv并且加水印的方法
// convert.execute(convert.getImage());
}
/** 进行转换处理方法 */
public void execute(List<String> list) {
ProcessBuilder builder = new ProcessBuilder();// 进程生成器对象
builder.command(list);// 以动态数组对象参数创建命令
try {
Process pc = builder.start();// 线程启动执行
readInputStream(pc.getErrorStream(), "error");
readInputStream(pc.getInputStream(), "out");
} catch (Exception e) {
e.printStackTrace();
}
}
/** 建立转换到flv的命令 */
public List<String> toFlv() {
List<String> commend = new ArrayList<String>();// 用来进行视频转换为flv参数设置
// 设置ffmpeg.exe所在路径
commend.add(this.FFMPEG_PATH + "ffmpeg.exe");
commend.add("-i");// 设置要输入的文件
commend.add(this.IN_PATH);// 要输入的文件的位置
commend.add("-y");// 覆盖掉输出目录中的同名文件
commend.add("-acodec");// 设置音频的编码方式
commend.add("libmp3lame");// 编码方式为mp3,可以指定为libmp3lame或aac
commend.add("-ar");// 设置声音的采样频率
commend.add("22050");// 对于音频的采样率可以指定为22050、24000、44100或48000
commend.add("-qscale");// 设置动态码率
commend.add("6");// 测试发现如果想得到高品质视频此值越小越好
commend.add("-vf");// 设置覆盖
// movie=/q.png 使用ffmpeg.exe同目录下的q.png图片
// overlay=5:40:1 左边距5像素,上边距40像素,开启透明支持
commend.add("movie=/q.png [logo];[in][logo] overlay=5:40:1 [out]");
commend.add(this.OUT_PATH);// 设置输出flv文件路径
return commend;
}
/** 建立视频截图的命令 */
public List<String> getImage() {
List<String> commend = new ArrayList<String>();// 用来进行视频截图参数设置
commend.add(this.FFMPEG_PATH + "ffmpeg");// 设置转换器所在位置
commend.add("-i");// 设置要输入的文件
commend.add(this.OUT_PATH);// 要输入的文件的位置
commend.add("-y");// 覆盖掉输出目录中的同名文件
commend.add("-f");// 输出文件格式
commend.add("image2");// 对应jpg格式
commend.add("-ss");// 可以从指定时间点开始转换任务
commend.add("8");// 从视频的第8秒开始
commend.add("-t");// 设置记录时间
commend.add("1");// 记录时间为1秒
commend.add("-s");// 输出的图片分辨率
commend.add("200x200");// 图片大小
commend.add(this.OUT_PATH.substring(0, this.OUT_PATH.lastIndexOf("."))
+ ".jpg");// 设置输出文件目录
return commend;
}
private void readInputStream(InputStream is, String f) throws IOException {
// 将进程的输出流封装成缓冲读者对象
BufferedReader br = new BufferedReader(new InputStreamReader(is));
for (String line = br.readLine(); line != null; line = br.readLine()) {
System.out.println(line);
}
br.close();// 关闭进程的输出流
}
}
ffmpeg 视频格式转换 透明水印 demo
4星 · 超过85%的资源 需积分: 46 129 浏览量
2013-07-17
13:22:37
上传
评论 2
收藏 16.16MB RAR 举报
zdyfzj
- 粉丝: 7
- 资源: 4
最新资源
- 5ffd9193f6aec31bbf16030a46680dc7.avi
- DA14531-蓝牙传感器连接传输数据固件
- logisim实验MIPS运算器(ALU)设计(内含4位先行进位74182、四位快速加法器、32位快速加法器)-Educoder_logisim里面连线,实现4位先行进位74182和4位快速加法器-C
- 高等数学第一章第二节数列的极限
- Python 版冒泡排序算法源代码
- tensorflow-gpu-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- tensorflow-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- Python版本快速排序源代码
- 精品源码基于JSP实现的酒店管理系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页