悄摸直播(二)—— 播流器實現(拉取rtmp服務器中的數據流,播放直播畫面)

悄摸直播 —— JavaCV實現本機攝像頭畫面遠程直播html

播流器

1、功能說明

從rtmp服務器中獲取視頻流數據 + 展現直播畫面

2、代碼實現

/**
     * 播流器
     * @param inputPath  rtmp服務器地址
     * @throws Exception
     * @throws org.bytedeco.javacv.FrameRecorder.Exception 
     */
    public static void pullStream(String inputPath) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception {
        //建立+設置採集器
        FFmpegFrameGrabber grabber = FFmpegFrameGrabber.createDefault(inputPath);
        grabber.setOption("rtsp_transport", "tcp"); 
        grabber.setImageWidth(960);
        grabber.setImageHeight(540);
        
        //開啓採集器
        grabber.start();
        
        //直播播放窗口
        CanvasFrame canvasFrame = new CanvasFrame("悄摸直播——來自"+inputPath);
        canvasFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        canvasFrame.setAlwaysOnTop(true);
        OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
        
        //播流
        while (true){
            Frame frame = grabber.grabImage();  //拉流
            opencv_core.Mat mat = converter.convertToMat(frame);
            canvasFrame.showImage(frame);   //播放
        }
    }

3、測試播流器

public static void main(String[] args) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception {
        //rtmp服務器地址
        String inputPath = "rtmp://192.168.1.48/live/stream";
        pullStream(inputPath);
    }

若是出現「悄摸直播——來自XXX」的swing窗口,並能正常播放直播畫面,則播流器成功。java

相關文章
相關標籤/搜索