这篇文章主要为大家详细介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。