java处理视频_Java使用FFmpeg处理视频[视频直播三]
承接上文。
【拓展】
有人问我,怎么配置互联网环境的Mevan,这里拓展一下。
settings_outweb.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
继续正题,上篇咱们讲到 使用命令可以完成一系列的操作
1、视频格式转换:ffmpeg -i 123.mp4 newVideo.avi
**2、视频分段:ffmpeg -i 80s.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 60 output/output.m3u8
**3、音视频合并:ffmpeg -i test2.mp3 -i test1.mp4 -t 10 -y newVideo.mp4
等等,详见官方文档
《英文版的哦》
其实,这里只是做了一点,使用Java执行上述命令。
【ffmpeg与Java实现视频转换小demo】
package com.example.demo;
import org.assertj.core.util.Lists;
import org.junit.Test;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
public class MediaUtil {
/**
* 简易视频处理 -- (cmd(windows): ffmpeg.exe -i test1.mp4 newVideo.avi)
*
* @param ffmpegPath ffmpeg.exe文件路径,可在rest或者admin中进行配置,使用配置文件进行读取
* @param videoInputPath 视频文件路径(输入)
* @param videoOutputPath 转换完成的文件路径(输出)
* @throws Exception
*/
public static void videoConvert(String ffmpegPath, String videoInputPath, String videoOutputPath) throws Exception {
// 构建命令
List command = Lists.newArrayList();
command.add(ffmpegPath);
command.add("-i");
command.add(videoInputPath);
command.add(videoOutputPath);
// 执行操作
ProcessBuilder builder = new ProcessBuilder(command);
Process process = builder.start();
InputStream errorStream = process.getErrorStream();
InputStreamReader isr = new InputStreamReader(errorStream);
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null) {
}
if (br != null) {
br.close();
}
if (isr != null) {
isr.close();
}
if (errorStream != null) {
errorStream.close();
}
}
@Test
public void testVideoConvert() {
String ffmpegPath = "ffmpeg";
String videoInputPath = "D:\\Frozen\\frozen_nb\\video\\realvideo\\123.mp4";
String videoOutputPath = "D:\\Frozen\\frozen_nb\\video\\realvideo\\newVideo.avi";
//fmpegProperties ffmpegProperties = SpringContextHolder.getBean(FfmpegProperties.class);
//ffmpegProperties.getFfmpegFile()
try {
videoConvert(ffmpegPath, videoInputPath, videoOutputPath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
漫长的等待其转换完成......
5分多钟,视频终于转换完成了
播放正常
【再来一个小demo】
/**
* 获取第一秒第一帧的缩略图 -- (cmd(windows): ffmpeg.exe -ss 00:00:01 -y -i test1.mp4 -vframes 1 new.jpg)
*
* @param ffmpegPath ffmpeg.exe文件路径,可在rest或者admin中进行配置,使用配置文件进行读取
* @param videoInputPath 视频文件路径(输入)
* @param coverOutputPath 缩略图输出路径
* @throws Exception
*/
public static void getVideoCover(String ffmpegPath, String videoInputPath, String coverOutputPath) throws Exception {
// 构建命令
List command = Lists.newArrayList();
command.add(ffmpegPath);
command.add("-ss");
command.add("00:45:22");
command.add("-y");
command.add("-i");
command.add(videoInputPath);
command.add("-vframes");
command.add("1");
command.add(coverOutputPath);
// 执行操作
ProcessBuilder builder = new ProcessBuilder(command);
Process process = builder.start();
InputStream errorStream = process.getErrorStream();
InputStreamReader isr = new InputStreamReader(errorStream);
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null) {
}
if (br != null) {
br.close();
}
if (isr != null) {
isr.close();
}
if (errorStream != null) {
errorStream.close();
}
}
@Test
public void testGetVideoCover() {
String videoInputPath = "D:\\Frozen\\frozen_nb\\video\\realvideo\\123.mp4";
String videoOutputPath = "D:\\Frozen\\frozen_nb\\video\\realvideo\\frozen.jpg";
try {
getVideoCover("ffmpeg", videoInputPath, videoOutputPath);
} catch (Exception e) {
e.printStackTrace();
}
}
java处理视频_Java使用FFmpeg处理视频[视频直播三]相关推荐
- java ffmpeg 合并视频_java使用ffmpeg进行多个视频合并
1.导言 项目需要使用FFmpeg进行MP4视频合并 2.代码 package com; import java.io.*; import java.text.SimpleDateFormat; im ...
- ffmpeg java 播放视频_Javacv使用ffmpeg实现音视频同步播放
最近用javaCV的ffmpeg包的FFmpegFrameGrabber帧捕捉器对捕捉到的音频帧和视频帧做了同步的播放.采用的同步方法是视频向音频同步. 具体的思路如下: (1)首先介绍ffmpeg是 ...
- 【Android FFMPEG 开发】音视频基础 和 FFMPEG 编译 ( 音视频基础 | MPEG-4 标准 | Android 开发环境 | FFMPEG 交叉编译 | 安卓项目导入配置 )
本篇博客代码及资源下载 : https://download.csdn.net/download/han1202012/10382762 文章目录 一. 音视频基础 1. 音频基础 (1) 声音要素 ...
- php 图片生成视频,PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法
本文实例讲述了PHP基于ffmpeg实现转换视频,截图及生成缩略图的方法.分享给大家供大家参考,具体如下: 这里把ffmpeg 和 生成缩略图整合了一下: include("ImageRe ...
- java 合并视频_Java 合并多个MP4视频文件
局限性 只支持MP4文件 经过尝试对于一些MP4文件分割不了 依赖 com.googlecode.mp4parser isoparser 1.1.22 工具类 package com.example. ...
- java mp4分割_Java 合并多个MP4视频文件
局限性 只支持mp4文件 经过尝试对于一些mp4文件分割不了 依赖 com.googlecode.mp4parser isoparser 1.1.22 工具类 package com.example. ...
- java二进制视频_Java二进制概念(含视频)
我们平时认识的数字比如1.2.3.4等数字叫做十进制数字,我们可以看懂,但是计算机无法运算,如果计算机要计算这些数字就得将这些数字转换成计算机能读懂的数据,计算只能读懂二进制数字,二进制的数字有什么特 ...
- java程序设计教程视频_Java程序设计标准教程:DVD视频教学版
第1章 搭建Java开发环境. 001 1.1 Java语言的产生与发展 002 1.2 Java语言的特点 002 1.3 搭建Java开发环境 003 1.3.1 下载JDK 003 1.3.2 ...
- python 视频截取 利用ffmpeg截取MP4视频片段
学python没多久,发现OpenCV做的视频截取出来的视频无声的 水平有限也没搞明白怎么处理,后面用FFmpeg整了个,如学弟.学妹有用到我这个自行百度怎么配置FFmpeg环境配置,配置好再测试代码 ...
最新文章
- 辞去美国终身教职回国的帅教授,拟增列为顶尖985大学博导
- 首次公开!深度学习在知识图谱构建中的应用
- python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
- Windos 10 下,应用版ubuntu系统, 访问windos文件系统
- Gartner魔力象限IBM被评为固态阵列市场领导厂商
- c语言与python的区别
- 机械错题集锦2017-12-21
- Mysql 常用函数总结
- 牛刀小试Oracle之ORACLE 11GR2 RAC安装配置--检测GI软件是否正常(三)
- 关于python变量_关于python变量练习题
- java long 除法运算_java基础知识学习文档二
- Cmder的安装与配置
- 项目经理成长之路的三个层次
- python如何进行双色球抽奖_Python趣味实例,实现一个简单的抽奖刮刮卡
- Everybody wants to love and be loved
- 密码学_最近在论证一个问题,到底是先有鸡还是先有蛋
- BLE蓝牙连接不稳定以及突然断开的原因和解决方法
- iOS9有哪些新特性
- 令人惊艳的80个免费学习网站,每一个都备受好评!
- php 直接上传到七牛云,七牛云存储-如何使用php上传大文件到七牛云储?
热门文章
- python怎么查找代码位置查询_Python查询IP地址归属完整代码
- 调用实现天气预报功能android,Android编程实现获取新浪天气预报数据的方法
- 如何设置文字的位置html5,怎么设置文字在表格中的位置
- Docker 常用命令 (持续更新)
- Linux帮助使用方法详解
- 去掉WIN7系统用户登陆界面(默认用户自动登录)
- 原来 Kubernetes 部署如此简单,看完全明白了
- 从技术谈到管理,把系统优化的技术用到企业管理
- 浅谈程序员的“内卷化”
- 有大佬通过研发这款Chrome插件的使用教程,赚了上百万! 网友:互联网的钱太好赚了~...