mirror of
https://github.com/spacedeck/spacedeck-open.git
synced 2025-12-15 17:37:30 +01:00
add video conversion progress
This commit is contained in:
@@ -50,6 +50,8 @@ const convertableAudioTypes = [
|
||||
"audio/x-hx-aac-adts",
|
||||
"audio/aac"];
|
||||
|
||||
// ffmpeg progress
|
||||
var duration = 0, time = 0, progress = 0;
|
||||
|
||||
function getDuration(localFilePath, callback){
|
||||
exec.execFile("ffprobe", ["-show_format", "-of", "json", localFilePath], function(error, stdout, stderr) {
|
||||
@@ -58,6 +60,40 @@ function getDuration(localFilePath, callback){
|
||||
});
|
||||
}
|
||||
|
||||
function getConversionProgress(content){
|
||||
// get duration of source
|
||||
var matches = (content) ? content.match(/Duration: (.*?), start:/) : [];
|
||||
if( matches && matches.length>0 ){
|
||||
var rawDuration = matches[1];
|
||||
// convert rawDuration from 00:00:00.00 to seconds.
|
||||
var ar = rawDuration.split(":").reverse();
|
||||
duration = parseFloat(ar[0]);
|
||||
if (ar[1]) duration += parseInt(ar[1]) * 60;
|
||||
if (ar[2]) duration += parseInt(ar[2]) * 60 * 60;
|
||||
}
|
||||
// get the time
|
||||
matches = content.match(/time=(.*?) bitrate/g);
|
||||
if( matches && matches.length>0 ){
|
||||
var rawTime = matches.pop();
|
||||
// needed if there is more than one match
|
||||
if (Array.isArray(rawTime)){
|
||||
rawTime = rawTime.pop().replace('time=','').replace(' bitrate','');
|
||||
} else {
|
||||
rawTime = rawTime.replace('time=','').replace(' bitrate','');
|
||||
}
|
||||
|
||||
// convert rawTime from 00:00:00.00 to seconds.
|
||||
ar = rawTime.split(":").reverse();
|
||||
time = parseFloat(ar[0]);
|
||||
if (ar[1]) time += parseInt(ar[1]) * 60;
|
||||
if (ar[2]) time += parseInt(ar[2]) * 60 * 60;
|
||||
|
||||
//calculate the progress
|
||||
progress = Math.round((time/duration) * 100);
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
|
||||
function createWaveform(fileName, localFilePath, callback){
|
||||
var filePathImage = localFilePath + "-" + (new Date().getTime()) + ".png";
|
||||
|
||||
@@ -135,7 +171,7 @@ function convertVideo(fileName, filePath, codec, callback, progressCallback) {
|
||||
ff.stderr.on('data', function (data) {
|
||||
console.log('[ffmpeg-video] stderr: ' + data);
|
||||
if (progressCallback) {
|
||||
progressCallback(data);
|
||||
progressCallback(getConversionProgress(""+data));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
<source v-if="a.view.payload_uri && a.view.mime" v-bind:src="a.view.payload_uri" v-bind:type="a.view.mime" />
|
||||
</video>
|
||||
<div class="spinner"></div>
|
||||
<div class="progress" v-bind:style="{width: a.view.progress+'%'}">{{a.description}}</div>
|
||||
<div class="progress" v-bind:style="{width: a.description+'%'}">{{a.description}}</div>
|
||||
</div>
|
||||
|
||||
<!-- audio -->
|
||||
|
||||
Reference in New Issue
Block a user