播流器
一、功能說明
從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窗口,並能正常播放直播畫面,則播流器成功。
