zoukankan      html  css  js  c++  java
  • Java根据视频的URL地址,获取视频时长

    参考大佬的博客https://www.cnblogs.com/yoyoyu/p/14255264.html,可以不用下载视频而获取视频时长。

    第一步:先引入Maven依赖

    <dependencies>
       <!-- jave核心包 -->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-core</artifactId>
            <version>2.4.6</version>
        </dependency>
        <!-- window64位 ffmpeg -->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-native-win64</artifactId>
            <version>2.4.6</version>
        </dependency>
        <!-- linux64位 ffmpeg -->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-native-linux64</artifactId>
            <version>2.4.6</version>
        </dependency>
    
    </dependencies>

    第二步:在业务层main.java下新建包ws.schild.jave(目的是和jave的jar包路径一致,这样就可以使用jar包中非public类,方便改造。)

    第三步:复制jave中的MultimediaObject类在新建的包中重名名为FfmpegFileInfo,需要修改三个地方

    1.注释掉88行变量Macher m;

    2.注释掉126行的String token;

     3.修改getInfo()方法为

    public MultimediaInfo getInfo(String url) throws InputFormatException, EncoderException {
            FFMPEGExecutor ffmpeg = this.locator.createExecutor();
            ffmpeg.addArgument("-i");
            ffmpeg.addArgument(url);
            try {
                ffmpeg.execute();
            } catch (IOException var8) {
                throw new EncoderException(var8);
            }
    
            MultimediaInfo var3;
            try {
                RBufferedReader reader = new RBufferedReader(new InputStreamReader(ffmpeg.getErrorStream()));
                var3 = this.parseMultimediaInfo(this.inputFile, reader);
            } finally {
                ffmpeg.destroy();
            }
            return var3;
    
    }

    第四步:使用

    /**
         * 获取URL地址获取视频文件长度
         *
         * @param filePath 文件路径
         * @return 视频长度(单位:秒)
         */
        private long getURLVideoSecond(String filePath) {
            File file = new File(filePath);
            try {
                FfmpegFileInfo ffmpegFileInfo = new FfmpegFileInfo(file);
                ws.schild.jave.MultimediaInfo info = ffmpegFileInfo.getInfo(filePath);
                return info.getDuration() / 1000;
            } catch (Exception e) {
                log.error("获取URL视频文件时长失败", e);
                return 0;
            }
        }
  • 相关阅读:
    梦断代码读书笔记2
    梦断代码读书笔记1
    几篇有用的博客链接
    关于我的Androidstudio的再生
    项目下app目录的具体说明
    关于Android studio的项目界面各部分的认识
    1088 最长回文子串 分类: 51nod 2015-07-20 22:09 8人阅读 评
    1083 矩阵取数问题 分类: 51nod 2015-07-20 22:05 9人阅读 评
    1087 1 10 100 1000 分类: 51nod 2015-07-18 21:59 6人
    51nod 1091 线段的重叠 分类: 51nod 2015-07-18 21:49 7人阅读
  • 原文地址:https://www.cnblogs.com/zou-rong/p/14380994.html
Copyright © 2011-2022 走看看