免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
html5 pc端錄制視頻 MediaStreamRecorder

自己花了一天研究出來的  html 5 錄制視頻并上傳到服務(wù)器  這方面資料太少了  尤其是中文資料

借鑒  SegmentFault  https://segmentfault.com/q/1010000011489899

git官方      https://github.com/streamproc/MediaStreamRecorder

這倆個(gè)文檔都有點(diǎn)坑  第一個(gè) 文檔 弄出來 可以錄制視頻但是不能關(guān)閉攝像頭  停止錄制后 攝像頭沒有關(guān),第二個(gè) 文檔也就是 官方git 上的演示demo  可以用 但是錄制后視頻

剛開始不知道怎么回事  看了文檔 以為視頻 設(shè)置寬度有問題   改了寬度也不行,

后來研究倆個(gè)文檔  終于 再第一個(gè)文檔的基礎(chǔ)上 結(jié)合官方文檔 修復(fù)停止錄制視頻 時(shí)攝像頭不關(guān)閉的問題  ,,并且發(fā)現(xiàn)倆個(gè)畫面的原因  官方文檔  multiStreamRecorder = new MultiStreamRecorder([stream, stream]);

  想要一個(gè)畫面就用這個(gè) mediaRecorder = new MediaStreamRecorder(stream);

 

官方文檔寫的上傳到PHP 服務(wù)器 我這里用的java后臺   上傳時(shí)還弄了 老半天  官方給出的 

 

 

XMLHttpRequest 上傳 之前沒見過這玩意 弄了半天也不行 直接改成ajax 上傳了

停止視頻用    mediaRecorder.stop(); 的話 就會(huì)出現(xiàn) 不關(guān)閉攝像頭的問題

     后才用官方給的      mediaRecorder.stop(); mediaRecorder.stream.stop(); 但是我實(shí)際發(fā)現(xiàn) 用一個(gè)mediaRecorder.stream.stop(); 就夠了

我把代碼貼出來, 

 

1'100%' height='480' id='myVideo'>
2 
3
4 
5'videolz()' type='button'  class='btn btn-danger' style='width: 100%; font-size: 32px'>'glyphicon glyphicon-facetime-video' aria-hidden='true' id='videostr'>視頻描述
001//  判斷瀏覽器
002var root ='<%=basePath %>';
003var aa = '' ; //防止兩次上傳
004var mediaRecorder ;
005var index=1;//定時(shí)加1         
006var dingshi;
007var mediaConstraints = { audio: true, video: { width: 1280, height: 720 } };
008 
009function captureUserMedia(mediaConstraints, successCallback, errorCallback) {
010    navigator.mediaDevices.getUserMedia(mediaConstraints).then(successCallback).catch(errorCallback);
011}
012function onMediaError(e) {
013    
014}
015function onMediaSuccess(stream) {
016     var video = document.querySelector('video');
017          //  賦值 video 并開始播放
018          video.srcObject = stream;
019          video.onloadedmetadata = function(e) {
020            video.play();
021          };
022          mediaRecorder = new MediaStreamRecorder(stream);
023          mediaRecorder.stream = stream;
024         /*    //  錄像api的調(diào)用 */
025                mediaRecorder.mimeType = 'video/mp4';
026              dingshi = window.setInterval(function(){
027                $('#videostr').html('保存視頻'+index+'秒');
028                index++;
029            }
030            ,1000); 
031              
032            mediaRecorder.start(12000000000);
033            //  停止錄像以后的回調(diào)函數(shù)
034           
035            mediaRecorder.ondataavailable = function (blob) {
036                if(aa == ''){
037                     var file = new File([blob], 'msr-' + (new Date).toISOString().replace(/:|\./g, '-') + '.mp4', {
038                         type: 'video/mp4'
039                     });
040                     var formData = new FormData();
041                     formData.append('file', file);
042                     console.log(formData);
043 
044                    $.ajax({
045                        url :  root+'/upload/video.do',
046                        type : 'post',
047                        cache : false,
048                        data: formData,
049                        dataType : 'json',
050                        processData: false,
051                        contentType: false,
052                        error : function() {
053                            alert('暫時(shí)無法操作,請刷新后再試!');
054                        },
055                        success : function(result) {
056                             
057                            if (result.code == 0) {
058                                var params = result.data;
059                                console.log(params);
060                                console.log(params.fileUrl);
061                                /* $('#lzvideo').attr('src', params.fileUrl); */
062                                 
063                            } else {
064                                 
065                            }
066                        }
067                    });
068                     
069                aa = blob;
070                }
071            };
072}
073 
074           function videolz(){
075                if( $('#videostr').text()=='視頻描述'){
076                $('#videostr').html('保存視頻');
077                $('#videostr').removeClass('glyphicon-facetime-video');
078                $('#videostr').addClass('glyphicon-pause')
079                /* $('#videos').append('') */
080                 //  開始錄像
081                 $('#myVideo').show();
082                captureUserMedia(mediaConstraints, onMediaSuccess, onMediaError);
083 
084                }else{
085                $('#videostr').html('視頻描述');
086                $('#videostr').addClass('glyphicon-facetime-video');
087                $('#videostr').removeClass('glyphicon-pause')
088                /*  $('#myVideo').remove();  */
089           //  停止錄像
090                 /*  mediaRecorder.stop(); */
091              mediaRecorder.stream.stop();
092                /*  $('#myVideo').unbind(); */
093               
094                index=1;
095                window.clearInterval(dingshi);
096                }
097        
098            }
099             
100 
101 
102
01/*
02 * 上傳視頻
03 */
04@RequestMapping(value='video')
05@ResponseBody
06public Result uoloadVideo(@RequestParam('file') MultipartFile file,Model model,HttpServletRequest request, HttpServletResponse response) {
07 
08    Result result = new Result();
09    Map data = new HashMap();
10    String serverPath = '/upload/' + new SimpleDateFormat('yyyyMM').format(new Date()) + '/';
11    String basePath = request.getScheme()+'://'+request.getServerName()+':'+request.getServerPort();
12    String filePath = request.getSession().getServletContext().getRealPath(serverPath);
13    String fileName = UUID.randomUUID().toString().replaceAll('-', '') + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf('.'));
14    String fileUrl = request.getContextPath() + serverPath + fileName;
15 
16    File targetFile = new File(filePath, fileName);
17    if (!targetFile.exists()) {
18        targetFile.mkdirs();
19    }
20 
21    try {
22        file.transferTo(targetFile);
23        System.out.println(basePath);
24        data.put('fileUrl', basePath+fileUrl);
25        result = new Result(0, '上傳成功', data);
26    } catch (Exception e) {
27        result = new Result(1, '上傳異常');
28    }
29 
30    return result;
31 
32}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
震懾眼睛的工筆國畫【60P】
AFNetworking2.5使用
[javascript] elementui和vue下復(fù)制粘貼上傳圖片
動(dòng)態(tài)加載JS腳本的4種方法(修改版)
fckeditor配置詳解-易博園
從剪貼板上傳圖片文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服