phonegap实现视频上传后显示播放

    用phonegap成功实现视频上传之后,我需要在jsp页面中显示上传好的视频,并且能够点击播放。

    一开始,我打算用phonega直接调用安卓的播放器,这就需要实现播放视频的js及其对应的java类。如果把这个实现了,估计phonegap的插件开发大体也就熟悉了。看了下phonegap中的js代码,发现用的是面向对象思想,和ExtJs中的相似,有类、构造函数等。

    找到一个相关的帖子,网址见关于PhoneGap视频插件。这个我还没有实践做好,那个帖子是2012年,至今phonegap应该有所变化,完成之后再发个博客说明下。

    上述方法有点麻烦,而HTML5本身就有能支持视频播放的标签:video,当前,video 元素支持三种视频格式,如下:

格式IEFirefoxOperaChromeSafari
OggNo3.5+10.5+5.0+No
MPEG 49.0+NoNo5.0+3.0+
WebMNo4.0+10.6+6.0+No

Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件

MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件

WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件

  使用方法为:

<video src="movie.ogg" width="320" height="240" controls="controls">
Your browser does not support the video tag.
</video>
    由于我用手机上传的视频格式是3gp的,试了下在上述浏览器中不支持,本来还在困扰这个问题该怎么解决,难道还要自己去实现phonegap的视频插件,然后调用安卓自身的播放器?抱着试试看的态度,发现在手机端运行页面的时候是可以播放3gp格式的视频的,我就暂且这么做,遇到问题再解决。

    这里我将视频上传至服务器之后,然后获取其在服务器端的地址,即url,放入video的src便可。因为显示页面是服务器端的,由web应用的同源策略可知,不能将视频在手机中的路径给src,否则不能显示。不过,我想应该可以通过phonegap获取手机的视频文件来显示吧,对于这点还未实践,不敢妄下结论。

    javascript代码如下:

    /*捕获视频并上传*/
    function captureVideo() {
		navigator.device.capture.captureVideo(captureSuccess, captureError, {
			limit : 1
		});
	}

  //captureVideo方法执行失败后回调函数  
	function captureError(error) {
		var msg = 'An error occurred during capture: ' + error.code;
		navigator.notification.alert(msg, null, 'Uh oh!');
	}
	function captureSuccess(mediaFiles) {
		var i, path, len;
	//	alert(mediaFiles.length);
		for (i = 0, len = mediaFiles.length; i < len; i += 1) {
			//对应的逻辑内容       
			path = mediaFiles[i].fullPath;
			uploadVideo(mediaFiles[i]);//上传视频文件
		}
	}
	//将视频显示出来  
	 function displayVideo() {
		 var beforeVideo = document.getElementById('beforeVideo');
	     beforeVideo.style.display = 'block';
	     var videoPath="<%=session.getAttribute("uploadVideoPath")%>";
	     beforeVideo.src = "http://<%=request.getAttribute("ip")%>:<%=request.getAttribute("port")%>/fire"+videoPath; 
	 }
	 
	function uploadVideo(mediaFile) {
		var path = mediaFile.fullPath,  name = mediaFile.name;
	     
		var ft = new FileTransfer();
	  	ft.onprogress = showUploadingProgress;
		navigator.notification.progressStart("", "当前上传进度");
		var options = new FileUploadOptions();  
	    options.fileKey = "indexFile";  
	   	options.fileName = name;  
	    options.mimeType = "multipart/form-data";  
	    options.chunkedMode = false;  
	    var params = {};
		params.value1 = "test";
		params.value2 = "param";
		options.params = params;

		ft
				.upload(
						path,
						encodeURI("http://<%=request.getAttribute("ip")%>:<%=request.getAttribute("port")%>/fire/VideoUploadForIndex.action"),
						function(result) {
							console
									.log('Upload success:'
											+ result.responseCode);
							console.log(result.bytesSent + 'bytes sent');
							 displayVideo();//显示视频
							 navigator.notification.progressStop(); 
							 alert("视频上传成功");
							 
						}, function(error) {
							alert("An error has occurred: Code = " + error.code);
							console.log("upload error source " + error.source);
							console.log("upload error target " + error.target);
						}, options);
	}

html对应部分代码如下

<video
								src=""
								id="beforeVideo"
								style="margin-left:30px;width:240px;height:240px;border:1px solid black; display:none;text-align:center"
								controls="controls"> Your browser does not support the
							video tag. </video>
							<button type="button" οnclick="captureVideo();">拍摄视频</button>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值