集成海康视频下载mp4文件下载接口,编解码器由 MPEG-H Part2/HEVC(H.265)(hevc)转成H264-MPEG-4 AVC (part 10)(avc1)

问题背景:

最近在开发一套需要集成海康摄像头的系统,通过自研的系统(以下简称本系统),调用海康的NVR来调取存储在海康的历史视频文件,本系统页面集成的是西瓜播放器插件,版本3.x版本,经过实践证明,通过海康sdk直接下载的mp4文件,无法直接在西瓜视频播放。

经过排查得出:支持视频文件的格式是:编解码器:H264-MPEG-4 AVC (part 10)(avc1)

 而实际海康的视频格式:编解码器: MPEG-H Part2/HEVC(H.265)(hevc)

 

之后,经过几天跟海康官方的技术人员联系,说海康支持转H.264格式,通过在页面上进行设置,如下图:

 

 海康转码的格式为:编解码器: H264-MPEG-4 AVC(part 10)(h264),视频还是播放不了。

最终排查得出,西瓜视频插件支持的是:H264-MPEG-4 AVC (part 10)(avc1),不是H264-MPEG-4 AVC(part 10)(h264),后来,发现avc1和h264在编码上面还是存在细微差异。处理步骤如下:

1.先下载视频流处理的相关依赖

       <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-core</artifactId>
            <version>2.4.5</version>
        </dependency>
            <!--    核心包-->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-native-win64</artifactId>
            <version>2.4.5</version>
        </dependency>
            <!--   这个是在windows环境下的jar,使用不同的环境,会调用不同的jar文件-->
        <dependency>
            <groupId>ws.schild</groupId>
            <artifactId>jave-native-linux64</artifactId>
            <version>2.4.5</version>
        </dependency>
        <!--   这个是在linux环境下的jar-->

2.编写转码文件

//源视频位置
        File file = new File("F:\\xxx\\xxxx\\2024\\05\\0527\\xxxxx.mp4");
        //目标视频位置
        File file1 = new File("F:\\xxx\\xxxx\\2024\\05\\0527\\xxx_20240527080000_20240527081000.mp4");
        // 创建转码器
        AudioAttributes audio = new AudioAttributes();
        //指定编码
        audio.setCodec("aac");
        audio.setBitRate(new Integer(128000));
        //通道
        audio.setChannels(new Integer(2));
        audio.setSamplingRate(new Integer(44100));
        VideoAttributes video = new VideoAttributes();
        //设置编解码器
        video.setCodec("h264");
        video.setX264Profile(VideoAttributes.X264_PROFILE.BASELINE);
        video.setBitRate(new Integer(400000));
        //设置帧率
        video.setFrameRate(new Integer(25));
        //设置大小
        video.setSize(new VideoSize(2560, 1440));
        EncodingAttributes attrs = new EncodingAttributes();
        //格式
        attrs.setFormat("mp4");
        attrs.setAudioAttributes(audio);
        attrs.setVideoAttributes(video);
        // 进行转码
        Encoder encoder = new Encoder();
        encoder.encode(new MultimediaObject(file), file1, attrs);

3.播放成功

 觉得写的不错的朋友,请点点赞!❤❤❤❤❤❤❤❤ 

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值