• 悄摸直播(二)—— 播流器实现(拉取rtmp服务器中的数据流,播放直播画面)


    悄摸直播 —— JavaCV实现本机摄像头画面远程直播

    播流器

    一、功能说明

    从rtmp服务器中获取视频流数据 + 展示直播画面

    二、代码实现

    /**
    	 * 播流器
    	 * @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);   //播放
            }
    	}
    

    三、测试播流器

    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窗口,并能正常播放直播画面,则播流器成功。

  • 相关阅读:
    [日常训练]大灾难
    [cf235D]Graph Game
    [日常训练]选课
    [日常训练]挂科
    [学习笔记]概率&期望
    [日常训练]yayamao的神题
    [学习笔记]原根
    LOJ#2132. 「NOI2015」荷马史诗
    LOJ#2131. 「NOI2015」寿司晚宴
    LOJ#2129. 「NOI2015」程序自动分析
  • 原文地址:https://www.cnblogs.com/scywkl/p/12092457.html
Copyright © 2020-2023  润新知