javacv ffmpeg使用笔记 (补充中...)

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();
    }
相关推荐
_Kayo_20 分钟前
node.js 学习笔记3 HTTP
笔记·学习
星星火柴9364 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
Cx330❀7 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
小幽余生不加糖7 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
..过云雨8 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习
胡耀超8 小时前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
python·深度学习·ffmpeg·音视频·语音识别·多模态·asr
byxdaz8 小时前
FFmpeg QoS 处理
ffmpeg
岑梓铭9 小时前
考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】
笔记·考研·408·计算机组成原理·计组
Blossom.11815 小时前
把 AI 推理塞进「 8 位 MCU 」——0.5 KB RAM 跑通关键词唤醒的魔幻之旅
人工智能·笔记·单片机·嵌入式硬件·深度学习·机器学习·搜索引擎
草莓熊Lotso15 小时前
《吃透 C++ 类和对象(中):const 成员函数与取地址运算符重载解析》
c语言·开发语言·c++·笔记·其他