java图片合成视频、音频及音频裁剪_MQ
java图片合成视频、音频及音频裁剪_MQ
一、音频裁剪
1、利用IO流进行音频裁剪
/*
* fis = 输入流对象
* bt = 歌曲的比特率
* start = 裁剪的起始时间
* end = 裁剪结束时间
* fos = 输出流对象
* */
public static void cut(FileInputStream fis,int bt,int start,int end,FileOutputStream fos) throws IOException { // 计算开始截取的字节int sta = bt*start*1024/8;//计算结束截取的字节int en = bt*end*1024/8;//定义接收到几个字符长度变量len和total累加器int len,total = 0;//定义接收字节的byte数组byte[] bz = new byte[1024];while ((len = fis.read(bz))!=-1){//累加接收到的个数total += len;//判断字节是否小于要截取的字节数if(total<sta)continue;//判断字节是否大于要截取的字节数,大于则跳出循环if(total>en)break;//将bz数组中的字节输出到fosfos.write(bz,0,len);}System.out.println("裁剪完成");
}
2、测试(main方法)
public static void main(String[] args) throws IOException {//输入流对象,路径要裁剪文件路径FileInputStream fis = new FileInputStream("F:\\KwDownload\\song\\Hold On.mp3");//输出流对象,裁剪后文件的路径FileOutputStream fos = new FileOutputStream("F:\\KwDownload\\song\\O.mp3");cut(fis,320,3, 70,fos);
}
二、图片合成视频
1、首先需要下载相关依赖
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.2</version>
</dependency>
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.2</version>
</dependency>
2、图片合成视频方法
public static void createMp4(String mp4SavePath, Map<Integer, File> imgMap, int width, int height) throws FrameRecorder.Exception {//视频宽高最好是按照常见的视频的宽高 16:9 或者 9:16FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, width, height);//设置视频编码层模式recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);//设置视频为25帧每秒recorder.setFrameRate(25);//设置视频图像数据格式recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);recorder.setFormat("mp4");try {recorder.start();Java2DFrameConverter converter = new Java2DFrameConverter();//录制一个22秒的视频for (int i = 0; i < 22; i++) {BufferedImage read = ImageIO.read(imgMap.get(i));//一秒是25帧 所以要记录25次for (int j = 0; j < 25; j++) {recorder.record(converter.getFrame(read));}}} catch (Exception e) {e.printStackTrace();} finally {//最后一定要结束并释放资源recorder.stop();recorder.release();}
}
3、测试
public static void main(String[] args) throws Exception {//合成的MP4String mp4SavePath = "D:\\javacv\\mp4\\img.mp4";//图片地址 这里面放了22张图片String img = "D:\\javacv\\img";int width = 1600;int height = 900;//读取所有图片File file = new File(img);File[] files = file.listFiles();Map<Integer, File> imgMap = new HashMap<Integer, File>();int num = 0;for (File imgFile : files) {imgMap.put(num, imgFile);num++;}createMp4(mp4SavePath, imgMap, width, height);
}
三、将视频和音频进行合成最终生成带BGM的视频
public static boolean mergeAudioAndVideo(String videoPath, String audioPath, String outPut) throws Exception {boolean isCreated = true;File file = new File(videoPath);if (!file.exists()) {return false;}FrameRecorder recorder = null;FrameGrabber grabber1 = null;FrameGrabber grabber2 = null;try {//抓取视频帧grabber1 = new FFmpegFrameGrabber(videoPath);//抓取音频帧grabber2 = new FFmpegFrameGrabber(audioPath);grabber1.start();grabber2.start();//创建录制recorder = new FFmpegFrameRecorder(outPut,grabber1.getImageWidth(), grabber1.getImageHeight(),grabber2.getAudioChannels());recorder.setFormat("mp4");recorder.setFrameRate(grabber1.getFrameRate());recorder.setSampleRate(grabber2.getSampleRate());recorder.start();Frame frame1;Frame frame2 ;//先录入视频while ((frame1 = grabber1.grabFrame()) != null ){recorder.record(frame1);}//然后录入音频while ((frame2 = grabber2.grabFrame()) != null) {recorder.record(frame2);}grabber1.stop();grabber2.stop();recorder.stop();} catch (Exception e) {e.printStackTrace();} finally {try {if (recorder != null) {recorder.release();}if (grabber1 != null) {grabber1.release();}if (grabber2 != null) {grabber2.release();}} catch (FrameRecorder.Exception e) {e.printStackTrace();}}return isCreated;}
完事大吉
java图片合成视频、音频及音频裁剪_MQ相关推荐
- java图片合成视频_使用JAVACV把图片合成视频
使用JAVACV1.2把图片合成视频,直接上代码.自己mark一下,也希望能够帮助更多的人. package test; import static org.bytedeco.javacpp.open ...
- Gocv图片合成视频(无音频)
Home :: GoCV - Golang Computer Vision Using OpenCV 4 写在前面: 我只用png和jpg图片生成了avi格式的视频,还不懂mp4怎么生成.我想我应该去 ...
- java图片合成视频
// TODO Auto-generated method stub String jpgDirPath = "E:\\img\\"; // jpg文件夹路径 ...
- 【实操】python opencv将图片合成视频,并插入音频
简介:将一组图片合成视频,并插入音频.用到opencv,ffmpy,pydub等库. 目录 一.统一图片大小及类型,并按数字排序 二.图片合成视频 三.音频的合并与剪裁 四.音视频融合 opencv基 ...
- 视频帧数(图片)和音频提取及保存方法图片合成视频方法---ffmpeg
视频帧数(图片)和音频提取及保存方法&图片合成视频方法-ffmpeg 环境:Ubuntu16.04.Python3.5.anaconda3 任务需要,要从视频里提取一定帧数的图片和音频,查了不 ...
- Java使用JDBC向数据库存取二进制数据(如图片,视频,音频等)
前言 上次写了一个用JDBC向数据库存取小说等大文本的案例用到了PreparedStatement和io流的相关知识.Java使用JDBC向数据库存取大文本(比如小说等)https://blog.cs ...
- layui实现文件压缩上传_基于SSM框架、Layui的多文件上传、包括图片,压缩包,音频等文件(与数据库挂钩) - 爱秧博客...
写在前面:当初为了实现一个多文件上传可是费了一番功夫,经过我日日夜夜的百度咨询,写了好几种方法,最终还是没能解决问题.我可以很负责任的告诉你,你去百度上不管你形容有多好,只要是涉及多文件,就会查到Mu ...
- Java提取视频中的音频
话不多说,上代码 Scanner scanner = new Scanner(System.in);System.out.println("请输入被提取音频的视频:");Strin ...
- 搭建Nginx+Vsftp图片、视频、音频服务器
所需工具包地址:http://download.csdn.net/detail/qierkang/9659233 所需环境: # 安装vsftpd yum -y install vsftpd # 启动 ...
最新文章
- jvm gc策略_IBM JVM调整– gencon GC策略
- 嵌入式OS入门笔记-以RTX为案例:一.简介
- 【机器学习】监督学习--(回归)多元线性回归
- 如何用WSUS2.0分发补丁
- 在Linux下基于路由策略的IP地址控制
- java匿名内部类 内部类_java中的匿名内部类详细总结
- H3CNE、H3CSE认证考试亲身奋斗过程的心得(拿出来晒晒)
- 人体的神经系统图 分布,人体脑神经系统分布图
- java 生成csv文件_Java生成CSV文件实例详解
- ubuntu防火墙关闭了为什么扫描端口还是过滤状态
- apidoc 自动化生成 api接口文档
- Android tcp与网络调试助手初入了解
- AI人工智能在当前和未来社会的应用领域
- Android聊天室(客户端)
- 云计算的云指的是什么?通俗解释云计算能做什么
- 图像几何变换--缩放、平移、镜像、旋转
- mac版+2018a+matlab,求助,mac系统 点击配置就报错,matlab版本2018a
- 前嗅ForeSpider教程:采集360问答
- 教程:编写 Transact-SQL 语句
- R计算两列数据的相关系数_相关系数简介及R计算