
Recherche avancée
Médias (91)
-
DJ Z-trip - Victory Lap : The Obama Mix Pt. 2
15 septembre 2011
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Matmos - Action at a Distance
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
DJ Dolores - Oslodum 2004 (includes (cc) sample of “Oslodum” by Gilberto Gil)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Danger Mouse & Jemini - What U Sittin’ On ? (starring Cee Lo and Tha Alkaholiks)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
Cornelius - Wataridori 2
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Rapture - Sister Saviour (Blackstrobe Remix)
15 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
Autres articles (71)
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (10388)
-
Why does my lambda doesn't end with an expected request end event ? [on hold]
16 avril 2019, par Nachum Freedmanconst now = (...a) =>
console.log(...a, Math.floor(new Date().getTime() / 1000) % 3600);
exports.handler = (event, context, callback) => {
console.log("PROCESS START");
const FROM_BUCKET = event.Records[0].s3.bucket.name;
const Key = decodeURIComponent(
event.Records[0].s3.object.key.replace(/\+/g, " ")
);
const uploadKey = Key.replace(/.webm/, ".mp4");
console.log("FROM BUCKET", FROM_BUCKET);
console.log("Recived key", Key);
const slicedFilename = Key.slice(-4) !== "webm" ? Key.slice(-4) : ".webm";
const extension =
slicedFilename === ".mp4"
? ".mp4"
: slicedFilename === ".pcm"
? ".pcm"
: slicedFilename === ".webm"
? ".webm"
: console.log("THE FILE NAME IS INCORRECT PLEASE CHECK @:", Key);
console.log("Extension detected is", extension);
const downloadKey =
Key.slice(-4) !== "webm"
? Key.slice(0, -4) + extension
: Key.slice(0, -5) + extension;
const downloadParams = { Bucket: FROM_BUCKET, Key: downloadKey };
console.log("Downloading file from S3", downloadParams);
const mobileDownloadExtension =
extension === ".mp4" ? ".pcm" : extension === ".pcm" ? ".mp4" : null;
const mobileDownloadParams = {
Bucket: FROM_BUCKET,
Key: Key.slice(0, -4) + mobileDownloadExtension
};
console.log("Downloading file from S3", mobileDownloadParams);
const tmpNamespace = Math.random();
const isMobile = extension === ".mp4" || extension === ".pcm";
let firstDigit = 0;
let restOfTheOffset = 0;
if (isMobile) {
console.log(
"If apply, second key to download is a file type",
mobileDownloadExtension
);
const offsetTime = Key.slice(
Key.lastIndexOf("_") + 1,
Key.indexOf(".")
).replace("-", "");
if (offsetTime > 999) {
firstDigit = 1;
restOfTheOffset = offsetTime.slice(1, offsetTime.length);
} else {
firstDigit = 0;
restOfTheOffset = offsetTime;
}
}
console.log("FIle recieved from Mobile?", isMobile);
Promise.all([
// download file from s3
new Promise((resolve, reject) =>
s3.getObject(downloadParams, (err, response) => {
if (err) {
console.error(
"Error while downloading file from S3",
downloadParams,
err.code,
"-",
err.message
);
return reject(err);
}
console.log("Successfully downloaed file from S3", downloadParams);
fs.writeFile(
tmp + "/input" + tmpNamespace + extension,
response.Body,
err =>
err
? console.log(err.code, "-", err.message) || reject(err)
: console.log(tmp + "/input" + tmpNamespace + extension) ||
resolve()
);
})
),
new Promise((resolve, reject) => {
extension !== ".mp4" && extension !== ".pcm"
? resolve()
: s3.getObject(mobileDownloadParams, (err, response) => {
if (err) {
console.error(
"Error while downloading file from S3",
mobileDownloadParams,
err.code,
"-",
err.message
);
return reject(err);
}
console.log(
"Successfully downloaed file from S3",
mobileDownloadParams
);
fs.writeFile(
tmp + "/input" + tmpNamespace + mobileDownloadExtension,
response.Body,
err =>
err
? console.log(err.code, "-", err.message) || reject(err)
: console.log(
tmp + "/input" + tmpNamespace + mobileDownloadExtension
) || resolve()
);
});
})
])
.then(() =>
Promise.all([
// call the answerVideoReady -> PROCESSING mobileDownloadExtnesion is actually the second file we seek (if mp4 then pcm)
// ,
isMobile
? Promise.resolve()
.then(() => {
new Promise((resolve, reject) => {
console.log("CALLING VIDEO PROCESSING", Key);
videoProcessing(Key);
resolve();
});
})
.then(
() =>
// run ffmpeg
// ffmpeg -i tmp/input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
now("FFMPEG CONVERT PCM TO WAV START") ||
new Promise((resolve, reject) =>
spawn("./ffmpeg/ffmpeg", [
"-f",
"s16le",
"-ar",
"16000",
"-ac",
"1",
"-i",
tmp + "/input" + tmpNamespace + ".pcm",
"-ar",
"44100",
"-ac",
"2",
tmp + "/input" + tmpNamespace + ".wav"
]).on("close", code =>
console.log("FFMPEG CONVERT PCM TO WAV SUCCESS", code) ||
!code
? resolve()
: reject()
)
)
)
.then(
() =>
// run ffmpeg
// ffmpeg -i tmp/input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
//more stuff
now("FFMPEG COMBINE MP4 AND WAV START") ||
new Promise(
(resolve, reject) =>
console.log(
[
"-i",
tmp + "/input" + tmpNamespace + ".mp4",
"-itsoffset",
"-" + firstDigit + "." + restOfTheOffset,
"-i",
tmp + "/input" + tmpNamespace + ".wav",
"-movflags",
"faststart",
"-filter_complex",
" [1:0] apad ",
"-shortest",
tmp + "/output" + tmpNamespace + ".mp4"
].join(" ")
) ||
spawn("./ffmpeg/ffmpeg", [
"-i",
tmp + "/input" + tmpNamespace + ".mp4",
"-itsoffset",
"-" + firstDigit + "." + restOfTheOffset,
"-i",
tmp + "/input" + tmpNamespace + ".wav",
"-movflags",
"faststart",
"-filter_complex",
" [1:0] apad ",
"-shortest",
tmp + "/output" + tmpNamespace + ".mp4"
]).on("close", code =>
console.log(
"FFMPEG COMBINE MP4 AND WAV SUCCESS",
code
) || !code
? resolve()
: reject()
)
)
)
: Promise.resolve()
.then(() => {
new Promise((resolve, reject) => {
console.log("CALLING VIDEO PROCESSING", Key);
videoProcessing(Key);
resolve();
});
})
.then(
() =>
now("FFMPEG SEND WEBM START") ||
new Promise((resolve, reject) => {
exec(
"./sed -i '1,4d;$d' " +
tmp +
"/input" +
tmpNamespace +
".webm"
).on(
"close",
code =>
console.log("FFMPEG SEND WEBM SUCCESS", code) ||
(!code ? resolve() : reject())
);
})
)
.then(
() =>
// run ffmpeg
// ffmpeg -i tmp/input.mp4 -movflags faststart -acodec copy -vcodec copy output.mp4
now("FFMPEG WEBM WEB READY START") ||
new Promise((resolve, reject) =>
(a => {
a.stdout.on("data", data => {
//console.log(`child stdout:\n${data}`);
});
a.stderr.on("data", data => {
//console.log(`child stdout:\n${data}`);
});
return a;
})(
spawn("./ffmpeg/ffmpeg", [
"-i",
tmp + "/input" + tmpNamespace + extension,
"-movflags",
"faststart",
"-acodec",
"aac",
"-vcodec",
"h264",
"-preset",
"slow",
"-crf",
"26",
"-r",
"25",
tmp + "/output" + tmpNamespace + ".mp4"
])
).on("close", code =>
console.log(
"FFMPEG WEBM WEB READY FINISHED WITH:",
code
) || !code
? resolve()
: reject()
)
)
)
])
)
.then(
() =>
new Promise((resolve, reject) =>
// upload the output.mp4 to s3
fs.readFile(
tmp + "/output" + tmpNamespace + ".mp4",
(err, filedata) => {
if (err) {
console.log("ERROR WHILE TRYING TO READ FILE", err);
throw err;
}
console.log("KEEEEYYY", uploadKey),
s3.putObject(
{
Bucket: TO_BUCKET,
Key: uploadKey,
Body: filedata
},
(err, response) => {
console.log(response);
if (err) {
console.log(
"ERROR WHILE UPLOADING FILE TO S3",
err,
response
);
return reject(err);
}
//uploading file
console.log(
"Successfully uploaded file to " + TO_BUCKET,
Key
);
resolve();
}
);
}
)
)
// call the answerVideoReady -> COMPLETED, context.success or ERROR, context.fail or error on set status to ERROR -> fail
)
.then(p =>
videoCompleted(Key)
.then(c => context.succeed())
.catch(es => context.fail(es))
)
.catch(
e =>
console.log("catch for upload error with:", e) ||
videoError(Key)
.then(p => context.fail(e))
.catch(ee => context.fail(ee))
);
}; -
How to run bash script from NodeJS application correctly ?
13 mars 2019, par z EyelandI am running a node application that uses spawn child-process to start this script
#!/bin/bash
FILEPATH="$1"
COMPRESSIONPATH="$2"
ffmpeg -i $FILEPATH -vcodec h264 -acodec mp2 $COMPRESSIONPATH
sudo rm $FILEPATH
curl -H "Content-Type:application/json" -X GET
http://localhost:3000/clovis/api/ledThe script never finishes. If the ffmpeg compression command takes long then x amount of time then the process just stops and holds the process. I cant tell so by using the command ps-ef. Is there another way to start bash scripts from NodeJS other then spawn ? Does the NodeJS child-process have a time limit ?
-
audio file conversion using ffmpeg
15 juillet 2014, par user3789242I’m building a voice recording project.so far I have succeeded in recording the voice as .wav audio file, and I’m using the ffmpeg for the user to be able to convert the audio file into a selected format (mp3, pcm, wma). What I want to do is to allow the user to select the format before recording the voice so that when stop recording the file will be saved in the selected format maybe by using ffmpeg conversion.
I have been searching the net for weeks for any demo using JavaScript and html5 but can’t find any. What I have tried so far is to save the audio file in a folder using Ajax/php and I’m trying to call that file in order to convert it but this method is very complicated and is not working. Any suggestions please. If you can also help me with a demo it would be most appreciated. This is my code so far :
function handleWAV(blob) {
if (currentEditedSoundIndex !== -1) {
$('#inFile2 tr:nth-child(' + (currentEditedSoundIndex + 1) + ')').remove();
}
var url = URL.createObjectURL(blob);
var li = document.createElement('li');
var au = document.createElement('audio');
var hf = document.createElement('a');
au.controls = true;
au.src = url;
hf.href = url;
hf.download = 'audio_recording_' + new Date().getTime() + '.wav';
hf.innerHTML = hf.download;
li.appendChild(au);
li.appendChild(hf);
inFile2.appendChild(li);
fileName=hf.download;
var reader = new FileReader();
reader.onload = function(event){
var fd = new FormData();
var Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.wav');
console.log("name = " + Name);
fd.append('fname', Name);
fd.append('data', event.target.result);
$.ajax({
type: 'POST',
url: 'upload.php',
data: fd,
processData: false,
contentType: false,
success: function(data){
//console.log(data);
}
});
};
reader.readAsDataURL(blob);
var fileBuffer;
// create ffmpeg worker
function getFFMPEGWorker() {
var ffmpegWorker = new Worker('worker.js');
ffmpegWorker.addEventListener('message', function(event) {
var message = event.data;
console.log(message.type);
if (message.type === "ready" && window.File && window.FileList && window.FileReader) {
// script loaded, hide loader
} else if (message.type == "stdout") {
console.log(message.data);
} else if (message.type == "stderr") {
console.log(message.data);
} else if (message.type == "done") {
var code = message.data.code;
console.log(code);
console.log(message.data);
var outFileNames = Object.keys(message.data.outputFiles);
console.log(outFileNames);
if (code == 0 && outFileNames.length) {
var outFileName = outFileNames[0];
console.log(outFileName);
var outFileBuffer = message.data.outputFiles[outFileName];
console.log(outFileBuffer);
var src = url;
console.log(url);
$("#downloadLink2").attr('href', src);
$("#download2").show();
} else {
$("#error").show();
}
}
}, false);
return ffmpegWorker;
}
// create ffmpeg worker
var ffmpegWorker = getFFMPEGWorker();
var ffmpegRunning = false;
if (ffmpegRunning) {
ffmpegWorker.terminate();
ffmpegWorker = getFFMPEGWorker();
}
ffmpegRunning = true;
// hide download div
$("#download2").hide();
// change download file name
var fileNameExt = fileName.substr(fileName.lastIndexOf('.') + 1);
var outFileName = fileName.substr(0, fileName.lastIndexOf('.')) + "." + getOutFormat();
$("#downloadLink2").attr("download2", outFileName);
$("#downloadLink2").text(outFileName);
var arguments = [];
arguments.push("-i");
arguments.push(fileName);
arguments.push("-b:a");
arguments.push(getBitrate());
switch (getOutFormat()) {
case "mp3":
arguments.push("-acodec");
arguments.push("libmp3lame");
arguments.push("out.mp3");
break;
case "wma":
arguments.push("-acodec");
arguments.push("wmav1");
arguments.push("out.asf");
break;
case "pcm":
arguments.push("-f");
arguments.push("s16le");
arguments.push("-acodec");
arguments.push("pcm_s16le");
arguments.push("out.pcm");
}
ffmpegWorker.postMessage({
type: "command",
arguments: arguments,
files: [
{
"name": fileName,
"buffer": fileBuffer
}
]
});
function getOutFormat() {
return $('input[name=format]:checked').val();
}
function getBitrate() {
return $('input[name=bitrate]:checked').val();
}
function readInputFile(file) {
// load file content
var reader = new FileReader();
reader.onload = function(e) {
fileName = file.name;
console.log(fileName);
fileBuffer = e.target.result;
}
reader.readAsArrayBuffer(file);
}
function handleFileSelect(event) {
var files = event.target.files; // FileList object
console.log(files);
// files is a FileList of File objects. display first file name
file = files[0];
console.log(file);
if (file) {
readInputFile(file);
console.log(file);
}
}
// setup input file listeners
el=document.getElementById('inFile2');
el.addEventListener('change',handleFileSelect, true);
}This code is for the download link where the user will be able to download the audio file also the conversion function happening in it.
As I said earlier the audio files are uploaded in a folder upload using Ajax.