下面分享一个我之前在java中使用FFmpeg将图片和音频合成视频的demo。

package com.xxx.console.videoProcess;import java.awt.image.BufferedImage;
import java.io.File;import org.bytedeco.javacpp.avcodec;
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.OpenCVFrameConverter;import com.xxx.console.photoProcess.PhotoProcess;import static org.bytedeco.javacpp.opencv_imgcodecs.cvLoadImage;public class GenerateVideo {public void dojob(String picturesPath, String audioPath, String videoPath) throws Exception {FrameGrabber audioFrames = new FFmpegFrameGrabber(audioPath);audioFrames.start();int frameRate = 2;FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(videoPath, 640, 480, audioFrames.getAudioChannels());recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); recorder.setFormat("mp4");recorder.setFrameRate(frameRate);recorder.setPixelFormat(0); recorder.start();OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();File file = new File(picturesPath);File[] flist = file.listFiles();IplImage[] images = new IplImage[flist.length];PhotoProcess photoProcess = new PhotoProcess();int width = 640;for (int i = 0; i < flist.length; i++) {String fname = picturesPath + "/" + (i + 1) + ".jpg";// 调整图片的大小,未贴出源码,可以删除跳过BufferedImage image = photoProcess.scalePhotoFromFile(fname, width);images[i] = photoProcess.toIplImage(image).clone();}Frame frameAudio;for (int j = 0; j < 80; ++j) {frameAudio = audioFrames.grabFrame();}for (int i = 0; i < flist.length; ++i) {for (int j = 0; j < frameRate * 2; ++j) {for (int k = 0; k < 80 / (frameRate * 2); ++k) {frameAudio = audioFrames.grabFrame();recorder.record(frameAudio);}recorder.record(conveter.convert(images[i]));}}audioFrames.stop();recorder.stop();recorder.release();}
}

在java中使用FFmpeg将图片和音频合成视频相关推荐

  1. java中文件处理之图片_在Java 7中处理文件

    java中文件处理之图片 以下是The Well-Grounded Java Developer的草稿的修改后的片段. 它使您快速了解与以前版本相比,在Java 7中操作文件要容易得多. 通过使用新的 ...

  2. java中为按钮添加图片_我们可以在Java接口中为成员定义私有和受保护的修饰符吗?...

    java中为按钮添加图片 No, it is not possible to define private and protected modifiers for the members in int ...

  3. java中为按钮添加图片_如何在Java中为字符串添加双引号?

    java中为按钮添加图片 In Java, everything written in double-quotes is considered a string and the text writte ...

  4. java中文件处理之图片_Java中的文件处理

    java中文件处理之图片 File Handing in java comes under IO operations. Java IO package java.io classes are spe ...

  5. java中Excel导出echart图片

    java中Excel导出echart图片 1.在生成echart的前端代码生成图片代码后Echart.setOption(captestRcapEchartOption, true);后面加上以下代码 ...

  6. thumbnails java_在JAVA中使用Thumbnails为图片加水印

    在JAVA中使用Thumbnails为图片加水印 将D盘下面的cat.jpg作为水印加在2.jpg上面,输出新的图片2_cat.jpg到D盘下面 1.java类import java.io.File; ...

  7. java中把gui插入图片_在java中使用图片实现gui的美化.pdf

    在java中使用图片实现gui的美化.pdf 还剩 3页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 图形图像处理GRAPHICS AND IMAGE ...

  8. Java中使用tess4J进行图片文字识别(支持中文)

    Java 版本:建议JDK1.8  使用的软件是tesseractocr3.02,3以后的版本才支持中文, 这个软件需要安装在本地电脑中,安装的过程中全部都按照默认进行安装(以便于Java直接调用) ...

  9. 在java中如何让背景图片连续不断地滚动_JS实现图片的不间断连续滚动

    js替代marquee实现图片无缝滚动 可能大家都碰到过,当marquee中滚动的是图片的时候,滚到终点的时候直接就跳回到起点了,而不像文字那样可以无缝滚动,下面介绍的是通过js来实现图片的无缝滚动. ...

最新文章

  1. HTML5+MUI+HBuilder 之初探情人
  2. 网站推广专员浅析不做大幅修改如何调整网站推广内容?
  3. sql 使用存储过程传递列名或表名作为参数
  4. spring boot实战(第六篇)加载application资源文件源码分析
  5. NYOJ题目10505C?5S?
  6. ioc spring 上机案例_通过实例解析Spring Ioc项目实现过程
  7. 十八、对已经找到轮廓的图像进行测量
  8. linux下开启dhcp服务器配置,CentOS下DHCP服务器的配置
  9. 师范生计算机期末考试题目,2015年深圳宝安区计算机教师招聘考试试题[师范生发布]无答案...
  10. 教你如何制作网页木马
  11. 【专题5:硬件设计】 之 【50.运算放大器详解b - 负反馈电路、正反馈电路和共模干扰】
  12. 微商扫码发货管理系统开发
  13. Java序列化,碰到serialVersionUID不一致怎么处理?
  14. Net6.0项目发布到IIS 503
  15. autojs免root脚本引擎编写的QQ空间点赞脚本源码
  16. 配置CLion clang-format保存时自动格式化
  17. Windows10家庭版升级至专业版
  18. supervisord使用
  19. ISLR读书笔记(1)统计学习简介
  20. FRM1 P1B1P1B2 整理笔记

热门文章

  1. 「Python条件结构」嵌套if:实现奖学金评定
  2. BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View
  3. [bzoj4816][Sdoi2017]数字表格 (反演+逆元)
  4. Android OpenGL ES(十一):绘制一个20面体
  5. python自动化操作电脑的简单实现
  6. 什么是域名劫持?遇到域名劫持要怎么处理
  7. 2010新浪笔试---数据挖掘
  8. 加拿大学校申请条件获关注,雅思专家有话说
  9. 利用机器学习分析脑电数据(原理分析+示例代码+快速上手)
  10. Python+OpenCV 识别银行卡卡号