20190227关于多个视频推流的问题,录制,播放等的后续整理

本文档详细介绍了使用JavaCV库推流本地摄像头和音频到Nginx-RTMP服务器的过程,并提供了多摄像头推流的思路。代码示例展示了如何录制视频,包括处理音频与视频同步,以及在出现问题时的恢复策略。同时讨论了可能遇到的问题,如服务器只能处理同一摄像头的一次推流,以及如何在Vue.js中使用video.js播放RTMP流。文章最后提出了实时监控与报警触发录制的方案,探讨了录制与推流的资源占用和冲突解决策略。
摘要由CSDN通过智能技术生成

首先感谢大神的分享:https://blog.csdn.net/eguid_1/article/details/52804246

以下是个人集合自己环境的分析和整理

1、实现功能

(1)抓取本地录音设备(即,话筒)的实时音频     

(2)抓取本地摄像头实时视频

(3)音频与视频时两个线程分别进行的,互不干扰

(4)多8bit的音频转小字节序问题,请参考http://blog.csdn.net/eguid_1/article/details/52790848

(5)本章代码包含大量注释,用来阐述每个API的用法和作用

 

实际:需要实时监控多个摄像头并分析

 

2、代码实现

流的推送:本地环境中已经实现javacv推流到nginx-rtmp服务器

/**
     * 推送/录制本机的音/视频(Webcam/Microphone)到流媒体服务器(Stream media server)
     * 
     * @param WEBCAM_DEVICE_INDEX
     *            - 视频设备,本机默认是0
     * @param AUDIO_DEVICE_INDEX
     *            - 音频设备,本机默认是4
     * @param outputFile
     *            - 输出文件/地址(可以是本地文件,也可以是流媒体服务器地址)
     * @param captureWidth
     *            - 摄像头宽
     * @param captureHeight
     *            - 摄像头高
     * @param FRAME_RATE
     *            - 视频帧率:最低 25(即每秒25张图片,低于25就会出现闪屏)
     * @throws org.bytedeco.javacv.FrameGrabber.Exception
     */
    public static void recordWebcamAndMicrophone(int WEBCAM_DEVICE_INDEX, int AUDIO_DEVICE_INDEX, String outputFile,
            int captureWidth, int captureHeight, int FRAME_RATE) throws org.bytedeco.javacv.FrameGrabber.Exception {
        long startTime = 0;
        long videoTS = 0;
        /**
         * FrameGrabber 类包含:OpenCVFrameGrabber
         * (opencv_videoio),C1394FrameGrabber, FlyCaptureFrameGrabber,
         * OpenKinectFrameGrabber,PS3EyeFrameGrabber,VideoInputFrameGrabber, 和
         * FFmpegFrameGrabber.
         */
        OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(WEBCAM_DEVICE_INDEX);
        grabber.setImageWidth(captureWidth);
        grabber.setImageHeight(captureHeight);
        System.out.println("开始抓取摄像头...");
        int isTrue = 0;// 摄像头开启状态
        try {
            grabber.start();
            isTrue += 1;
        } catch (org.bytedeco.javacv.FrameGrabber.Exception e2) {
            if (grabber != null) {
                try {
                    grabber.restart();
                    isTrue += 1;
                } catch (org.bytedeco.javacv.FrameGrabber.Exception e) {
                    isTrue -= 1;
                    try {
                        grabber.stop();
                    } catch (org.bytedeco.javacv.FrameGrabber.Exception e1) {
                        isTrue -= 1;
                    }
                }
            }
        }
        if (isTrue < 0) {
            System.err.println("摄像头首次开启失败,尝试重启也失败!");
      

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值