天天看點

java播放rtmp流_悄摸直播(二)—— 播流器實作(拉取rtmp伺服器中的資料流,播放直播畫面)...

播流器

一、功能說明

從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視窗,并能正常播放直播畫面,則播流器成功。