`
ren2881971
  • 浏览: 108362 次
社区版块
存档分类
最新评论

视频网站,将上传视频转换为flv。在页面上播放

    博客分类:
  • j2ee
阅读更多
哈哈  我的博客标题之所以写的这么白话。主要是为了以后方便自己查找资源。

前几天接手到一个上传视频并播放的需求。 可以简单的理解为小型的视频网站。 并具有基本的增删改查功能。

最初实现:
保持原有的上传视频格式,并通过不同的软件,RealPlay Windows media play 来在jsp上实现播放。
后来于哥说.这种需要用户安装软件的形式 很不友好。需要将上传视频的格式统一转换成flv,这样在网页上可以直接播放。


从昨天下午开始着手完成这部分内容。

主要思想是将上传后的视频格式。
通过java 调用服务器端的两个可执行性文件:1.ffmpeg 2. mencoder。
java的ProcessBuilder可以直接调用cmd命令来执行程序自动转化视频。
public class ConvertVideo{
      public void convertFlv(String ffmpegPath,String path1,String path2){
		List<String> commend = new java.util.ArrayList<String>();
		//String flvPath = "e:\\a.flv";
		commend.add(ffmpegPath);
		commend.add("-i");
		commend.add(path1);
		commend.add("-ab");
		commend.add("56");
		commend.add("-ar");
		commend.add("22050");
		commend.add("-b");
		commend.add("500");
		commend.add("-r");
		commend.add("15");
		commend.add("-s");
		commend.add("800x600");
		commend.add(path2);
        int flag = doProcess(commend);
		if(flag!=-1){
			deleteFile(path1);
		}
	}
   	public int doProcess(List<String> list){
   		int exitValue = -1;
		try{
			ProcessBuilder builder = new ProcessBuilder();
			builder.command(list);
			Process p = builder.start();
			exitValue = doWaitFor(p);
			if(exitValue!=-1){
		      System.out.println(">>>>>>>>> convert finished  >>>>>>>>>>>>>");
			} 
			return exitValue;
		}catch(Exception e){
		    e.printStackTrace();
		}
		    return exitValue;
	}
	public int doWaitFor(Process p){
	InputStream in = null;
	InputStream err = null;
	int exitValue = -1; // returned to caller when p is finished
	try {
		System.out.println("comeing");
		in = p.getInputStream();
		err = p.getErrorStream();
		boolean finished = false; // Set to true when p is finished

		while (!finished) {
			try {
				while (in.available() > 0) {
					// Print the output of our system call
					BufferedInputStream bi = new BufferedInputStream(in);
					Character c = new Character((char) bi.read());
					System.out.print(c);
				}
				while (err.available() > 0) {
					// Print the output of our system call
					BufferedInputStream bi = new BufferedInputStream(err);
					Character c = new Character((char) bi.read());
					System.out.print(c);
				}

				// Ask the process for its exitValue. If the process
				// is not finished, an IllegalThreadStateException
				// is thrown. If it is finished, we fall through and
				// the variable finished is set to true.
				exitValue = p.exitValue();
				finished = true;

			} catch (IllegalThreadStateException e) {
				// Process is not finished yet;
				// Sleep a little to save on CPU cycles
				Thread.currentThread().sleep(500);
			}
		}
	} catch (Exception e) {
		// unexpected exception! print it out for debugging...
		System.err.println("doWaitFor();: unexpected exception - "
				+ e.getMessage());
	} finally {
		try {
			if (in != null) {
				in.close();
			}

		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		if (err != null) {
			try {
				err.close();
			} catch (IOException e) {
				System.out.println(e.getMessage());
			}
		}
	}
	// return completion status to caller
	return exitValue;
    }
	public void deleteFile(String str) {
		File file = new File(str);
		file.delete();
	}
	
}

本来是想支持rmvb格式视频的上传了,但是rmvb不能转换为flv,需要先转化成avi,再由avi转换成flv。但是这样一来。转换的时间太长了。还不如索性就直接提示用户上传指定的视频文件格式了。
这样一来我也省事了,也不用去操心rmvb的转换了。

---------------------------------------------------------------------------------
有了上传后转换好保存的视频。 那我们下一步就是在网上显示了。
上午找了一会。发现如果在网页上实现flv的播放。那么服务器端需要 有swf。
又找了一个别人已经写好的swf。扔在服务端上。就可以播放flv了。
这样在修修改改一些边边角角。  这个需求就算是完成了。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
									codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" height="380" width="500"> 
									<param name="movie" 
									value="<%=path1%>vcastr22.swf?vcastr_file=<%=path1%><%=info[0]%>.flv"> 
									<param name="quality" value="high"> 
									<param name="allowFullScreen" value="true" /> 
									<embed 
									src="<%=path1%>vcastr22.swf?vcastr_file=<%=path1%><%=info[0]%>.flv" 
									quality="high" 
									pluginspage="http://www.macromedia.com/go/getflashplayer" 
									type="application/x-shockwave-flash" width="800" height="600"> 
									</embed> 
								 </object> 
分享到:
评论

相关推荐

    视频上传+转换成flv

    视频上传+转换成flv+截图保存,使用自定义控件,在网页直接调用。

    PDF转化FLASHPDFtoFlashV2.35绿色汉化版

    功能: 同时大量的PDF文件转换到一个特定格式 支持加密的PDF文件 PDF转换为Flash视频的高品质 支持页面范围转换(所有,从至)的个别网页 根据图像的大小的FLV /的SWF,自动拉伸/缩小图片大小 支持Fla

    冠格空间博客系统 4.2 开源版.rar

    其他格式的视频文件转换为Flv格式的解码器,请解压ffmpeg、mencoder文件夹到站点根目录MakeProcessSoft文件夹下,同时在"站点管理"的”基本设置”更新“FFMpeg视频解码文件完整路径”和“MenCoder视频解码文件完整...

    阿里云OSS附件通 商业白金版 PHP≥5.3

    其他问题或升级问题,请查看插件页面上的常见问题文档 1. 支持远程附件的所有功能 2. 支持板块封面图片设置 3. 支持附件在远程和本地之间随意互相转换 4. 支持远程附件和本地附件的备份 5. 支持远程上传功能的开启...

    空间博客系统(GoAgo Space System)V4.2源码

    想拥有类似优酷、56网的视频吗,您可以上传主流格式的视频,系统自动转换成Flv格式 4.网络硬盘 您可以自定义文件夹,走到哪里都能有属于您的移动硬盘 5.上传模块 无刷新、批量、进度条控制多文件Flash上传全新...

    旅游网站源码(旅行社网站建设用)

    FLV视频模块,支持超大附件视频上传(G),支持将视频自动转为FLV格式,支持在文章加插入添加好的FLV视频播放。 电子报在线制作 网上商城支持,在线下订单、付款。 高性能站内搜索引擎,文章添加自动生成索引,...

    商用版本文本编辑器DotNetTextBoxV6.0.8Source 源码

    8)增加getImagesPathID属性,当属性不为空时,将在插入图片到编辑器的同时将图片地址即时插入属性指定的页面ID! 9)增加自动及手动内容分页的强大功能,通过getAutoPage(自动分页)及getManualPage(手动分页)属性获取分页...

    DotNetTextBox V6.0.10 商业版 下载 (已知最新)

    8)增加getImagesPathID属性,当属性不为空时,将在插入图片到编辑器的同时将图片地址即时插入属性指定的页面ID! 9)增加自动及手动内容分页的强大功能,通过getAutoPage(自动分页)及getManualPage(手动分页)属性获取...

    淘特Asp.Net Cms v4.0.rar

    22、FLV视频模块,支持超大附件视频上传(2G),支持将视频自动转为FLV格式,支持在文章加插入添加好的FLV视频播放。 23、WORD文档上传自动转为HTML格式,并过滤到冗余代码并上传图片。 24、RSS支持,可以根据每个...

    B2Bbuilder行业网站英文系统最新版

    视频模块 用户可以上传视频,上传后可以自动转换成flv格式,让您的网站也轻松拥用视频功能,增加企业的力体宣传力度。 新闻模块 会员可以在后台发布企业新闻,管理员也可开启会员投稿功能,直接将会员新闻发布到...

    B2Bbuilder行业企业网站中英文最新版

    视频模块 用户可以上传视频,上传后可以自动转换成flv格式,让您的网站也轻松拥用视频功能,增加企业的力体宣传力度。 新闻模块 会员可以在后台发布企业新闻,管理员也可开启会员投稿功能,直接将会员新闻发布到...

    B2Bbuilder_v6.5.2.zip 电子商务行业网站内容管理系统!

    视频模块 用户可以上传视频,上传后可以自动转换成flv格式,让您的网站也轻松拥用视频功能,增加企业的力体宣传力度。 新闻模块 会员可以在后台发布企业新闻,管理员也可开启会员投稿功能,直接将会员新闻发布到...

    b2b软件 b2b网站管理系统 b2bbuilder

    视频模块 用户可以上传视频,上传后可以自动转换成flv格式,让您的网站也轻松拥用视频功能,增加企业的力体宣传力度。 新闻模块 会员可以在后台发布企业新闻,管理员也可开启会员投稿功能,直接将会员新闻发布到...

    C#基础类库

    1.把上传的文件转换为字节数组 2.流转化为字节数组 2.上传文件根据FileUpload控件上传 3.把Byte流上传到指定目录并保存为文件 复制代码 UpLoadFiles 页面专用类 19.时间操作类 DateFormat 返回每月的第一天和最后一...

    C#基类库(苏飞版)

    1.把上传的文件转换为字节数组 2.流转化为字节数组 2.上传文件根据FileUpload控件上传 3.把Byte流上传到指定目录并保存为文件 复制代码 UpLoadFiles 页面专用类 19.时间操作类 DateFormat 返回每月的第一天和最后一...

    DotNetTextBox所见即所得编辑器控件 v3.3.1

    7) 将编辑器设置为在缩放或移动过程中持续更新元素外观,以达到更好的所见即所得效果。 8) 增加插入图片的路径类型选择功能,可通过ImgPathType内置的属性选择插入图片地址为相对路径(Relative)如:system_dntb/...

    新网文章管理系统newcms 2.2.rar

    8.网站背景设置、flash幻灯增加参数控制、支持flv文件播放、幻灯可外链图片。 9.外部调用JS,后台可自定义生成代码。 10.文章列表摘要控制、文章内容自动分页、文章页心情投票、文章列表每页显示条数设置、文章...

    易点(DianCMS)内容管理系统 v3.0 SQL体验版.rar

    随机数标签:时间型、文件名型、Guid型12、【增加】计划任务功能13、【改进】标签解析规则,标签内容放在模板、样式中都可以解析,大幅度提升标签的实用性14、【新增】编辑器增加上传flv视频、增加上传附件功能15、...

Global site tag (gtag.js) - Google Analytics