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相关推荐

  1. java图片合成视频_使用JAVACV把图片合成视频

    使用JAVACV1.2把图片合成视频,直接上代码.自己mark一下,也希望能够帮助更多的人. package test; import static org.bytedeco.javacpp.open ...

  2. Gocv图片合成视频(无音频)

    Home :: GoCV - Golang Computer Vision Using OpenCV 4 写在前面: 我只用png和jpg图片生成了avi格式的视频,还不懂mp4怎么生成.我想我应该去 ...

  3. java图片合成视频

    // TODO Auto-generated method stub         String jpgDirPath = "E:\\img\\"; // jpg文件夹路径    ...

  4. 【实操】python opencv将图片合成视频,并插入音频

    简介:将一组图片合成视频,并插入音频.用到opencv,ffmpy,pydub等库. 目录 一.统一图片大小及类型,并按数字排序 二.图片合成视频 三.音频的合并与剪裁 四.音视频融合 opencv基 ...

  5. 视频帧数(图片)和音频提取及保存方法图片合成视频方法---ffmpeg

    视频帧数(图片)和音频提取及保存方法&图片合成视频方法-ffmpeg 环境:Ubuntu16.04.Python3.5.anaconda3 任务需要,要从视频里提取一定帧数的图片和音频,查了不 ...

  6. Java使用JDBC向数据库存取二进制数据(如图片,视频,音频等)

    前言 上次写了一个用JDBC向数据库存取小说等大文本的案例用到了PreparedStatement和io流的相关知识.Java使用JDBC向数据库存取大文本(比如小说等)https://blog.cs ...

  7. layui实现文件压缩上传_基于SSM框架、Layui的多文件上传、包括图片,压缩包,音频等文件(与数据库挂钩) - 爱秧博客...

    写在前面:当初为了实现一个多文件上传可是费了一番功夫,经过我日日夜夜的百度咨询,写了好几种方法,最终还是没能解决问题.我可以很负责任的告诉你,你去百度上不管你形容有多好,只要是涉及多文件,就会查到Mu ...

  8. Java提取视频中的音频

    话不多说,上代码 Scanner scanner = new Scanner(System.in);System.out.println("请输入被提取音频的视频:");Strin ...

  9. 搭建Nginx+Vsftp图片、视频、音频服务器

    所需工具包地址:http://download.csdn.net/detail/qierkang/9659233 所需环境: # 安装vsftpd yum -y install vsftpd # 启动 ...

最新文章

  1. jvm gc策略_IBM JVM调整– gencon GC策略
  2. 嵌入式OS入门笔记-以RTX为案例:一.简介
  3. 【机器学习】监督学习--(回归)多元线性回归
  4. 如何用WSUS2.0分发补丁
  5. 在Linux下基于路由策略的IP地址控制
  6. java匿名内部类 内部类_java中的匿名内部类详细总结
  7. H3CNE、H3CSE认证考试亲身奋斗过程的心得(拿出来晒晒)
  8. 人体的神经系统图 分布,人体脑神经系统分布图
  9. java 生成csv文件_Java生成CSV文件实例详解
  10. ubuntu防火墙关闭了为什么扫描端口还是过滤状态
  11. apidoc 自动化生成 api接口文档
  12. Android tcp与网络调试助手初入了解
  13. AI人工智能在当前和未来社会的应用领域
  14. Android聊天室(客户端)
  15. 云计算的云指的是什么?通俗解释云计算能做什么
  16. 图像几何变换--缩放、平移、镜像、旋转
  17. mac版+2018a+matlab,求助,mac系统 点击配置就报错,matlab版本2018a
  18. 前嗅ForeSpider教程:采集360问答
  19. 教程:编写 Transact-SQL 语句
  20. R计算两列数据的相关系数_相关系数简介及R计算

热门文章

  1. iOS app脚手架
  2. CODOSYS之结构化文本(ST)—— 初级篇(四)基础-数据类型
  3. “.CHM文件”无法打开
  4. 哪里有英语,哪里有欢乐
  5. 数据库(Mysql)概述
  6. Cocoapod方式引入百川SDK -报错[!] Unable to find a specification for `xxx`
  7. CSS(b站学习记录)
  8. 路由环路的产生及解决
  9. 一个不用写代码的案例,来看看Flowable到底给我们提供了哪些功能?
  10. 国庆西北环游之旅(一大波照骗来袭)