龙空技术网

java对web视频的简单处理流程

冒泡的肥皂 107

前言:

现时各位老铁们对“java图片转视频”大致比较关心,姐妹们都想要学习一些“java图片转视频”的相关文章。那么小编在网上搜集了一些有关“java图片转视频””的相关资讯,希望姐妹们能喜欢,兄弟们一起来了解一下吧!

一、web端

借助浏览器的webrtc功能获取视频流,然后进行base64转码发往服务端

二、服务端

2.1首先保存为文件,保存到本地

2.2借助于ffmpeg提取音频和视频信息

-c:指定编码器-c copy:直接复制,不经过重新编码(这样比较快)-c:v:指定视频编码器-c:a:指定音频编码器-i:指定输入文件-an:去除音频流-vn: 去除视频流-preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。-y:不经过确认,输出时直接覆盖同名文件ffmpeg -i test2.webm -vn -vcodec copy test2.m4affmpeg -i test.mp4 -f mp3 -vn -c copy test.mp3复制代码

2.3利用opencv的VideoWriter生成视频流功能对视频的每帧进行处理(例如对视频流的每帧图片进行人脸检测)

VideoCapture capture=new VideoCapture();capture.open(targetPath);//1 读取视频文件的路径Size size = new Size(capture.get(Videoio.CAP_PROP_FRAME_WIDTH),                     capture.get(Videoio.CAP_PROP_FRAME_HEIGHT));VideoWriter  vw=new VideoWriter(catalogue+fileName+"1"+type,        		       VideoWriter.fourcc('V', 'P', '0', '9'),      		                 //capture.get(Videoio.CAP_PROP_FPS),        		        30,        		        size,        		        true);if(!capture.isOpened()){   logger.info("读取视频文件失败!");   return null;}Mat video=new Mat(); int i=0;long starTime=System.currentTimeMillis();while (capture.isOpened() && capture.read(video)) {      logger.info("当前" + (i++));      //对每帧的图片进行处理      Mat current = ImageUtil.getVideoFace(video);      if(null==current) {	break;      }       vw.write(current);}        capture.release();    	vw.release();复制代码

2.4最后对重新生成的视频和上面提取的音频进行合成

ffmpeg -i test2.wav -i  test21.avi test22.webm复制代码

2.5得到了处理过的视频信息推送给对方用户

标签: #java图片转视频 #java 图片合成视频 #java读取视频流 #java 视频合成 #opencv输出视频流