快3网上购买

web/java实现多种格式视频上传、转码、截图、播放、下载等功能附源码(详细)

电脑杂谈  发布时间:2019-09-03 02:01:56  来源:网络整理

mp4播放_mp4播放器java版_java jmf播放网络视频

前段时间经常在做一个生物资源共享系统,采用SSM框架技术,其中涵盖一个模块,是关于视频资源的播放。

快3网上购买本来不是很大的弊端,但是无奈用户要求较好,需要支持N种格式的视频播放,没有办法,转码是必不可少的了。

对于一个从来没接触过很多哪些音频视频编码格式的我,浪费了很长时间,其中好多博客的教学都不太完善。

反正就是有一堆麻烦事情,坑也多,所以我而是记录一下,以后还要的过后就不要那么麻烦了。

采用工具:

ffmpeg 软件

Mencoder 软件

Video。js 文件

废话不说了,直接上干货。

关于上传下载就是不做重点讲了,反正代码贴上去了,直接用就行。

jsp上传页面:

add_video。jsp

实际上就是一个form表单提交请求到

action=“back/addVideo” encType=“multipart/form-data” method=“post”

源码如下:

java jmf播放网络视频_mp4播放_mp4播放器java版

 <div id="tab1" class="tabson">
            <div class="formtext">Hi,<b>${user.username}</b>,欢迎您使用教学资源共享平台!</div>
            <form id="frm2" name="frm2" action="back/addVideo" encType="multipart/form-data" method="post">
	           <ul class="forminfo">
	               <li>
	                   <label>资源名称<b>*</b></label><input id="title" name="title" type="text" class="dfinput" value=""  style="width:518px;"/>
	                    <input id="uid" name="uid" type="text"  hidden="hidden" value="${uid}"/>
	               </li>
	                  <li><label>审核状态<b>*</b></label>
	                  	   <div class="vocation">
							  	<select class="select1" id="state" name="state">
							    <option value="0">未审核</option>
							    <option value="1">通过</option>
							    <option value="2">不通过</option>
							    <option value="3">下架</option>
							    </select>
						  </div>
	                  </li>
	                  <li><label>上传者<b>*</b></label><input id="writer" name="writer" type="text" class="dfinput" value="${user.username}"  style="width:518px;"/></li>
	                  <li><label>上传时间<b>*</b></label><input id="time" name="time" type="date" class="dfinput" value=""  style="width:518px;"  /></li>
	                  <li><label>所属级别<b>*</b></label>
	                  	   <div class="vocation">
							  	<select class="select1" id="grade" name="grade">
							    <option value="0">初中</option>
							    <option value="1">高中</option>
							    </select>
						  </div>
					  </li>
					  <li><label>资源类型<b>*</b></label>
						  <div class="vocation">
							  	<select class="select1" id="subclass" name="subclass">
							    <!-- 邹涛20180814 -->
							    <c:if test="${uid eq 3}">
							    	<option value="微视频">微视频</option>
							    	<option value="实验视频">实验视频</option>
							    	<option value="教学视频">教学视频</option>
							    </c:if>
							    </select>
						  </div>
					  </li>
					  <li><label>上传资源<b>*</b></label><input id="file" name="file" type="file" style="width:518px;"  /></li>
					  <li><label>点击量<b>*</b></label><input id="clicks" name="clicks" type="text" class="dfinput" value="0"  style="width:518px;"/></li>	               
	               <li>
	               		 <label>&nbsp;</label><input name="" type="button" class="btn" onclick="startPost();" value="提交"/>
	               </li>
	           </ul>
            </form>
        </div>
    </div>

addVideo控制层

