Cordova 拍視頻和本地壓縮
小編:管理員 429閱讀 2022.09.13
拍視頻
cordova plugin add cordova-plugin-media-capture復制
js調用片段
function videoCapture() { //開始錄像(最長錄制時間:15秒) navigator.device.capture.captureVideo(onSuccess, onError, {duration: 15}); //錄制成功 function onSuccess(mediaFiles) { var i, path, len; //遍歷獲取錄制的文件(iOS只支持一次錄制一個視頻或音頻) for (i = 0, len = mediaFiles.length; i < len; i += 1) { console.log(mediaFiles); path = mediaFiles[i].fullPath; alert("錄制成功!\n\n" + "文件名:" + mediaFiles[i].name + "\n" + "大。" + mediaFiles[i].size + "\n\n" + "localURL地址:" + mediaFiles[i].localURL + "\n\n" + "fullPath地址:" + path); } } //錄制失敗 function onError(error) { alert('錄制失!錯誤碼:' + error.code); } }復制
captureVideo參數說明
captureVideo( onSuccess: (mediaFiles: MediaFile[]) => void, onError: (error: CaptureError) => void, options?: VideoOptions): void ; --------------------------- /** Encapsulates properties of a media capture file. */ interface MediaFile { /** The name of the file, without path information. */ name: string; /** The full path of the file, including the name. */ fullPath: string; /** The file's mime type */ type: string; /** The date and time when the file was last modified. */ lastModifiedDate: Date; /** The size of the file, in bytes. */ size: number; /** * Retrieves format information about the media capture file. * @param successCallback Invoked with a MediaFileData object when successful. * @param errorCallback Invoked if the attempt fails, this function. */ getFormatData( successCallback: (data: MediaFileData) => void, errorCallback?: () => void): void; } --------------------------- /** Encapsulates video capture configuration options. */ interface VideoOptions { /** * The maximum number of video clips the device's user can capture in a single * capture operation. The value must be greater than or equal to 1. */ limit?: number; /** The maximum duration of a video clip, in seconds. */ duration?: number; }復制
navigator.device.capture.captureVideo 輸出的log
fullPath: "file:///storage/emulated/0/DCIM/Camera/VID_20190601_120049.mp4" lastModified: null lastModifiedDate: 1559361649000 localURL: "cdvfile://localhost/sdcard/DCIM/Camera/VID_20190601_120049.mp4" name: "VID_20190601_120049.mp4" size: 2092530 start: 0 type: "video/mp4"復制本地壓縮Installation 安裝
cordova plugin add cordova-plugin-video-editor復制this example uses the cordova media capture plugin
navigator.device.capture.captureVideo( videoCaptureSuccess, videoCaptureError, { limit: 1, duration: 20 } ); function videoCaptureSuccess(mediaFiles) { // Wrap this below in a ~100 ms timeout on Android if // you just recorded the video using the capture plugin. // For some reason it is not available immediately in the file system. var file = mediaFiles[0]; var videoFileName = 'video-name-here'; // I suggest a uuid VideoEditor.transcodeVideo( videoTranscodeSuccess, videoTranscodeError, { fileUri: file.fullPath, outputFileName: videoFileName, outputFileType: VideoEditorOptions.OutputFileType.MPEG4, optimizeForNetworkUse: VideoEditorOptions.OptimizeForNetworkUse.YES, saveToLibrary: true, maintainAspectRatio: true, width: 640, height: 640, videoBitrate: 1000000, // 1 megabit audioChannels: 2, audioSampleRate: 44100, audioBitrate: 128000, // 128 kilobits progress: function(info) { console.log('transcodeVideo progress callback, info: ' + info); } } ); } function videoTranscodeSuccess(result) { // result is the path to the transcoded video on the device console.log('videoTranscodeSuccess, result: ' + result); } function videoTranscodeError(err) { console.log('videoTranscodeError, err: ' + err); }復制cordova-plugin-video-editor源碼
npm i cordova-plugin-video-editor復制
我建議將 maintainAspectRatio 設置為 true。 如果此選項為真,則可以提供任何寬度 / 高度,并且提供的高度將用于計算輸出視頻的新寬度。 如果您將 maintainAspectRatio 設置為 false,那么您很有可能會得到拉伸和 / 或扭曲的視頻。 當 maintainAspectRatio 為 true-時,下面是 iOS 上使用的簡化公式
aspectRatio = videoWidth / videoHeight; outputWidth = height * aspectRatio; outputHeight = outputWidth / aspectRatio;復制
默認輸出路徑為: /storage/emulated/0/Movies/HelloCordova
相關推薦
- Cordova 什么是Cordova? Cordova是用于使用HTML,CSS和JS構建移動應用的平臺。我們可以認為Cordova是一個容器,用于將我們的網絡應用程序與本機移動功能連接。默認情況下,Web應用程序不能使用本機移動功能。這就是Cordova進來的地方。它為網絡應用和移動設備之間的連…
- Hibernate Criterion 在查詢方法設計上能夠靈活的依據Criteria的特點來方便地進行查詢條件的組裝.Hibernate設計了CriteriaSpecification作為Criteria的父接口,以下提供了Criteria和DetachedCriteria.Criteria和DetachedCriteria的主要差別在于創建的形式不一樣,Criteria是在線的,所…