Files
racalmas/website/agenda/planung/js/audio_recordings.js
Milan 60aa3387f0 verify uploads and playout
check if attributes for uploaded audio match expected ranges and mark
them by colors to help finding issues with duration, channels, RMS, mode
(CBR, ABR), bitrate.

increase upload limit to 400 MB for audio
2019-06-30 01:26:06 +02:00

149 lines
4.1 KiB
JavaScript

function showProgress(){
$('#progress').slideDown();
return false;
}
function hideProgress(){
$('#progress').slideUp();
return false;
}
function playAudio(path){
var url='../../agenda_files/recordings/'+path;
var win = window.open(url, '_blank');
}
function changeFile(fileInput){
var file = fileInput.files[0];
var size = file.size / (1000*1000);
$('#uploadSize').html(size + " MB");
if (size > 400){
$('#uploadButton').hide();
showError("file is too large. maximum size is 400 MB! Please use MP3, 192 kHz, CBR, 44100 Hz, 16bit");
}else{
$('#uploadButton').show();
}
}
function showError(error){
$('#error').html(error);
$('#error').show();
}
function hideError(){
$('#error').hide();
}
function showFinished(){
$('#info').html("upload finished");
$('#info').show();
}
function hideFinished(){
$('#info').hide();
}
function roundSize(size){
var MB=1000*1000;
var value= Math.round(size*10/MB)/10;
value+='';
if (value.indexOf('.')<0)value+='.0';
return value;
}
function uploadFile(uploadButton){
hideFinished();
hideError();
showProgress();
var request=$.ajax({
url: 'audio_recordings.cgi',
type: 'POST',
data: new FormData($('#audio_recordings_upload')[0]),
cache: false,
contentType: false,
processData: false,
xhr: function() {
var start = new Date();
//var myXhr = $.ajaxSettings.xhr();
var xhr = new window.XMLHttpRequest();
if (xhr.upload) {
var c=0;
var oldRemaining=0;
xhr.upload.addEventListener(
'progress',
function(data) {
if (!data.lengthComputable) return;
c++;
var loaded=roundSize(data.loaded);
var total=roundSize(data.total);
$('#progressBar').attr("value", loaded);
$('#progressBar').attr("max", total);
if (c<2)return;
c=0;
var duration=(new Date().getTime() - start.getTime()) / 1000 ;
var bitrate = loaded / duration;
//var remaining = Math.round(bitrate * ( total - loaded) );
var remaining = Math.round( (duration * data.total / data.loaded) - duration );
if (oldRemaining == 0) oldRemaining = remaining;
if (duration>30) remaining= oldRemaining*0.5 + remaining*0.5;
oldRemaining=remaining;
var content = loaded + " of " + total + " MB<br>";
content += '<div class="thin">';
content += "finished in " + Math.round(remaining) + " seconds<br>";
content += "took " + Math.round(duration) + " seconds<br>";
content += '</div>'
$('#progressLabel').html(content);
} ,
false
);
}
return xhr;
}
});
request.fail(
function(jqXHR, textStatus, errorThrown ){
showError("error: "+errorThrown);
hideProgress();
hideFinished();
}
);
request.done(
function(data){
showFinished();
hideProgress();
hideError();
//setTimeout(function() { location.reload() }, 1000);
}
);
}
$( document ).ready(
function() {
$('#file').on( 'change',
function(){
changeFile( this );
return false;
}
);
$('#uploadButton').on( 'click',
function(){
uploadFile( this );
return false;
}
);
var number = 1+Math.floor(11 * Math.random());
$('#progress img').attr("src", "/agenda/image/upload/bird"+number+".gif");
}
);