源码如下:

					/**
					 * @Description:(视频资源的单独上传的接收)
					 * @param:@param request
					 * @param:@param response
					 * @param:@param session
					 * @param:@return
					 * @return:ModelAndView
					 * @author:Zoutao
					 * @date:2018-6-12
					 * @version:V1。0
					 */
					@RequestMapping(value = "/addVideo")
					public ModelAndView uploadflie_Video(
							@RequestParam("file") CommonsMultipartFile file,
							HttpServletRequest req, HttpServletRequest request) {
						System.out。println("进入addVideo视频上传控制层");
						
						if (file.getSize() != 0) {
							//上传的多格式的视频文件-作为临时路径保存,转码以后删除-路径不能写//
							String path = "E:/Projectpicture/websiteimages/temp/";
							
							File TempFile = new File(path);
							if (TempFile.exists()) {
								if (TempFile.isDirectory()) {
									System.out.println("该文件夹存在。");
								}else {
									 System。out。println("同名的文件存在,不能创建文件夹。");
								}
							}else {
								 System.out.println("文件夹不存在,创建该文件夹。");
								 TempFile。mkdir();
							}
							
							// 获取上传时候的文件名
							String filename = file.getOriginalFilename();
							
							// 获取文件后缀名
							String filename_extension = filename.substring(filename
									.lastIndexOf(".") + 1);
							System.out.println("视频的后缀名:"+filename_extension);
							
							//时间戳做新的文件名,避免中文乱码-重新生成filename
							long filename1 = new Date().getTime();
							filename = Long.toString(filename1)+"。"+filename_extension;
							
							//去掉后缀的文件名
							String filename2 = filename.substring(0, filename。lastIndexOf("."));
							System。out.println("视频名为:"+filename2);
							
							//源视频地址+重命名后的视频名+视频后缀
							String yuanPATH =(path+filename);  
							
							System.out.println("视频的完整文件名1:"+filename);
							System.out。println("源视频路径为:"+yuanPATH);
							
							//上传到本地磁盘/服务器
							try {
								System.out.println("写入本地磁盘/服务器");
								InputStream is = file.getInputStream();
								OutputStream os = new FileOutputStream(new File(path, filename));
								int len = 0;
								byte[] buffer = new byte[2048];
								
								while ((len = is。read(buffer)) != -1) {
									os。write(buffer, 0, len);
								}
								os。close();
								os。flush();
								is。close();
							} catch (FileNotFoundException e) {
								// TODO Auto-generated catch block
								e。printStackTrace();
							} catch (IOException e) {
								// TODO Auto-generated catch block
								e。printStackTrace();
							}
							
							System.out.println("========上传完成,开始调用转码工具类=======");
							//调用转码机制flv mp4 f4v m3u8 webm ogg放行直接播放,
							//asx,asf,mpg,wmv,3gp,mov,avi,wmv9,rm,rmvb等进行其他转码为mp4
							
							if (filename_extension.equals("avi") || filename_extension.equals("rm") 
								|| filename_extension.equals("rmvb") || filename_extension.equals("wmv")
								|| filename_extension.equals("3gp")  || filename_extension。equals("mov")
								||filename_extension.equals("flv")   || filename_extension.equals("ogg")
								
								) {
								
								ConverVideoTest c = new ConverVideoTest();
						        c。run(yuanPATH);   //调用转码
								System.out.println("=================转码过程彻底结束=====================");
							}
							
							//获取转码后的mp4文件名
							String Mp4path = "E://Projectpicture/websiteimages/finshvideo/";
							filename2 = filename2+".mp4";
							String NewVideopath =Mp4path +filename2;
							System.out.println("新视频的url:"+NewVideopath);
							
							//删除临时文件
							File file2 = new File(path);
							 if (!file2。exists()) {
						       System.out.println("没有该文件");
						       }
						     if (!file2.isDirectory()) {
						    	   System.out。println("没有该文件夹");
						       }
						     String[] tempList = file2.list();
						     File temp = null;
						     for (int i = 0; i < tempList.length; i++) {
						          if (path。endsWith(File.separator)) {
						             temp = new File(path + tempList[i]);
						          } else {
						              temp = new File(path + File.separator + tempList[i]);
						          }
						          if (temp。isFile() || temp.isDirectory()) {
						             temp。delete();		//删除文件夹里面的文件
						          }
						        }
						       System。out.println("所有的临时视频文件删除成功");
							
							// 实例化用户类
							tb_resource resource = new tb_resource();
							
							//获取填写的相关信息
							String title = request.getParameter("title");
							String writer = request.getParameter("writer");
							int state = Integer.parseInt(request.getParameter("state"));
							String time = request.getParameter("time");
							int clicks = Integer.parseInt(request.getParameter("clicks"));
							int grade = Integer。parseInt(request.getParameter("grade"));
							String subclass = request.getParameter("subclass");
							int uid = Integer.parseInt(request。getParameter("uid"));
							
							//存储信息
							resource.setTitle(title);
							resource。setWriter(writer);
							resource。setTime(time);
							resource。setClicks(clicks);
							resource.setGrade(grade);
							resource.setSubclass(subclass);
							resource。setState(state);
							resource.setUid(uid);
							resource.setSuffix(filename2);
							resource.setUrl(NewVideopath); 			//已转码后的视频存放地址
							
							// 实现对数据的更新
							int n = 0;
							n = tb_resourceService。insertResource(resource);
							
							if (n != 0) {
								return new ModelAndView("back/public/success").addObject(
										"notice", "resourceList?uid=" + uid
												+ "&grade=-1&state=-1&subclass=" + subclass);
							} else {
								return new ModelAndView("back/public/fail")。addObject("notice",
										"resourceList?uid=" + uid
												+ "&grade=-1&state=-1&subclass=" + subclass);
							}
						}
						return null;
					}


本文来自电脑杂谈,转载请注明本文网址:
http://www.kadakong.com/a/bofangqi/article-121502-1.html

相关阅读
发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

K8彩票投注 甘肃11选5走势图 甘肃快3走势图 快3投注官网 快3娱乐平台 恒彩彩票开奖 恒彩彩票投注 河北11选5走势图 状元彩票开户 快赢彩票官网