没有合适的资源?快使用搜索试试~ 我知道了~
Java使用FFmpeg处理视频文件的方法教程
19 下载量 168 浏览量
2020-08-26
06:32:44
上传
评论
收藏 140KB PDF 举报
温馨提示


试读
10页
主要给大家介绍了关于Java使用FFmpeg处理视频文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
资源推荐
资源详情
资源评论















Java使用使用FFmpeg处理视频文件的方法教程处理视频文件的方法教程
主要给大家介绍了关于Java使用FFmpeg处理视频文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
需要的朋友们下面来一起学习学习吧
前言前言
本文主要讲述如何使用Java + FFmpeg实现对视频文件的信息提取、码率压缩、分辨率转换等功能;
之前在网上浏览了一大圈Java使用FFmpeg处理音视频的文章,大多都讲的比较简单,楼主在实操过程中踩了很多坑也填了很多坑,希望这份详细的踩坑&填坑指南能帮助到大
家;
1. 什么是什么是FFmpeg
点我了解
2. 开发前准备开发前准备
在使用Java调用FFmpeg处理音视频之前,需要先安装FFmpeg,安装方法分为两种:
引入封装了FFmpeg的开源框架
在系统中手动安装FFmpeg
2.1 引入封装了引入封装了FFmpeg的开源框架的开源框架
JAVE.jar(官网点我) 是一个封装了FFmpeg的Java框架,在项目中能直接调用它的API来处理音视频文件;
优点:使用方便,直接在项目中引入JAVE.jar即可处理媒体文件,且开发完成后可以随工程一起打包发布,不需要在目标运行环境内手动安装FFmpeg相关的类库
缺点:JAVE.jar最后一次更新是2009年,其封装的FFmpeg版本是09年或更早前的版本,比较老旧,无法使用一些新特性
(当然也可以看看有没有其他比较新的封装了FFmpeg的框架)
Maven坐标如下:
<dependency>
<groupId>org.ffmpeg</groupId>
<artifactId>sdk</artifactId>
<version>1.0.2</version>
</dependency>
2.2 在系统中手动安装在系统中手动安装FFmpeg
在运行环境中手动安装FFmpeg稍微有一些麻烦,可以百度 windows/mac安装FFmpeg 这样的关键字,根据网上的安装教程将FFmpeg安装到系统中;
懒人链接:Windows安装教程 Mac安装教程
优点:可以直接调用FFmpeg的相关API处理音视频,FFmpeg版本可控
缺点:手动安装较为麻烦,开发环境与目标运行环境都需要先安装好FFmpeg
3. 使用使用FFmpeg处理音视频处理音视频
使用JAVE.jar进行开发与直接使用FFmpeg开发的代码有一些不同,这里以直接使用FFmpeg进行开发的代码进行讲解(开发环境MacOS);(使用JAVE的代码、直接使用
FFmpeg的代码都会附在文末供大家下载参考)
通过MediaUtil.java类及其依赖的类,你将可以实现:
解析源视频的基本信息,包括视频格式、时长、码率等;
解析音频、图片的基本信息;
将源视频转换成不同分辨率、不同码率、带或不带音频的新视频;
抽取源视频中指定时间点的帧画面,来生成一张静态图;
抽取源视频中指定时间段的帧画面,来生成一个GIF动态图;
截取源视频中的一段来形成一个新视频;
抽取源视频中的音频信息,生成单独的MP3文件;
对音视频等媒体文件执行自定义的FFmpeg命令;
3.1 代码结构梳理代码结构梳理
MediaUtil.java是整个解析程序中的核心类,封装了各种常用的解析方法供外部调用;
MetaInfo.java定义了多媒体数据共有的一些属性,VideoMetaInfo.java MusicMetaInfo.java ImageMetaInfo.java都继承自MetaInfo.java,分别定义了视频、音频、图片数据相关
的一些属性;
AnimatedGifEncoder.java LZWEncoder.java NeuQuant.java在抽取视频帧数、制作GIF动态图的时候会使用到;
CrfValueEnum.java 定义了三种常用的FFmpeg压缩视频时使用到的crf值,PresetVauleEnum.java定义了FFmpeg压缩视频时常用的几种压缩速率值;
有关crf、preset的延伸阅读点我
3.2 MediaUtil.java主程序类解析主程序类解析
3.2.1 使用前需要注意的几点使用前需要注意的几点
1、指定正确的FFmpeg程序执行路径
MacOS安装好FFmpeg后,可以在控制台中通过which ffmpeg命令获取FFmpeg程序的执行路径,在调用MediaUtil.java前先通过其 setFFmpegPath() 方法设置好FFmpeg程序在
系统中的执行路径,然后才能顺利调用到FFmpeg去解析音视频;
Windows系统下该路径理论上应设置为:FFmpeg可执行程序在系统中的绝对路径(实际情况有待大家补充)
2、指定解析音视频信息时需要的正则表达式
因项目需要解析后缀格式为 .MP4 .WMV .AAC 的视频和音频文件,所以我研究了JAVE.jar底层调用FFmpeg时的解析逻辑后,在MediaUtil.java中设置好了匹配这三种格式的正
则表达式供解析时使用(参考程序中的 durationRegex videoStreamRegex musicStreamRegex 这三个表达式值);
注意:注意:如果你需要解析其他后缀格式如 .MKV .MP3 这样的媒体文件时,你很可能需要根据实际情况修改durationRegex videoStreamRegex musicStreamRegex 这三个正则表达
式的值,否则可能无法解析出正确的信息;
3、程序中的很多默认值你可以根据实际需要修改,比如视频帧抽取的默认宽度或高度值、时长等等;
3.2.2 MediaUtil.java代码代码
资源评论


weixin_38699724
- 粉丝: 5
- 资源: 934
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- SIEMENS 1FK7022-5AK71-1LG2 电机电子铭牌固件
- ubuntu新手使用教程文件管理命令大全
- 飞机运动轨迹,运动状态
- bugreport-phoenix-RKQ1.200826.002-2023-12-05-16-39-12.zip
- 基于MovieLens数据集的电影推荐模型
- rt-thread-code-stm32f446-st-nucleo.rar对STM32F4系列设计的NUCLEO-F446ZE
- SIEMENS G120-ROM-24C08 340 固件
- Python 植物大战僵尸代码实现
- 将vue项目用electron打包为客户端程序
- 将vue项目用electron打包为客户端程序
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
