播流器
一、功能說明
從rtmp伺服器中擷取視訊流資料 + 展示直播畫面
二、代碼實作
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視窗,并能正常播放直播畫面,則播流器成功。