javaCV系列文章:

javacv开发详解之1:调用本机摄像头视频

javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)

javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)

javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)

javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)

javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)

补充篇:

音视频编解码问题:javaCV如何快速进行音频预处理和解复用编解码(基于javaCV-FFMPEG)

音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例

实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

前言:javacv开发包是用于支持java多媒体开发的一套开发包,可以适用于本地多媒体(音视频)调用以及音视频,图片等文件后期操作(图片修改,音视频解码剪辑等等功能),这里我只使用最简单的本地摄像头调用来演示一下javacv的基础功能



重要:

部分平台会出现没找到library,class not found,jvm错误等等问题请注意:

如果出现上述错误或者其他异常,请到群里call群主, 群号:371249677 (点击这里立即进群)


注意:
使用javaCV开发一般使用四个jar包: (1)javacv.jar(2)javacpp.jar
如果需要使用ffmpeg则还需要这两个:(3)ffmpeg.jar(4)ffmpeg-系统环境.jar
如果需要用到openCV则是这两个:(3)opencv.jar(4)opencv-系统环境.jar
以此类推...

1、使用最新的javacv1.2作为引用包


windows平台使用的ffmpeg依赖包: ffmpeg .jar; ffmpeg-windows-x64. jar; ffmpeg-windows-x86.jar
补充:1、如果是苹果mac系统,把 oepncv-windows-x86_64.jar 替换成这个包 opencv-macosx-x86_64.jar
2、linux平台替换成这个包: opencv-linux-x86_64.jar ;3、安卓平台替换成 opencv-android-arm.jar 或者 opencv-android-x86.jar

javaCV1.2所有集合jar 在这里: http://download.csdn.net/album/detail/3171

2、为什么不需要安装opencv?

从javacv0.8开始,已经不需要再本地安装opencv,可以通过引用opencv对应的平台引用包即可进行多媒体开发


3、java通过javacv获取windows的摄像头视频

最终调用的摄像头实时视频:


代码只有那么多:

   /**
 * 文件名:javavcCameraTest.java
 * 描述:调用windows平台的摄像头窗口视频
 * 修改时间:2016年6月13日
 * 修改内容:
 */
package cc.eguid.javacv;

import javax.swing.JFrame;

import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.javacv.OpenCVFrameGrabber;

/**
 * 调用本地摄像头窗口视频
 * @author eguid  
 * @version 2016年6月13日  
 * @see javavcCameraTest  
 * @since  javacv1.2
 */

public class JavavcCameraTest
{
public static void main(String[] args) throws Exception, InterruptedException
{
    OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);  
    grabber.start();   //开始获取摄像头数据
    CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
    canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    canvas.setAlwaysOnTop(true);
    
    while(true)
    {
        if(!canvas.isDisplayable())
        {
            grabber.stop();
            System.exit(2);
        }
        canvas.showImage(grabber.grab());//获取摄像头图像并放到窗口上显示
        Thread.sleep(50);//0.05秒刷新一次图像
    }
}
}
  


是不是很简单,原本很复杂的流媒体操作,javaCV能够帮助我们快速实现;
而使用c/c++要几百行才能实现同样的功能(夸张了点 - -)

下一章将会讲解如何把本地摄像头的视频录制成文件以及推送到流媒体服务器

javaCV开发详解之2:推流器实现和摄像头录制视频功能(支持windows/linux/mac/Android/ios全平台)


重要:

部分平台会出现没找到library,class not found,jvm错误等等问题请注意:

如果出现上述错误或者其他异常,请到群里call群主, 群号:371249677 (点击这里立即进群)