使用java调用ffmpeg命令将视频分屏并音视频同时播放(二分屏)
实现想法
使用ffmpeg命令中的filter_complex(滤镜)参数来进行展示
引入javacv版本
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.6</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg-platform</artifactId><version>4.4-1.5.6</version></dependency>
命令
ffmpeg -i /file/test.mp4 -i /file/test.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w" out.mp4
核心方法
/*** 操作系统命令** @return*/public static void execute(List<String> command) {try {String join = String.join(" ", command);System.out.println(join);ProcessBuilder process = new ProcessBuilder(command);process.inheritIO().start().waitFor();} catch (Exception e) {e.printStackTrace();}}/***** @param videoPath 源视频路径* @param filterPath 带透明通道的视频路径* @param outputPath 目标视频路径*/public static void addSpecialEffects(String videoPath, String filterPath,int width,int height, String outputPath) throws Exception {List<String> command = Lists.newArrayList();//获取JavaCV中的ffmpeg本地库的调用路径String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);command.add(ffmpeg);command.add("-i");command.add(videoPath);command.add("-i");command.add(filterPath);command.add("-filter_complex");//2分屏 加2声音command.add("[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w");command.add("-filter_complex");command.add("amix=inputs=2:duration=first:dropout_transition=2,volume=1");command.add("-s");command.add(width+"*"+height);command.add(outputPath);long start = System.currentTimeMillis();execute(command);
调用
public static void main(String[] args) throws Exception {addSpecialEffects("./filelist/视频002.mp4","./filelist/视频001.mp4",1920,1080,"./filelist/test.mp4");}
成功截图
注意听,音视频都是有的
指定分辨率截图
命令说明
filter_complex滤镜的参数结构说明
[0:v] 这个里头两个参数,1表示的是操作对象的编号。在本例中0就是原始视频文件test.mp4,另一个参数v表示操作对象里的视频信息。
pad=iw*3 pad是将合成的视频宽高,这里iw代表第一个视频的宽,iw*3代表合成后的视频宽度加倍
ih ih为第一个视频的高
overlay 覆盖
指定分辨率
-s 1280*720
文档参考
javacv源码
学习java群
java交流群(限订阅了的加):868794080
使用java调用ffmpeg命令将视频分屏并音视频同时播放(二分屏)相关推荐
- java命令截图,GitHub - xuege-cn/fmj: FMJ (FFMpeg for Java)。通过Java调用FFMpeg命令的方式来对音视频进行处理(获取信息、截图等等)。...
项目介绍 FMJ (FFMpeg for Java) 通过Java调用FFMpeg命令的方式来对音视频进行处理(获取信息.截图等等). FFMpeg安装 建议使用 ffmpeg-2.6.1 版本 Li ...
- Android Java调用ffmpeg命令
0. 前言 ffmpeg命令很强大,但是在Android工程中无法执行可执行文件ffmpeg,即无法使用ffmpeg. 本文介绍把ffmpeg改造成库文件,然后通过JNI调用它,即可实现在Java中 ...
- 媒体文件转换工具ffmpeg命令行汇总(包括精准裁剪音视频)
转自:https://www.cnblogs.com/renhui/p/9223969.html 这个blog有一系列的ffmpeg的源码分析,建议系统读一下. 这里我重点关注的是精准裁剪视频,没想到 ...
- java调用FFmpeg实现视屏压缩
前言 最近做人脸识别,对于过大的视屏(10M)以上,识别失败的几率比较大.找了下相关的视屏压缩资料.首先使用的是jave进行视屏压缩,但是踩坑失败,jave中有转码的过程,虽然压缩成功,各种压缩参数也 ...
- 流媒体方案,技术开源项目,包含Java调用FFMpeg(FFCH4J),推拉流服务器,nginx-http-flv-module,ckplayer,Flv.js,EasyPlayer.js集成
文章目录 streaming_media 介绍 ckplayer拉流播放 软件介绍 功能介绍 软件架构 安装教程 使用说明 EasyPlayer.js拉流播放 简介 功能说明 集成使用示例 普通集成 ...
- ffmpeg sdk java_推荐一个强大的音视频处理的开源项目!
原标题:推荐一个强大的音视频处理的开源项目! 1.前景提要 在我们的开发中,经常会用到音视频相关内容,一般我们都会选择FFmpeg,但是其交叉编译对于我们来说是一件很麻烦的事情.所以这里方便日后使用就 ...
- mysql+视频文件转成流_详解java调用ffmpeg转换视频格式为flv
详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv43260.dll东西放到C:W ...
- java rtmp_搭建rtmp直播流服务之2:使用java实现ffmpeg命令接口化调用(用java执行ffmpeg命令)...
一.环境搭建 1.安装ffmpeg 下载对应系统的ffmpeg安装包,个人采用windows平台进行开发,所以安装了windows版本(各平台ffmpeg命令都是一样的,无须纠结) 2.ffmpeg的 ...
- Java调用ffmpeg进行视频.H264抽帧,并保存为图片
Java调用ffmpeg进行视频.H264抽帧,并保存为图片 1. 需求 2. 解决 3. 源码 参考 1. 需求 对视频 D:\data\01-test.H264进行抽帧并保存为图片,图片命名为1. ...
最新文章
- 会用python把linux命令写一遍的人,进大厂有多容易?
- iOS之CAEmitterLayer粒子引擎
- 多进程爬虫(爬取小说)Python实现
- html怎么设置z值,css z-index属性怎么用
- Android:如何生成自己的keystore(zz)
- 精心整理 25 个 Python 文本处理案例,收藏!
- 广东省2021高考2bi补录成绩查询,重磅!广东省2021年普通高考美术统考成绩1月8日起可查询!...
- apache axis 1.4的invoke方法设置超时_Kubernetes 网络故障常见排查方法
- C/C++头文件全解析
- 随笔(2)——未来智能穿戴:把计算机“织”进纤维里
- PHP报错:Cannot use a scalar value as an array
- 非华为电脑安装华为电脑管家步骤
- Base64原理和转换会变大33%左右的原因
- Android项目:天气预报App
- 提高软件开发工作效率的几种方法
- 双目标定(三)标定流程(含矫正)
- COPU副主席刘澎:中国开源在局部领域已接近或达到世界先进水平
- 光伏箱变保护测控装置
- 短信业务管理-移动短信接入
- pytest合集(3)— 命令行参数