精华内容
下载资源
问答
  • 视频共有95讲,25个G,是韩顺平老师的课程,讲的非常详细透彻,有关于基本语法的知识,也有案例的讲解,适合Java初学者同时对于想进一步提高Java编程能力的人也有帮助。资源若失效,可以联系我,QQ2891469579.
  • java视频管理系统

    2016-09-09 22:09:38
    java 视频系统 web系统
  • 2017最新整理达内Java视频全套教学实录 教程 从简入深,教学风趣幽默 很适合初学者和想要提高基础的学生 教程全面并且新颖
  • java视频格式转换

    热门讨论 2014-08-01 10:51:26
    java视频格式转换,使用ffgpeg,mencoder技术实现
  • java视频转码

    2014-02-26 15:27:06
    该资源可以帮助你解决视频之间的转码问题,轻松实现视频格式之间的转换
  • 最新的webrtc视频会议的实现。 最后测试于2014/10/22 jdk1.7以上 tomcat 7.0以上
  • java视频播放器java视频播放器

    热门讨论 2011-07-15 10:25:47
    java视频播放器java视频播放器java视频播放器java视频播放器java视频播放器java视频播放器
  • Java视频教程大合集

    2016-10-26 22:30:13
    搜集来的Java视频教程大合集,目前亲测可用,尽快下载哈: 1.【JAVA】传智播客JavaEE就业班第168期 2.【Web】尚硅谷JavaWeb 3.【Java】Java35期基础班和就业班 4.2016 黑马 Java 19期视频+Hadoop大数据实战视频 5....
  • 尚硅谷Java视频Java8新特性视频教程,本Java视频涵盖了 Java8 的所有新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、ConcurrentHashMap、MetaSpace。Java8 的新特性使 Java 的运行速度更快、代码更少...
  • 视频采集代码 采集的视频可以保存 导入myeclipse可直接用,前提是你要安装好jmf哦
  • 十大java视频学习网站

    万次阅读 2019-03-19 10:29:14
    动力节点 网址:... 点评:网站Java视频教程不错 Oracle 网址:https://www.oracle.com/index.html 点评:Oracle公司网站 菜鸟教程 网址:http://www.runoob.com/ 点评:适合...

    动力节点             网址:http://www.bjpowernode.com/video.html

    点评:网站Java视频教程不错

    Oracle                网址:https://www.oracle.com/index.html

    点评:Oracle公司网站

    菜鸟教程             网址:http://www.runoob.com/

    点评:适合小白

    W3Cschool        网址:https://www.w3cschool.cn/

    点评:还行

    Import New        网址:http://www.importnew.com/

    点评:技术新

    segmentfault      网址:https://segmentfault.com/

    点评:翻译的外网

    Stackoverflow   网址:https://stackoverflow.com/

    点评:问题和答案比较多

    coursera             网址:https://www.coursera.org/

    点评:视频讲座多

    github                 网址:https://github.com/

    点评:Java库

    program creek    网址:https://www.programcreek.com/

    点评:找不到的来这找就对了

     

     

     

     

    展开全文
  • java 视频流读写

    热门讨论 2013-03-15 17:31:56
    java视频流格式数据的读取 JMF_demo 一个实例
  • java最新视频资源 黑马 传智 就业班视频 2018年最新java视频 吐血推荐
  • java 视频提取音频 | Java工具类

    万次阅读 多人点赞 2021-10-20 12:38:07
    将MP4视频内的音频提取出来,该工具类的解决思路如下: 1、提取视频音频pcm数据 2、将pcm数据封装音频头保存。 Maven依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId...

    目录

    简述

    Maven依赖

    代码

    总结


    简述

    将MP4视频内的音频提取出来,该工具类的解决思路如下:

    1、提取视频音频pcm数据

    2、将pcm数据封装音频头保存。

    Maven依赖

            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.5.2</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacv-platform</artifactId>
                <version>1.5.5</version>
            </dependency>

    说明一下,这里用到了hutools工具包,因为可以大幅简化代码。如果有自己的读取文件流的工具类,可以不使用。

    代码

    上代码

    import cn.hutool.core.io.FileUtil;
    import cn.hutool.core.lang.UUID;
    import lombok.extern.slf4j.Slf4j;
    import org.bytedeco.javacpp.Loader;
    
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.Optional;
    
    /** @Author huyi @Date 2021/10/20 12:11 @Description: mp4提取音频工具类 */
    @Slf4j
    public class Mp4ExtractAudioUtils {
    
      /**
       * 获取视频的文件pcm文件地址
       *
       * @param url MP4
       * @return
       * @throws Exception
       */
      public static String getMp4Pcm(String url, String tmpDir) throws Exception {
        Optional<String> pcmPath = Optional.empty();
        try {
          pcmPath = convertMP4toPCM(Paths.get(url), Paths.get(tmpDir));
        } catch (Exception exception) {
          exception.printStackTrace();
          throw new Exception("转换pcm异常:" + exception.getMessage());
        }
        if (pcmPath.isPresent()) {
          return pcmPath.get();
        } else {
          throw new Exception("视频转换音频失败");
        }
      }
      /**
       * 将单个PM4文件进行片头和片尾歌曲删除后,转换为PCM文件
       *
       * @param mp4Path
       * @param pcmDir
       * @return 转换完成后的pcm文件路径
       */
      public static Optional<String> convertMP4toPCM(Path mp4Path, Path pcmDir) {
        String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
        // 基于ffmpeg进行pcm转换
        // 基于输入路径的md5值来命名,也可以基于系统时间戳来命名
        String pcmFile = pcmDir.resolve(UUID.randomUUID() + ".pcm").toString();
        ProcessBuilder pcmBuilder =
            new ProcessBuilder(
                ffmpeg,
                "-y",
                "-i",
                mp4Path.toAbsolutePath().toString(),
                "-vn",
                "-acodec",
                "pcm_s16le",
                "-f",
                "s16le",
                "-ac",
                "1",
                "-ar",
                "16000",
                pcmFile);
        try {
          // inheritIO是指将 子流程的IO与当前java流程的IO设置为相同
          pcmBuilder.inheritIO().start().waitFor();
        } catch (InterruptedException | IOException e) {
          log.error("ffmpeg将mp4转换为pcm时出错", e);
          return Optional.empty();
        }
        // 返回pcm文件路径
        return Optional.of(pcmFile);
      }
    
      /**
       * 根据PCM文件构建wav的header字段
       *
       * @param srate Sample rate - 8000, 16000, etc.
       * @param channel Number of channels - Mono = 1, Stereo = 2, etc..
       * @param format Number of bits per sample (16 here)
       * @throws IOException
       */
      public static byte[] buildWavHeader(int dataLength, int srate, int channel, int format)
          throws IOException {
        byte[] header = new byte[44];
    
        long totalDataLen = dataLength + 36;
        long bitrate = srate * channel * format;
    
        header[0] = 'R';
        header[1] = 'I';
        header[2] = 'F';
        header[3] = 'F';
        header[4] = (byte) (totalDataLen & 0xff);
        header[5] = (byte) ((totalDataLen >> 8) & 0xff);
        header[6] = (byte) ((totalDataLen >> 16) & 0xff);
        header[7] = (byte) ((totalDataLen >> 24) & 0xff);
        header[8] = 'W';
        header[9] = 'A';
        header[10] = 'V';
        header[11] = 'E';
        header[12] = 'f';
        header[13] = 'm';
        header[14] = 't';
        header[15] = ' ';
        header[16] = (byte) format;
        header[17] = 0;
        header[18] = 0;
        header[19] = 0;
        header[20] = 1;
        header[21] = 0;
        header[22] = (byte) channel;
        header[23] = 0;
        header[24] = (byte) (srate & 0xff);
        header[25] = (byte) ((srate >> 8) & 0xff);
        header[26] = (byte) ((srate >> 16) & 0xff);
        header[27] = (byte) ((srate >> 24) & 0xff);
        header[28] = (byte) ((bitrate / 8) & 0xff);
        header[29] = (byte) (((bitrate / 8) >> 8) & 0xff);
        header[30] = (byte) (((bitrate / 8) >> 16) & 0xff);
        header[31] = (byte) (((bitrate / 8) >> 24) & 0xff);
        header[32] = (byte) ((channel * format) / 8);
        header[33] = 0;
        header[34] = 16;
        header[35] = 0;
        header[36] = 'd';
        header[37] = 'a';
        header[38] = 't';
        header[39] = 'a';
        header[40] = (byte) (dataLength & 0xff);
        header[41] = (byte) ((dataLength >> 8) & 0xff);
        header[42] = (byte) ((dataLength >> 16) & 0xff);
        header[43] = (byte) ((dataLength >> 24) & 0xff);
    
        return header;
      }
    
      /**
       * 默认写入的pcm数据是16000采样率,16bit,可以按照需要修改
       *
       * @param filePath
       * @param pcmData
       */
      public static String writeToFile(String filePath, byte[] pcmData) {
        BufferedOutputStream bos = null;
        try {
          bos = new BufferedOutputStream(new FileOutputStream(filePath));
          byte[] header = buildWavHeader(pcmData.length, 16000, 1, 16);
          bos.write(header, 0, 44);
          bos.write(pcmData);
          bos.close();
          return filePath;
        } catch (Exception e) {
          e.printStackTrace();
          return filePath;
        } finally {
          if (bos != null) {
            try {
              bos.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
        }
      }
    
      /**
       * 提取音频
       * @param mp4Path MP4地址
       * @param tmpDir 临时文件夹
       * @param resultPath 最终结果音频地址
       * @return 音频地址
       * @throws Exception 异常
       */
      public static String extractAudio(String mp4Path, String tmpDir, String resultPath)
          throws Exception {
        String pcmPath = getMp4Pcm(mp4Path, tmpDir);
        return writeToFile(resultPath, FileUtil.readBytes(pcmPath));
      }
    
      public static void main(String[] args) throws Exception {
        System.out.println(
            extractAudio(
                "C:\\Users\\huyi\\Desktop\\测试.mp4",
                "C:\\Users\\huyi\\Desktop",
                "C:\\Users\\huyi\\Desktop\\测试.wav"));
      }
    }

    执行结果:

    可以看到生成一个临时的pcm文件,可以自己调整工具类将临时文件删除。

    生成音频成功。

    总结

    这里有几点需要说明。

    1、hutools工具主要是为了使用一些方便的组件,可以用自定义的,不一定要引入。

    2、关于音频头文件的参数,在另一篇文章我有详细描述,可以参考:生成自定义时长的静音音频 | Java工具类_阿良的博客-CSDN博客

    3、里面用到了ffmpeg进行pcm转换,需要本地环境有ffmpeg环境,具体说明在我另一篇有描述,可以参考:java 音频转为wav格式标准音频 | Java工具类_阿良的博客-CSDN博客

    4、该工具类部分参数可以调整为入参模式,如果有疑问的话,可以私信我。

    如果本文对你有帮助,请点个赞支持一下吧。

     

     

     

     

    展开全文
  • java视频电影电视剧播放网站源码

    热门讨论 2012-11-01 23:05:00
    影视播放网站 源码 数据库代码
  • Java视频播放器源代码

    热门讨论 2012-10-17 01:05:22
    JMF,Java术语,意为Java媒体框架(JMF)。该核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频
  • java视频生成图片(缩略图)-实例-(指定时间)
  • java实现视频压缩

    2018-04-28 11:54:57
    主要通过java代码实现视频压缩,且提供压缩需要的jave.jar.
  • java视频截图

    千次阅读 2019-05-05 16:24:54
    这里介绍的是使用javacv来实现视频截图功能: maven导包: <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.3.1<...

    这里介绍的是使用javacv来实现视频截图功能:

    maven导包:

    <dependency>
        <groupId>org.bytedeco</groupId>
        <artifactId>javacv-platform</artifactId>
        <version>1.3.1</version>
    </dependency>

    工具类:

    package indi.chokshen.utils;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    import org.bytedeco.javacpp.opencv_core;
    import org.bytedeco.javacpp.opencv_core.IplImage;
    import org.bytedeco.javacv.FFmpegFrameGrabber;
    import org.bytedeco.javacv.Frame;
    import org.bytedeco.javacv.FrameGrabber.Exception;
    import org.bytedeco.javacv.Java2DFrameConverter;
    import org.bytedeco.javacv.OpenCVFrameConverter;
    /**
     * javacv
     * @author chokshen
     *
     */
    public  class VideoFrameKit {
    
        /**
         * 获取指定视频的帧并保存为图片至指定目录
         * @param videofile  源视频文件路径
         * @param framefile  截取帧的图片存放路径
         * @throws Exception
         * @throws IOException
         */
        public static void fetchFrame(String videofile, String framefile)
                throws Exception, IOException {
            FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile);
            ff.start();
            String rotate =ff.getVideoMetadata("rotate");//视频的旋转角度
            int lenght = ff.getLengthInFrames();
            int i = 0;
            Frame f = null;
            while (i < lenght) {
                // 过滤前5帧,避免出现全黑的图片,依自己情况而定
                f = ff.grabImage(); //应该使用grabImage而不是grabFrame,这样可以避免mov格式的视频截图失败
                if ((i > 5) && (f.image != null)) {
                    break;
                }
                IplImage src = null;
                if(null !=rotate &&rotate.length() > 1) {
                    OpenCVFrameConverter.ToIplImage converter =new OpenCVFrameConverter.ToIplImage();
                    src =converter.convert(f);
                    f =converter.convert(rotate(src, Integer.valueOf(rotate)));
                }
                doExecuteFrame(f, framefile);
                i++;
            }
    
        }
    
    
        public static IplImage rotate(IplImage src,int angle) {
            IplImage img = IplImage.create(src.height(),src.width(),src.depth(),src.nChannels());
            opencv_core.cvTranspose(src,img);
            opencv_core.cvFlip(img,img,angle);
            return img;
        }
    
    
        public static void doExecuteFrame(Frame f,String targetFileName) {
            if (null ==f ||null ==f.image) {
                return;
            }
            Java2DFrameConverter converter =new Java2DFrameConverter();
            BufferedImage bi =converter.getBufferedImage(f);
            File output =new File(targetFileName);
            try {
                ImageIO.write(bi,"jpeg",output);
            }catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    注意: 应该使用grabImage而不是grabFrame,这样可以避免mov格式的视频截图失败,具体原因见https://github.com/bytedeco/javacv/issues/821

    展开全文
  • 韩老师的JAVA视频下载链接,可以通过迅雷下载。包括有java,sql server, oracle linux html css 等等
  • 第一阶段:Java基础 学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些我们称之为JavaSE...

    第一阶段:Java基础

    学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些我们称之为JavaSE基础。

    当你掌握了这些内容之后,你就可以做出诸如:电脑上安装的迅雷下载软件、QQ聊天客户端、考勤管理系统等桌面端软件。

    在这里插入图片描述本阶段java免费视频教程推荐
    1、2019java基础入门全网播放百万
    本节java免费视频观看地址:https://www.bilibili.com/video/BV18J411W7cE

    2、Javase进阶13天教程
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1TE41177mP

    3、Java8-12新特性(涵盖jdk8,9,10,11,12)
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1zJ411R7uQ

    4、Jdk13新特性
    本节java免费视频观看地址:https://www.bilibili.com/video/BV12V411C7k8

    5、Jdk14新特性
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1qp4y1C7iu

    第二阶段:数据库

    互联网最具价值的是数据,任何编程语言都需要解决数据存储问题,而数据存储的关键技术是数据库。MySQL和Oracle都是广受企业欢迎的数据库管理系统。Java程序和数据库通信的最常见技术是JDBC,Druid和C3P0。

    学习这些数据库技术后,可以掌握数据库运维技术、复杂业务表结构设计规范、工作中常见的SQL操作、软件数据存储等。

    在这里插入图片描述本阶段java免费视频教程推荐
    1、【面试必会】mysql数据库优化全剖析
    java免费视频观看地址:https://www.bilibili.com/video/BV1zJ411M7TB

    2、4天快速入门oracle数据库
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1KJ411h7NH

    3、druid、JDBC、c3p0、mysql数据库入门到精通(javaweb全版)
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1mE411h7Co

    第三阶段:前端技术

    浏览器展示给用户看到的网页就是前端,前端有三大基础技术分别为Html、CSS、JavaScript,这些学完后,为了做出更好、更炫的交互式体验效果,我们还需要学习jQuery、ElementUI、Vue、Ajax,以及打包工具webpack。

    学完这些技术后,我们可以开发微信小程序、响应式网站、移动端网站、开发类似京东一样的B2B2C商城、管理后台等。

    在这里插入图片描述本阶段java免费视频教程推荐
    1、javaweb超全面视频教程(27天包含上述所含知识点)
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1mE411h7Co

    2、微信小程序零基础入门到精通
    本节java免费视频观看地址:https://www.bilibili.com/video/BV1nE41117BQ

    第四阶段:JavaWeb动态网页

    掌握前端技术只能做静态网站,但它页面数据一成不变,而动态网站可以根据数据库中变更的数据实现不同的内容展示,应用更广泛,因此程序员必须要学会做动态网站。

    使用Java做动态网站,我们需要学习Servlet、Filter、Session、Cookie、JSP、EL表达式、JSTL等做动态网站的完整知识体系,学完可研发出OA系统、内容网站、BBS等。

    在这里插入图片描述

    第五阶段:Java编程强化

    前面学了JavaSE基础,但它在企业级应用中程序处理业务的效率并不高、扩展差,编程强化是对JavaSE基础的加强,将针对性的提高程序处理业务的执行效率、增强程序扩展性。编程强化将加强多线程高级学习,涉及线程内存、线程通信等技术。

    学完以后,能增加一个中级程序员的知识储备,无论在面试过程中还是将来技术的深入打一个良好的基础。

    在这里插入图片描述

    第六阶段:软件项目管理

    公司开发都是团队协同开发,为更好的掌握实际开发,我们还需要学习常用的项目管理平台、版本控制器、项目构建工具以及自动化部署工具。项目开发一定是有版本升级的,管理好项目进度和版本需要Git、Maven、Sonar这样的系统平台。

    学习完软件项目管理后,将掌握整个项目实际开发过程以及整个项目开发过程中所使用协同开发工具。

    在这里插入图片描述

    第七阶段:热门技术框架

    Javaweb掌握后,已经具备企业中实际项目的开发能力了,但它开发效率低,代码量大,开发周期长、开发成本高。

    企业中广泛使用一些优秀的框架技术来解决上述问题,因此我们还需要学习框架技术,项目开发中主流的Java框架技术有SpringMVC、Spring、MyBatis、MyBatis Plus、SpringData等。这些框架技术都是一个优秀程序员所必备的技能。

    在这里插入图片描述

    第八阶段:分布式架构

    企业发展过程中,业务量和用户量逐渐增加,为了保证系统的可用性,系统越做越复杂,研发人员增多,大家很难共同维护一个复杂的系统,往往修改部分内容,导致牵一发而动全身,所以我们需要升级系统架构,需要用到分布式微服务的技术。

    学习完该阶段课程,可以具备大型SOA架构和微服务架构能力,能掌握大型微服务项目必备技术和实际经验。

    在这里插入图片描述

    第九阶段:服务器中间件

    在分布式系统架构中,服务与服务之间的异步通信,是非常常见的需求之一,消息中间件的诞生正是为了解决这类问题。目前市面上的主流消息中间件有RabbitMQ、RocketMQ、Kafka,我们将学习这3个消息中间件,实现分布式项目中的异步通信。

    学习完这些后,可以实现分布式项目的异步通信、分布式应用日志收集、分布式事务等。

    在这里插入图片描述

    第十阶段:服务器技术

    程序开发完成后,我们把它们打包部署到服务器中运行,所以我们需要学习常见的服务器技术,常见的服务器有Linux和Window server,Linux性能高,是当前主流。

    我们写好的项目需要用一个软件运行起来,这个软件叫web容器,我们需要在服务器上安装web容器来发布项目,当前主流的web容器有tomcat、jetty、nginx、undertow。

    在这里插入图片描述

    第十一阶段:容器技术

    具备了服务器操作系统及web容器,我们就可以部署单机的站点,在分布式系统中,几十上百的服务,如果使用单机这种部署方式,会投入很高的人力,同时出错的几率也大。

    所以服务器虚拟化技术Docker也称为如今的必备技术了,Docker可以帮助运维人员实行快速部署,批量维护.使用Kubernetes实现自动化部署、大规模可伸缩、应用容器管理。

    在这里插入图片描述

    第十二阶段:企业业务解决方案

    企业开发中会遇到一些通用的业务场景,诸如:搜索引擎、缓存、定时任务、工作流、报表导出、日志管理、系统监控等,那么这些通用的解决方案也有现成优秀的免费开源中间件,可供使用。

    诸如:ElasticSearch、Lucene、Solr、redis、MongoDB、slf4J、ECharts、Quartz、POI等。业务解决方案课程的业务方案和技术难点,解决了企业开发中90%以上的痛点和难点。

    在这里插入图片描述

    展开全文
  • java 基于websocket实现的视频聊天,解压项目到对应位置部署到tomcat8即可使用
  • Java 视频转换h265、h264、mkv、mp4

    千次阅读 2021-01-28 19:18:33
    Java各种视频格式转换 ffmpeg.exe 全能,啥视频都可以抽帧呦,亲测可用,支持h265、h264、mkv、mp4 FFmpegFrameGrabber支持跨平台~
  • TIOBE编程社区索引是编程语言受欢迎...编程语言排行榜Java重新登榜二,Java确实有它独特的魅力和迎合大中企业需求,而且就业也是比较好的编程语言。 2021年即将到来,Java小酱耗费时间帮助大家整理了最新的学习路线图
  • Java视频压缩

    千次阅读 2018-04-18 17:46:59
    1、导入Maven依赖包&...java.lib&gt;${project.basedir}/src/main/webapp/WEB-INF/lib&lt;/java.lib&gt;  &lt;/properties&gt; &lt;dependency&gt;  &lt;groupId...
  • ** 我用的是视频转码方式进行压缩** AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(100000)); audio.setChannels(new Integer(1)); ...
  • java 实现视频上传

    2017-12-13 17:22:01
    java上传视频转码播放的一个demo,实现java上传视频、转码、截图和播放功能
  • java视频压缩大小,亲测有效

    千次阅读 热门讨论 2020-10-19 10:05:13
    Java压缩视频大小,10M视频压缩完成后大约是1M,用时大约2S, 步骤一 首先导入基础依赖包 <dependency> <groupId>ws.schild</groupId> <artifactId>jave-core</artifactId> <...
  • java视频时长以及视频截图

    千次阅读 热门讨论 2018-07-13 09:12:02
    java视频时长的计算以及视频封面图截取 本人使用的maven进行下载对应的jar包,其中代码适用window环境和linux环境,亲自测过,没问题: maven需要用到的groupId和artifactId以及版本,如下所示: &amp;...
  • 以下都是基于webrtc的实现 方案1:简单版 基于js框架 http://www.rtcmulticonnection.org/ 只要安装好后台的服务即可 ... 方案2:基于freeswitch的verto协议实现  freeswitch 安装视频模块参考 个人写的很详细 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399,641
精华内容 159,856
关键字:

java视频

java 订阅