javacv ffmpeg使用笔记
一、maven依赖
使用javacv ffmpeg并指定
classifier
之后,就不需要额外安装ffmpeg软件(jar包中已经内置)了。
- 全量依赖包(不推荐)安装包总大小超过1G
xml
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>${javacv.version}</version>
</dependency>
- 最小化安装
可使用
mvn enforcer:display-info
查看当前操作系统信息
xml
<javacv.version>1.5.9</javacv.version>
<dependencies>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>${javacv.version}</version>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>6.0-${javacv.version}</version>
<classifier>linux-x86_64</classifier>
</dependency>
</dependencies>
<profiles>
<profile>
<id>Windows</id>
<activation>
<os>
<!-- mvn enforcer:display-info -->
<family>windows</family>
</os>
</activation>
<dependencies>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>6.0-${javacv.version}</version>
<classifier>windows-x86_64</classifier>
</dependency>
</dependencies>
</profile>
<profile>
<id>Mac</id>
<activation>
<os>
<!-- mvn enforcer:display-info -->
<family>mac</family>
</os>
</activation>
<dependencies>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>6.0-${javacv.version}</version>
<classifier>macosx-x86_64</classifier>
</dependency>
</dependencies>
</profile>
</profiles>
二、示例代码
1. 获取视频时长
java
public static void videoDuration(String videoFilePath) {
try (FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(videoFilePath)) {
frameGrabber.start();
int duration = frameGrabber.getLengthInVideoFrames()/ (int) frameGrabber.getFrameRate();
System.out.println(duration);
frameGrabber.stop();
} catch (FrameGrabber.Exception e) {
e.printStackTrace();
}
}
三、小技巧
- 日志级别
java
static {
avutil.av_log_set_level(avutil.AV_LOG_DEBUG);
FFmpegLogCallback.set();
}