悄摸直播(二)—— 播流器實現(拉取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窗口,並能正常播放直播畫面,則播流器成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM