Recherche avancée

Médias (91)

Autres articles (105)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-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

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (10955)

  • lavd/avfoundation : Add basic PCM audio support.

    23 septembre 2014, par Thilo Borgmann
    lavd/avfoundation : Add basic PCM audio support.
    

    Signed-off-by : Michael Niedermayer <michaelni@gmx.at>

    • [DH] libavdevice/avfoundation.m
  • avformat/movenc : Explicitly address potential division by zero.

    27 avril 2017, par Lucas Cooper
    avformat/movenc : Explicitly address potential division by zero.
    

    find_fps attempts to infer framerate from AVCodec's timebase. When this
    results in a frame rate that isn't explicitly marked as supported in
    av_timecode_check_frame_rate, find_fps returns the AVStream's
    avg_frame_rate, which, per avformat.h, _may_ be set (or not).

    mov_get_mpeg2_xdcam_codec_tag, mov_get_h264_codec_tag and
    find_compressor attempt to call av_q2d on the return value of find_fps,
    which in the above case, may result in division by zero and therefore,
    an undefined frame rate when NaN is converted to int.

    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] libavformat/movenc.c
  • Can't upload huge video to google storage. I using "@ffmpeg-installer/ffmpeg" and @google-cloud/storage

    20 juillet 2022, par Dmytro Petskovych

    I upload file to google storage using "@ffmpeg-installer/ffmpeg" and @google-cloud/storage in my node.js App.&#xA;Step 1. file uploading to fs is in child processes - one process for each type of resolution (totaly six).&#xA;step 2. encription (converting to stream)&#xA;step 3. upload to google storage

    &#xA;

    I use "Upload a directory to a bucket" in order to send the video from the client to the Google Cloud Storage bucket.

    &#xA;

    This way is working fine only with small file.

    &#xA;

    when I upload video, actually I upload six videos, one for each type resolution

    &#xA;

    for example when I upload video with duration one hour it split on chunk and totally I get more three thousands files.

    &#xA;

    So actually i upload folder with large amount of files, but not all of this files are uploaded to cloud.

    &#xA;

    maybe someone had the similar problem and helps fix it.

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    const uploadFolder = async (bucketName, directoryPath, socketInstance) => {&#xA;    try {&#xA;      let dirCtr = 1;&#xA;      let itemCtr = 0;&#xA;      const fileList = [];&#xA;&#xA;      const onComplete = async () => {&#xA;        const folderName = nanoid(46);&#xA;&#xA;        await Promise.all(&#xA;          fileList.map(filePath => {&#xA;            const fileName = path.relative(directoryPath, filePath);&#xA;            const destination = `${ folderName }/${ fileName }`;&#xA;&#xA;            return storage&#xA;              .bucket(bucketName)&#xA;              .upload(filePath, { destination })&#xA;              .then(&#xA;                uploadResp => ({ fileName: destination, status: uploadResp[0] }),&#xA;                err => ({ fileName: destination, response: err })&#xA;              );&#xA;          })&#xA;        );&#xA;&#xA;        if (socketInstance) socketInstance.emit(&#x27;uploadProgress&#x27;, {&#xA;          message: `Added files to Google bucket`,&#xA;          last: false,&#xA;          part: false&#xA;        });&#xA;&#xA;        return folderName;&#xA;      };&#xA;&#xA;      const getFiles = async directory => {&#xA;        const items = await fs.readdir(directory);&#xA;        dirCtr--;&#xA;        itemCtr &#x2B;= items.length;&#xA;        for(const item of items) {&#xA;          const fullPath = path.join(directory, item);&#xA;          const stat = await fs.stat(fullPath);&#xA;          itemCtr--;&#xA;          if (stat.isFile()) {&#xA;            fileList.push(fullPath);&#xA;          } else if (stat.isDirectory()) {&#xA;            dirCtr&#x2B;&#x2B;;&#xA;            await getFiles(fullPath);&#xA;          }&#xA;        }&#xA;      }&#xA;&#xA;      await getFiles(directoryPath);&#xA;&#xA;      return onComplete();&#xA;    } catch (e) {&#xA;      log.error(e.message);&#xA;      throw new Error(&#x27;Can\&#x27;t store folder.&#x27;);&#xA;    }&#xA;  };

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;