记一次使用javaCV播放m3u8视频并添加文字

文章目录

  • 上代码
  • 引用依赖
  • 效果展示![效果图](https://img-blog.csdnimg.cn/f1f0c2b5df4746aa8d18bfb975795e9b.png#pic_center)
  • 对FrameGrabber(帧抓取器/采集器)的介绍
      • 作用
      • 由于FrameGrabber是抽象类所以对其几个实现进行介绍

上代码


```javapublic static void main(String[] args) throws Exception, InterruptedException{FrameGrabber grabber = new FFmpegFrameGrabber("https://hd-auth.skylinewebcams.com/live.m3u8?a=roav0li8uitf88ojqqr4n1g2l6");// grabber.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);// 设置缓存大小,提高画质、减少卡顿花屏
//        grabber.setOption("buffer_size", "1024000");grabber.start();   //开始获取摄像头数据CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);canvas.setAlwaysOnTop(true);while(true){if(!canvas.isDisplayable()){//窗口是否关闭grabber.stop();//停止抓取System.exit(2);//退出}Frame grab = grabber.grab();Map audioMetadata = grabber.getAudioMetadata();IplImage iplImage = Java2DFrameUtils.toIplImage(grab);BufferedImage buffImg=Java2DFrameUtils.toBufferedImage(iplImage);Graphics2D graphics = buffImg.createGraphics();graphics.setColor(Color.BLUE);graphics.setFont(new Font("微软雅黑", Font.BOLD, 40));graphics.drawString(LocalDateTime.now().toString(),(iplImage.width()/2)-300,iplImage.height()-50);graphics.dispose();Frame newFrame = Java2DFrameUtils.toFrame(buffImg);canvas.showImage(newFrame);//获取摄像头图像并放到窗口上显示, 这里的Frame frame=grabber.grab(); frame是一帧视频图像Thread.sleep(50);//50毫秒刷新一次图像}}

引用依赖

<dependency><groupId>org.bytedecogroupId><artifactId>javacvartifactId><version>1.5.6version>dependency><dependency><groupId>org.bytedecogroupId><artifactId>javacv-platformartifactId><version>1.5.6version>dependency>><dependency><groupId>org.bytedecogroupId><artifactId>ffmpegartifactId><version>4.4-1.5.6version><classifier>windows-x86_64classifier>dependency><dependency><groupId>org.bytedecogroupId><artifactId>ffmpegartifactId><version>4.4-1.5.6version><classifier>linux-x86_64classifier>dependency>

效果展示效果图

对FrameGrabber(帧抓取器/采集器)的介绍

作用

用于采集音视频,并自动解码,将解码后的数据保存到Frame中。

由于FrameGrabber是抽象类所以对其几个实现进行介绍

1.FFmpegFrameGrabber:超级好用,但是在图像处理方面没有OpenCVFrameGrabber强大;
支持多种协议:udp,rtp。rtsp和rtmp,以及本机设备。还支持视频文件,网络流(flv,rtmp,http文件流,hls,等等)。
2.OpenCVFrameGrabber:常用于处理图片图像。
3.OpenCVFrameGrabber:基于opencv调用"网络摄像机"
其余的实现类可以自行查阅学习


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部