Java 解码 H264 格式视频流中的图片
引入依赖
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.4.3</version></dependency><dependency><groupId>org.bytedeco.javacpp-presets</groupId><artifactId>ffmpeg-platform</artifactId><version>4.0.2-1.4.3</version></dependency>
需要注意这两个包之间的版本有一个对应关系,如果版本不对应可能会出问题
解码过程
实现的一个简单功能是:
- 从Socket获取视频输入流(H264格式)
- 获取视频流中的帧
- 把每一帧转换成 BufferedImage
package com.amwalle.walle.raspi.camera;import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;public class CameraHandler implements Runnable {private static final Logger logger = LoggerFactory.getLogger(CameraHandler.class);private final String LOCK = "LOCK";private Socket cameraSocket;private static BufferedImage bufferedImage;CameraHandler(Socket socket) throws IOException {this.cameraSocket = socket;}String getLock() {return LOCK;}@Overridepublic void run() {try {InputStream cameraStream = cameraSocket.getInputStream();FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(cameraStream);frameGrabber.setFrameRate(30);frameGrabber.setFormat("h264");frameGrabber.setVideoBitrate(15);frameGrabber.setVideoOption("preset", "ultrafast");frameGrabber.setNumBuffers(25000000);frameGrabber.start();Frame frame = frameGrabber.grab();Java2DFrameConverter converter = new Java2DFrameConverter();while (frame != null) {BufferedImage bufferedImage = converter.convert(frame);setBufferedImage(bufferedImage);synchronized (LOCK) {LOCK.notifyAll();}frame = frameGrabber.grab();}} catch (IOException e) {logger.info("Video handle error, exit ...");logger.info(e.getMessage());}}private void setBufferedImage(BufferedImage image) {bufferedImage = image;}BufferedImage getBufferedImage() {return bufferedImage;}
}
Java 解码 H264 格式视频流中的图片相关推荐
- 百度人脸识别技术应用003---百度云离线SDK_Android版_功能分析_获取摄像头视频流中的图片_发给百度人脸识别API_识别搜索_或先同步百度云人脸信息_然后本地人脸识别
1.基于上一节,我们已经把百度云上的人脸库,建好了,然后我们可以从,百度云官网拿到, 离线人脸识别的SDK. SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台 这里可以点进去下载 2.然后 ...
- java使用poi读写word中的图片(二)
文章目录 准备工作 简单读取 复杂读取 查看Word的XML 特别说明:Word中的Svg图片 第一种写入图片到Word中的方式 第二种写入图片到Word中的方式 最后 准备工作 这里就不在复述了,可 ...
- Java 添加、提取PDF中的图片
Spire.Cloud.SDK for Java提供了PdfImagesApi接口可用于添加图片到PDF文档addImage().提取PDF中的图片extractImages(),具体操作步骤和Jav ...
- H5解码H264实时视频流
浏览器如何解码实时视频流?最近研究了一下,大体思路为通过websocket把裸H264传输到浏览器,在通过js封装成mp4格式,再通过Html5的video标签进行解码,效果还是比较不错. <! ...
- java 当前时间格式_JAVA中获取当前系统时间及格式转换
一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...
- java yyyy-mm-dd 日期格式_Java中的日期时间格式化
原标题:Java中的日期时间格式化 1 Java日期时间格式化的概念 我们在日常的开发过程中常常会碰到关于日期时间的计算与存储问题,比如我们要把一个当前时间类型转换成字符串类型,我们会直接使用Util ...
- java txt html格式_java中xml(txt/html等格式)解析问题,请教java高手,请勿粘贴其他网页上的内容(能查的都看了)。...
目的:通过对网页内容解析,获得需要的内容,如网页的标题Title,主要内容,描述信息:而里面的广告.超链接.无关紧要的信息统统不要,从而达到对用户上网行为的分析的目的.下面是我... 目的:通过对网页 ...
- java yyyy-mm-dd 日期格式_Java中的日历日期为yyyy-MM-dd格式
小编典典 JavaDate是自1970年1月1日格林尼治标准时间00:00:00以来的毫秒数的容器. 当你使用时System.out.println(date),Java将使用Date.toStrin ...
- excel poi 加背景图_java 在Excel中插入图片 POI实现
一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...
最新文章
- 在Ubuntu 14.04 64bit上进行md5加密编程
- 佛弟子有三样东西需要永远保密!
- seata分布式事务框架原理
- 利用OpenCV进行人脸识别
- java实时汇率的接口_汇率-免费API,收集所有免费的API
- eclipse中java.lang.OutOfMemoryError: Java heap space错误
- 栈的复习(加减乘除表达式求值)
- python中range 函数_Python
- 【Spring 持久层】Spring 事务开发、事务属性详解
- 计算机算法设计与分析 N后问题
- 腾讯面试官这样问我二叉树,我刚好都会 | 原力计划
- Anacoda 介绍、安装、环境切换
- 推荐系统-Task01熟悉新闻推荐系统基本流程
- 银行排队问题之单队列多窗口服务 (25 分)(结构体排序)
- ASP.NET 页面双向静态化
- Android将数据导出为excel文件的方法
- 2018招行笔试分红包
- 【物联家居】第四章:传输协议--mqtt配置与测试
- latex里设置居中左对齐
- 最值得期待的 5 个新特性解析JavaScript ES2021