Java获取视频参数信息

Java 获取视频参数信息

资料收集

经过搜索常用的处理视频的方式有两种:xugglerffmpeg

ffmpeg 需要使用JNI调用,这里采用xuggler方式

使用xuggler获取视频宽、高、时长等信息

以下内容参考这篇文章

  • 引入maven配置
    xuggle 依赖 slf4j-api
<dependency>
     <groupId>xuggle</groupId>
     <artifactId>xuggle-xuggler</artifactId>
     <version>5.4</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>
  • 测试代码
import com.xuggle.xuggler.ICodec;
import com.xuggle.xuggler.IContainer;
import com.xuggle.xuggler.IStream;
import com.xuggle.xuggler.IStreamCoder;

public class XuggleTest {

    public static void main(String[] args) {
        String filename = "/home/langzi/Videos/2a8ea83e4e674a8fb1c5bcf9b6313ca5.mp4";
        // first we create a Xuggler container object
        IContainer container = IContainer.make();

        // we attempt to open up the container
        int result = container.open(filename, IContainer.Type.READ, null);

        // check if the operation was successful
        if (result<0)
            throw new RuntimeException("Failed to open media file");

        // query how many streams the call to open found
        int numStreams = container.getNumStreams();

        // query for the total duration
        long duration = container.getDuration();

        // query for the file size
        long fileSize = container.getFileSize();

        // query for the bit rate
        long bitRate = container.getBitRate();

        System.out.println("Number of streams: " + numStreams);
        System.out.println("Duration (ms): " + duration);
        System.out.println("File Size (bytes): " + fileSize);
        System.out.println("Bit Rate: " + bitRate);

        // iterate through the streams to print their meta data
        for (int i=0; i<numStreams; i++) {

            // find the stream object
            IStream stream = container.getStream(i);

            // get the pre-configured decoder that can decode this stream;
            IStreamCoder coder = stream.getStreamCoder();

            System.out.println("*** Start of Stream Info ***");

            System.out.printf("stream %d: ", i);
            System.out.printf("type: %s; ", coder.getCodecType());
            System.out.printf("codec: %s; ", coder.getCodecID());
            System.out.printf("duration: %s; ", stream.getDuration());
            System.out.printf("start time: %s; ", container.getStartTime());
            System.out.printf("timebase: %d/%d; ",
                    stream.getTimeBase().getNumerator(),
                    stream.getTimeBase().getDenominator());
            System.out.printf("coder tb: %d/%d; ",
                    coder.getTimeBase().getNumerator(),
                    coder.getTimeBase().getDenominator());
            System.out.println();

            if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO) {
                System.out.printf("sample rate: %d; ", coder.getSampleRate());
                System.out.printf("channels: %d; ", coder.getChannels());
                System.out.printf("format: %s", coder.getSampleFormat());
            } else if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO) {
                System.out.printf("width: %d; ", coder.getWidth());
                System.out.printf("height: %d; ", coder.getHeight());
                System.out.printf("format: %s; ", coder.getPixelType());
                System.out.printf("frame-rate: %5.2f; ", coder.getFrameRate().getDouble());
            }

            System.out.println();
            System.out.println("*** End of Stream Info ***");

        }
    }
}
  • 执行结果
    执行结果
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要使用Java获取微信视频视频,首先需要了解微信视频号开放平台的接口规范和认证流程。 1. 完成开发者注册和认证:在微信视频号开放平台注册一个开发者账号并完成认证,获得开发者的appId和appSecret。 2. 获取access_token:使用HttpClient或其他HTTP请求库发送GET请求,向微信开放平台接口获取access_token。请求的URL为:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET。其中,APPID为开发者的appId,APPSECRET为开发者的appSecret。 3. 获取视频素材列表:使用HttpClient发送GET请求,向微信开放平台接口获取视频素材列表。请求的URL为:https://api.weixin.qq.com/wxaapi/broadcast/getvideolist?access_token=ACCESS_TOKEN。其中,ACCESS_TOKEN为获取到的access_token。 4. 解析返回结果:对获取到的视频素材列表进行解析,并提取所需的视频信息,如视频ID、标题、封面图等。 5. 选择目标视频:根据需求选择需要获取的具体视频。 6. 获取视频素材:使用HttpClient发送GET请求,向微信开放平台接口获取视频素材。请求的URL为:https://api.weixin.qq.com/wxaapi/broadcast/getvideo?access_token=ACCESS_TOKEN&media_id=MEDIA_ID。其中,ACCESS_TOKEN为获取到的access_token,MEDIA_ID为目标视频的ID。 7. 处理视频素材:对获取到的视频素材进行处理,如保存到本地或进行其他操作。 需要注意的是,此处只是简单的概括了获取微信视频视频的过程,具体实现过程可能会因微信开放平台的接口规范而有所不同。在开发过程中,还需要注意接口的调用频率限制、参数的正确传递等问题。同时,使用合适的库或框架可以简化开发流程,如使用Spring Boot来构建项目、使用OkHttp来发送HTTP请求、使用Jackson来进行JSON解析等。 ### 回答2: 要使用Java获取微信视频号的视频,需要借助微信公众平台提供的接口。 首先,使用Java编写代码,通过HTTP请求访问微信公众平台的API接口。可以使用Java的HttpClient库或者OkHttp库来发送GET、POST等请求。 接着,需要获取到微信的access token,用于身份验证。可以通过接口获取授权后的access token,或者使用第三方库来实现授权流程。 然后,使用获取到的access token构造请求URL,调用微信公众平台的视频接口。具体的接口地址可以参考微信开发文档。 在调用视频接口时,需要提供视频的唯一标识,可以是视频的ID或者其他识别码。同时,还可以设置一些参数,如视频的起始时间、结束时间等。 最后,解析接口返回的数据,可以使用JSON解析库来解析返回的JSON格式数据。根据返回的结果,可以获取视频的相关信息,如视频的标题、封面、时长等。 总结起来,获取微信视频视频需要先获取access token,然后构造请求URL,调用接口获取视频信息,最后解析返回的数据。通过Java的HTTP请求和JSON解析库,可以很方便地实现这个过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值