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

java对web视频的简单处理流程一、web端借助浏览器的webrtc功能获取视频流,然后进行base64转码发往服务端二、服务端2.1首先保存为文件,保存到本地2.

欢迎大家来到IT世界,在知识的湖畔探索吧!

一、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.m4a
ffmpeg -i test.mp4 -f mp3 -vn -c copy test.mp3
复制代码

欢迎大家来到IT世界,在知识的湖畔探索吧!

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

欢迎大家来到IT世界,在知识的湖畔探索吧!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得到了处理过的视频信息推送给对方用户

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/33138.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信