Recherche avancée

Médias (91)

Autres articles (111)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

Sur d’autres sites (15130)

  • ffmpeg library - why does the Bitrate parameter change on encoding, and how do I force to preserve it ?

    22 avril 2021, par QRrabbit

    Hello forum and all the members of the community !

    


    I have this question on ffmpeg library, why does the bitrate parameter not retained after encoding, even though I explicitly specify the desired rate.

    


    Input file ffprobe :

    


      Duration: 00:00:10.01, start: 0.000000, bitrate: 534719 kb/s
    Stream #0:0(eng): Video: qtrle (rle  / 0x20656C72), argb(progressive), 1920x1080, 533881 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn, 30k tbc (default)
    Metadata:
      creation_time   : 2021-04-13T16:35:16.000000Z
      handler_name    : Apple Video Media Handler
      encoder         : Animation
      timecode        : 00:00:00;00


    


    Here's the command I run :

    


    ffmpeg -i input.mov -map 0:a? -map 0:s? -pix_fmt argb -b:v 533881667 -maxrate 533881667 -minrate 533881667 -r 29.97 -top 1 -color_range 1 -colorspace 1 -color_primaries 1 -color_trc bt709 -map_metadata 0 -c:a copy -timecode 00:00:00.00 -c:v qtrle -c:s copy output.mov


    


    Output file ffprobe :

    


      Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    creation_time   : 2021-04-13T16:35:16.000000Z
  Duration: 00:00:10.01, start: 0.000000, bitrate: 100126 kb/s
    Stream #0:0: Video: qtrle (rle  / 0x20656C72), argb(progressive), 1920x1080, 100133 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 11988 tbn, 11988 tbc (default)
    Metadata:
      creation_time   : 2021-04-13T16:35:16.000000Z
      handler_name    : VideoHandler
      encoder         : Lavf58.58.100
      timecode        : 00:00:00;00


    


    As it is visible from the ffprobe from above, I go from :

    


    The Input's file bitrate : 534719 kb/s
to Output bitrate : 100126 kb/s

    


  • Need to force a 0 for zero bit in UDP stream from FFMPEG (Converted from RTMP) into CCextractor

    22 avril 2021, par ArloVande

    I'm working on extracting the 708 captions from a live rtmp stream and sending it to a text file. I've got to convert the stream from RTMP to UDP in ffmpeg for CCextractor to read it. So far I have the command

    


    ffmpeg -i rtmp://localhost:1935/live/ -c:v copy -bsf:v h264_mp4toannexb -f mpegts udp://127.0.0.1:2555

    


    However when I run CCextractor with this command

    


    ccextractor -udp 2555 -out=txt -o /mnt/captions/currenttext_encoder_1.txt

    


    I get a few seconds of good captions and then it errors out with "Error : Broken AVC stream - forbidden_zero_bit not zero" If I send that stream out directly over UDP (bypassing the RTMP to UDP ffmpeg conversion) I do not get that same error.

    


    So I'm wondering if there is a way ffmpeg can send out a stream without a broken AVC ? Also just generally wondering what might be going on here.

    


  • Google App Engine - Access file after uploaded to bucket

    28 mai 2021, par jessiPP

    I have uploaded a file using my google app engine backend to my storage bucket but now I cannot access the file to pass in into ffmpeg. I am getting this error message from the try-catch : "The input file does not exist". I can see that the file was uploaded because I checked my developer console under the storage bucket. I am using the boilerplate code provided by google but added the ffmpeg for testing. I am trying to access the path to the uploaded file using, but it is incorrect, though I am getting the bucket.name value and the blob.name value. I am using the "flex" environment for this.

    


    const originalFilePath = `gs://${bucket.name}/${blob.name}`; 


    


    here is the full code :

    


    const process = require('process'); // Required to mock environment variables
const express = require('express');
const helpers = require('./helpers/index');
const Multer = require('multer');
const bodyParser = require('body-parser');
const ffmpeg = require("ffmpeg"); //https://www.npmjs.com/package/ffmpeg
const {Storage} = require('@google-cloud/storage');

// Instantiate a storage client
const storage = new Storage();

const app = express();
app.set('view engine', 'pug');
app.use(bodyParser.json());

// Multer is required to process file uploads and make them available via
// req.files.
const multer = Multer({
storage: Multer.memoryStorage(),
 limits: {
  fileSize: 5 * 1024 * 1024, // no larger than 5mb, you can change as needed.
 },
});

// A bucket is a container for objects (files).
const bucket = storage.bucket(process.env.GCLOUD_STORAGE_BUCKET);

// Display a form for uploading files.
app.get('/', (req, res) => {
 res.render('form.pug');
});

// Process the file upload and upload to Google Cloud Storage.
app.post('/upload', multer.single('file'), (req, res, next) => {

if (!req.file) {
 res.status(400).send('No file uploaded.');
 return;
}

// Create a new blob in the bucket and upload the file data.
const blob = bucket.file(req.file.originalname);
const blobStream = blob.createWriteStream({
 resumable: false,
});

blobStream.on('error', err => {
 next(err);
});

blobStream.on('finish', () => {

const audioFile = helpers.replaceAllExceptNumbersAndLetters(new Date());

// this path is incorrect but I cannot find correct way to do it
const originalFilePath = `gs://${bucket.name}/${blob.name}`; 

const filePathOutput = `gs://${bucket.name}/${audioFile}.mp3`;

try {
 const process = new ffmpeg(originalFilePath);
 process.then(function (video) {
 // Callback mode
 video.fnExtractSoundToMP3(filePathOutput, (error, file) => {
 if (!error)
  res.send(`audio file: ${file}`);
 });
}, (error) => {
 res.send(`process error: ${error}`);

});
} catch (e) {
 res.send(`try catch error: ${JSON.stringify(e)} | bucket: ${JSON.stringify(bucket)} | 
 blob: : ${JSON.stringify(blob)}`);
}  


});

blobStream.end(req.file.buffer);

});

const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
 console.log(`App listening on port ${PORT}`);
 console.log('Press Ctrl+C to quit.');
});


module.exports = app;