Auf den Webserver wird eine Master-Datei hochgeladen.
Der Upload erfolgt mittels Plupload – die Datei wird in kleinere Stücke zerlegt – um große Dateien hochladen zu können.
Das Dateiformat (z.B *.mp4 oder *.webm) wird automatisch erkannt.
$connection = ssh2_connect('{server-name}', 22);
ssh2_auth_password($connection, '{user-name}', '{password}');
$ffmpeg = '/usr/local/bin/ffmpeg';
$videoname = '/var/www/video/dash/'.$path.'/'.$path.'-'.$file_name.'_sd.mp4';
$video = '/var/www/video/dash/'.$path.'/'.$path.'-'.$file_name.'.mp4';
ssh2_exec($connection, "/usr/local/bin/ffmpeg -i ".$video." -s hd480 -c:a copy ".$videoname." -y");
mittels eines Java-Scripts wird bei jedem Nutzer ermittelt ob er eine schnelle oder langsame internetverbindung hat bzw. mit welchem Gerät (Smartphone, Desktop) er auf die Videodatei zugreift. Dementsprechend wird im ein Video z. B. in HD- oder SD-Qualität geliefert.
testLatency(function(avg) {
isConnectedFast = (avg <= tThreshold);
$.ajax({
url: '/ajaxcalls/ck_speed',
type: 'POST',
data: {
speed: isConnectedFast
},
}).done(function() {
if(isConnectedFast == true){
window.location = currentLocation;
}
});
});
function testLatency(cb) {
var tStart = new Date().getTime();
if (i<timesToTest-1) {
dummyImage.src = testImage + '?t=' + tStart;
dummyImage.onload = function() {
var tEnd = new Date().getTime();
var tTimeTook = tEnd-tStart;
arrTimes[i] = tTimeTook;
testLatency(cb);
i++;
};
} else {
var sum = arrTimes.reduce(function(a, b) { return a + b; });
var avg = sum / arrTimes.length;
cb(avg);
}
}
Ein ähnlicher Workflow lässt sich so auch für zum Beispiel für Bild-Dateien erstellen.
Kopiere Master-Datei auf Webserver — verändere Auflösung, veändere Dateiformat — schneide Bild zu oder verändere Abmaße — usw.