,,Java解码H264格式视频流中的图片

,,Java解码H264格式视频流中的图片

这篇文章主要为大家详细介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)解码H264格式视频流中的图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)解码H264格式视频流中的图片,供大家参考,具体内容如下

引入依赖

属国

groupIdorg.bytedeco/groupId

artifactIdjavacv/artifactId

版本1 .4 .3/版本

/依赖关系

属国

groupId组织。字节deco。javacpp-presets/groupId

artifactId ffmpeg-平台/artifactId

版本4 .0 .2-1 .4 .3/版本

/依赖关系

需要注意这两个包之间的版本有一个对应关系,如果版本不对应可能会出问题

解码过程

实现的一个简单功能是:

从(电源)插座获取视频输入流(H264格式)

获取视频流中的帧

把每一帧转换成缓冲图像

包com。我是瓦力。瓦力。拉斯皮。相机;

导入org。字节deco。javacv。ffmpegframegrabber

导入org。字节deco。javacv。框架;

导入org。字节deco。javacv。Java 2d框架转换器;

导入org。slf4j。记录者;

导入org。SLF 4j。伐木工厂;

导入Java。awt。形象。缓冲图像;

导入Java。io。io异常;

导入Java。io。inputstream

导入Java。网。插座;

公共类摄影师实现可运行{

私有静态最终记录器记录器=记录器工厂。获取记录器(相机处理程序。类);

私有最终字符串锁='锁

私有插座照相机插座

私有静态缓冲区图像

照相机手柄(插座)抛出IOException {

this.cameraSocket=socket

}

String getLock() {

回车锁;

}

@覆盖

公共无效运行(){

尝试{

InputStream相机流=相机插座。getinputstream();

FFmpegFrameGrabber帧抓取器=新的FFmpegFrameGrabber(cameraStream);

帧抓取器。设置帧率(30);

帧抓取器。设置格式(' h264 ');

帧抓取器。setvideobbitrate(15);

帧抓取器。setvideo选项('预设','超快');

帧抓取器。setnumbuffers(25000000);

帧抓取器。start();

帧帧=帧接收器。grab();

Java 2d frame converter converter=new Java 2d frame converter();

而(帧!=null) {

缓冲图像=转换器。转换(帧);

setBufferedImage(bufferedImage);

同步(锁定){

锁定。notify all();

}

帧=帧抓取器。grab();

}

} catch (IOException e) {

logger.info('视频句柄错误,退出.');

伐木工。info(e . getmessage());

}

}

私有void setBufferedImage(BufferedImage){

bufferedImage=image

}

BufferedImage getBufferedImage(){

返回缓冲图像

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: