Recherche avancée

Médias (91)

Autres articles (35)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

Sur d’autres sites (10505)

  • Shaka Player : ignore empty AdaptationSet

    24 juin 2019, par Mitya

    I’m trying to play DASH stream in Shaka Player.
    Sometimes the stream doesn’t have an audio source and its manifest file contains an empty AdaptationSet entry.
    In this case Shaka Player returns the manifest parsing error :

    | DASH_EMPTY_ADAPTATION_SET | 4003 | number |  The DASH Manifest contained an AdaptationSet with no Representations. |

    Is it possible to ignore this error somehow and play the video without audio source ?

    Example of manifest file :

    <?xml version="1.0" encoding="utf-8"?>
    <mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" minimumupdateperiod="PT4S" suggestedpresentationdelay="PT4S" availabilitystarttime="2019-06-24T13:38:04Z" publishtime="2019-06-24T13:38:34Z" timeshiftbufferdepth="PT14.9S" minbuffertime="PT9.9S">
       <programinformation>
           
       </programinformation>
       <period start="PT0.0S">
           <adaptationset contenttype="video" segmentalignment="true" bitstreamswitching="true">
               <representation mimetype="video/mp4" codecs="avc1.640028" bandwidth="2000000" width="1920" height="1080" framerate="20/1">
                   <segmenttemplate timescale="10240" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="5">
                       <segmenttimeline>
                           <s t="201697" d="51190" r="2"></s>
                       </segmenttimeline>
                   </segmenttemplate>
               </representation>
           </adaptationset>
           <adaptationset contenttype="audio" segmentalignment="true" bitstreamswitching="true">
           </adaptationset>
       </period>
    </mpd>
  • Moving .wav files from S3 to /tmp folder in AWS Lambda

    1er août 2019, par sleepyrobot

    I am currently trying to overlay two .wav files from S3 in AWS Lambda using FFMPEG. I am using node.js to do this. Here’s my process :

    1. Retrieve the files from S3, and save it to the Lambda /tmp folder
    2. Merge the two audio files, and save the output to the /tmp folder
    3. Upload the output from /tmp folder to S3.

    However, I am encountering errors on the first part, since the .wav files being downloaded are corrupted and distorted.

    I have tried using streams for this. However, I am still grasping its concept. I would appreciate any help. For my first try, I tried to retrieve an object from S3 and reupload the same

    I have tried using function for getting the audio file from S3 :

    async function readIn(bucketName, inputFilename, transfer, local) {
       console.log('reading in locally?', local);
       console.log(`reading from ${inputFilename} to ${transfer}`);

    // inputFilename is the key name (object name)
    // transfer is the filepath to where the obj will be transferred to (example: /tmp/audio1.wav)

       const writeStream = fs.createWriteStream(transfer);
       var file;

       local? await new Promise((resolve, revoke) => {
           file = fs.createReadStream(inputFilename);
           writeStream.on('finish', () => {
               console.log('file finished reading');
               resolve();
           });
           writeStream.on('error', (err) => {
               console.log('things messed up');
               revoke();
           });
           file.pipe(writeStream);
       }) : await new Promise((resolve, revoke) => {
           writeStream.on('finish', () => {
               console.log('file finished reading');
               resolve();
           });
           writeStream.on('error', (err) => {
               console.log('things messed up');
               revoke();
           });
           s3.getObject({
               Bucket : bucketName,
               Key    : inputFilename
           }, function(err, data) {
               if (err) {
                   console.log(err, err.stack);
               } else {
                   console.log('data got!');
               }
           }).createReadStream().pipe(writeStream);
       });
       console.log('returning to main from reading');
       return;
    }

    For uploading the file to S3 :

    async function writeOut(bucketName, outFile, transfer, contentType) {

           console.log('uploading', bucketName, outFile, transfer);
           return s3.upload({
               Bucket: bucketName,
               Key: outFile,
               Body: fs.createReadStream(transfer),
               //ACL: 'private',
               ContentType: contentType
           }).promise();
    }

    For merging the files (I haven’t tried this yet) :

    async function mergeFile(transfer1, transfer2, output) {
       await new Promise((resolve, revoke) => {
           console.log('beginning merge');
           var outStream = fs.createWriteStream('/tmp/output.wav');

           childProcess.exec('cp /var/task/ffmpeg /tmp/.; chmod 755 /tmp/ffmpeg;',
           function (error, stdout, stderr) {
               if (error) {
                   console.log('[ERROR]: An error occured in altering FFMPEG permission: ', error);
               } else {
                  console.log("[SUCCESS]: Successfully altered FFMPEG permission!");
                  // merge audio files
                   ffmpeg('/tmp/audio1.wav')
                   .input('/tmp/audio2.wav')
                   .on('error', function(err) {
                   console.log('An error occurred with merging: ' + err.message);
                   })
                   .complexFilter(
                   {
                   filter: 'amix',
                   inputs: ['0:a','1:a']
                   })
                   .on('end', function() {
                   console.log('Merging finished!');
                   })
                   .pipe(outStream, { end: true });
                   //.save('/tmp/output.wav');
                   //////  
               }
           })
       });}

    However, the resulting file is corrupted. Is there any error in the functions ? Please help. Thanks !

  • doc : Use empty-element tag.

    30 juillet 2019, par Ralph Giles
    doc : Use empty-element <hr/> tag.
    

    Improve the conformance of the xhtml generated by doxygen by
    using the self-closing <hr/> tag in the custom footer.

    Without this, xmllint complains about </body> and </html> end
    tags inside the still-only <hr>. That syntax is allowed in
    html but not xml.

    • [DH] doc/doxygen.footer.html