
Recherche avancée
Autres articles (68)
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
Soumettre améliorations et plugins supplémentaires
10 avril 2011Si vous avez développé une nouvelle extension permettant d’ajouter une ou plusieurs fonctionnalités utiles à MediaSPIP, faites le nous savoir et son intégration dans la distribution officielle sera envisagée.
Vous pouvez utiliser la liste de discussion de développement afin de le faire savoir ou demander de l’aide quant à la réalisation de ce plugin. MediaSPIP étant basé sur SPIP, il est également possible d’utiliser le liste de discussion SPIP-zone de SPIP pour (...) -
L’espace de configuration de MediaSPIP
29 novembre 2010, parL’espace de configuration de MediaSPIP est réservé aux administrateurs. Un lien de menu "administrer" est généralement affiché en haut de la page [1].
Il permet de configurer finement votre site.
La navigation de cet espace de configuration est divisé en trois parties : la configuration générale du site qui permet notamment de modifier : les informations principales concernant le site (...)
Sur d’autres sites (7309)
-
Why my nodejs giving this problem while starting to run rtsp ?
14 novembre 2019, par RajaramWhile starting the server for the first time just after the code checkout , my react js project is throwing error "events.js:187 throw er ; // Unhandled ’error’ event" . I have node 13.1.0 and npm 6.12.1.
[
'-rtsp_transport',
'tcp',
'-i',
'rtsp://user:user123@192.168.1.100:88/videoSub',
'-f',
'mpeg1video',
'-b:v',
'1000k',
'-an',
'-r',
'24',
'-'
]
events.js:187
throw er; // Unhandled 'error' event
^
Error: spawn ffmpeg ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
at onErrorNT (internal/child_process.js:456:16)
at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
at onErrorNT (internal/child_process.js:456:16)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn ffmpeg',
path: 'ffmpeg',
spawnargs: [
'-rtsp_transport',
'tcp',
'-i',
'rtsp://user:user123@192.168.1.100:88/videoSub',
'-f',
'mpeg1video',
'-b:v',
'1000k',
'-an',
'-r',
'24',
'-'
]
} -
FFmpeg raw video size parameter
3 novembre 2019, par Yanick SalzmannI am using libavformat in my library to read a stream of raw i420 images and transform them into an mp4 video. I’ve found CLI commands that perform this but since I am using the library in my program I need to reconstruct the same thing.
Currently the code that is having a problem is looking like this :
const auto raw_format = av_find_input_format("rawvideo");
if (raw_format == nullptr) {
log->error("Could not find RAW input parser in FFmpeg");
throw std::runtime_error("RAW not found");
}
_format_context->pb = _io_context.get();
AVDictionary *input_options = nullptr;
av_dict_set(&input_options, "framerate", std::to_string(fps).c_str(), 0);
av_dict_set(&input_options, "pix_fmt", "yuv420p", 0);
av_dict_set(&input_options, "s:v", fmt::format("{}x{}", width, height).c_str(), 0);
av_dict_set(&input_options, "size", fmt::format("{}x{}", width, height).c_str(), 0);
auto formatPtr = _format_context.get();
auto res = avformat_open_input(&formatPtr, "(memory file)", raw_format, &input_options);Finding the
rawvideo
is no problem, but it fails inavformat_open_input
with the error :[2019-11-03 15:03:22.953] [11599:11663] [ffmpeg] [error] Picture size 0x0 is invalid
I assumed the sizes are something I can insert using the input options, since in the CLI version it is passed using
-s:v 1920x1080
, however this does not seem to be true.Where do I have to specify the dimensions of my raw input stream ?
-
AWS Lambda for generate thumbnail save empty file
30 octobre 2019, par MilouselI need to create aws lambda for creating thumbnail from video by using ffmpeg, which is saved on S3 and this thumbnail saved into S3 too.
I downloaded ffmpeg from https://johnvansickle.com/ffmpeg/ page, set ffmpeg into nodejs file and send it into .zip. From this zip file I created ffmpeg layer. After that I connect my lambda with this ffmpeg layer. When I test it I receive Success response, but I save empty file (0 B size) into S3.
const AWS = require("aws-sdk");
const { spawn } = require("child_process");
const { createReadStream, createWriteStream } = require("fs");
const s3 = new AWS.S3();
const ffmpegPath = "/opt/nodejs/ffmpeg";
const allowedTypes = ["mov", "mpg", "mpeg", "mp4", "wmv", "avi", "webm"];
const width = process.env.WIDTH;
const height = process.env.HEIGHT;
module.exports.handler = async (event, context) => {
const srcKey = "test/0255f240-efef-11e9-862e-3949600f0ec9.mp4";
const bucket = "video.devel.abc.com";
const target = s3.getSignedUrl("getObject", {
Bucket: bucket,
Key: srcKey,
Expires: 1000
});
let fileType = "mp4";
console.log("srcKey: " + srcKey);
console.log("bucket: " + bucket);
console.log("target: " + target);
if (!fileType) {
throw new Error(`invalid file type found for key: ${srcKey}`);
}
if (allowedTypes.indexOf(fileType) === -1) {
throw new Error(`filetype: ${fileType} is not an allowed type`);
}
function createImage(seek) {
return new Promise((resolve, reject) => {
let tmpFile = createWriteStream(`/tmp/screenshot.jpg`);
const ffmpeg = spawn(ffmpegPath, [
"-ss",
seek,
"-i",
target,
"-vf",
`thumbnail,scale=${width}:${height}`,
"-qscale:v",
"2",
"-frames:v",
"1",
"-f",
"image2",
"-c:v",
"mjpeg",
"pipe:1"
]);
ffmpeg.stdout.pipe(tmpFile);
ffmpeg.on("close", function(code) {
console.log('code: ' + code);
tmpFile.end();
resolve();
});
ffmpeg.on("error", function(err) {
console.log(err);
reject();
});
});
}
function uploadToS3() {
return new Promise((resolve, reject) => {
let tmpFile = createReadStream(`/tmp/screenshot.jpg`);
let dstKey = srcKey
.replace(/\.\w+$/, `.jpg`)
.replace("test/", "test/shots/");
//const screensFile = "test/shots/";
console.log("dstKey: " + dstKey);
var params = {
Bucket: bucket,
Key: dstKey,
Body: tmpFile,
ContentType: `image/jpg`
};
s3.upload(params, function(err, data) {
if (err) {
console.log(err);
reject();
}
console.log(`successful upload to ${bucket}/${dstKey}`);
resolve();
});
});
}
await createImage(1);
await uploadToS3();
return console.log(`processed ${bucket}/${srcKey} successfully`);
};When I test it I receive these logs :
- srcKey : test/0255f240-efef-11e9-862e-3949600f0ec9.mp4
- bucket : video.devel.abc.com
- INFO processed video.devel.abc.com successfully
- code : 1
- bucket : video.devel.abc.com
- dstKey : test/shots/0255f240-efef-11e9-862e-3949600f0ec9.jpg
- successful upload to video.devel.abc.com/test/shots/0255f240-efef-11e9-862e-3949600f0ec9.jpg
- processed video.devel.abc.com/test/0255f240-efef-11e9-862e-3949600f0ec9.mp4 successfully
So file is really created, but it is empty (size is 0 B), which is not ideal.