Recherche avancée

Médias (1)

Mot : - Tags -/blender

Autres articles (25)

  • 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 (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

  • Encoding and processing into web-friendly formats

    13 avril 2011, par

    MediaSPIP automatically converts uploaded files to internet-compatible formats.
    Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
    Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
    Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
    All uploaded files are stored online in their original format, so you can (...)

Sur d’autres sites (3905)

  • Receive HLS stream and rebroadcast

    22 septembre 2020, par user9066046

    I have commercial streaming server that streams via HLS in Europe.

    


    http://europe.server/stream1/index.m3u8

    


    Now my clients in USA having some network issues due to distance.

    


    So I have deployed new server in USA. I'd like it to receive HLS streams from European server and respond to US based customers.

    


    So users can access like

    


    http://usa.server/stream1/index.m3u8

    


    It will be H265/HEVC only so RTMP is not possible. Every tutorial I see on internet is based on RTMP.

    


    I have used following config from https://docs.peer5.com/guides/setting-up-hls-live-streaming-server-using-nginx/ for reference.

    


    worker_processes  auto;
events {
    worker_connections  1024;
}

http {
    sendfile off;
    tcp_nopush on;
    aio on;
    directio 512;
    default_type application/octet-stream;
    
    server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';
            
            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';
            
            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }   
            
            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }   
            
            root /mnt/;
        }   
    }
}


    


  • Nomenclature #4626 (Nouveau) : Renommer le menu "Squelettes"

    13 janvier 2021, par RastaPopoulos ♥

    Un petit pavé en début d’année, comme ça peut-être qu’en décembre on aura un début d’idée de quoi faire. :D

    Constat : dans mon expérience, 100% des gens à qui on apprend à utiliser éditorialement SPIP, admins et rédacs donc, n’ont strictement aucune fichue idée de ce que veut dire "Suqelettes", ni quel est le rapport avec le contenu qu’il y a à l’intérieur. Passer du temps à devoir expliquer un terme qui n’aura jamais aucun sens dans leurs activités quotidiennes est une perte de temps pour tout le monde, et 3 mois plus tard illes l’auront oublié vu que ça n’a de rapport avec rien dans leur vie d’admins/rédacs.

    Le fait de faire une référence à l’histoire technique de SPIP, ça ne parle qu’aux devs/intégrateurices : fort peu de gens par rapport à la masse des admins et rédacs qui vont l’utiliser au quotidien.

    Quand on se retire, en tant que devs/ingégrateurices, alors en gros 99% des utilisateurices de l’interface d’admin sont des gens qui ne savent rien du tout de comment c’est techniquement derrière, et même pour beaucoup qui n’ont jamais choisi spécialement ce CMS, et même allons plus loin : assez souvent qui ne savent même pas quel est le CMS utilisé !

    Et point important : ces gens ne devraient avoir aucune obligation de le savoir pour utiliser pourtant comme il faut l’interface.

    Si on leur apprend, parce que nous on aime SPIP et qu’on est enthousiaste à raconter son histoire et comment il marche, c’est super. Mais ça ne doit PAS être une obligation pour comprendre l’interface du premier coup.

    Mon idée (toute relative, c’est pour démarrer quoi) : revenir à des choses simples et couramment utilisées. Il n’y a aucun intérêt spécial à vouloir être original quand on parle quand même du menu principal d’admin.

    Le fait de changer l’intitulé, va forcément changer légèrement le sens, donc quelques plugins qui s’insèrent dedans devront possiblement être déplacés ailleurs. Mais il me semble que ça restera très à la marge, et que la majorité ça correspond toujours. Ça ne doit pas bloquer pour changer. Donc :
    - Mise en page
    - Présentation
    - …

    Dans WP il y a une entrée principale "Apparence", mais ce n’est justement pas notre cas : il faut un terme plus large, qui couvre à la fois les choix graphiques (changer ou configurer un thème, choisir la boite modale…) et les choix de structuration générale, de navigation (Compositions, Menus…).

    Dans ma tête "Mise en page" est pour le moment le terme le plus vaste qui me vient à l’esprit, et qui regroupe plusieurs notions à la fois, pas juste l’apparence graphique. S’il y a mieux tant mieux, du moment que ça regroupe bien ces différentes notions. L’autre jour sur spip-dev Laurent (c-real) disait surcharger avec ce terme aussi pour ses utilisateurices.

    On ne trouvera sûrement jamais le mot parfait à 100%, mais ça sera toujours 1000 fois mieux que "Squelettes" qui vraiment, après 10 ans à devoir l’expliquer en permanence, ne signifie rien pour personne à part nous.

  • How to add "ffmpeg" to the Cloud Run environment or to Dockerfile ?

    16 janvier 2021, par awabs

    I am triying to a logo to video that is uploaded to cloud storage using ffmpeg library, I deployed this code as cloud function is runs only with small size videos, so I decided to move to cloud run, but here I have to build container myself so I used this command instead

    


    gcloud builds submit --pack image=europe-west1-docker.pkg.dev/video-sharing-a1mfa/video-sharing-repo/my-image,env=GOOGLE_FUNCTION_TARGET=addLogo


    


    and it builds the image and I just had to create a service in the Cloud Run and it is running, but unfortunately when I trigger this function I get this error

    


    Error: spawn ffmpeg ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:268:19)
at onErrorNT (internal/child_process.js:470:16)
at processTicksAndRejections (internal/process/task_queues.js:84:21)


    


    Which I am not sure of but I guess is that ffmpeg in not installed in contanier (where it comes preinstalled in the gcloud functions env). Any idea how to install it or what the docker file configuration might be ?

    


    here is my code :

    


    const { Storage } = require('@google-cloud/storage');
const projectId = 'video-sharing-a1mfa';
let gcs = new Storage({
    projectId
});

const os = require('os');
const path = require('path');
const spawn = require('child-process-promise').spawn;


exports.addLogo = async (req, res) => {

const event = JSON.parse(req.body);
const bucket = event.bucket;
const contentType = event.contentType;
const filePath = event.name;

console.log('File change detected, function execution started');
if (path.basename(filePath).startsWith('resized-')) {
    console.log('We already renamed that file!');
    return;
}
const destBucket = gcs.bucket(bucket);
const tmpFilePath = path.join(os.tmpdir(), path.basename(filePath));
const metadata = { contentType: contentType };
const tmpLogoPath = path.join(os.tmpdir(), 'watermark.png');
await destBucket.file('watermark.png').download({
    destination: tmpLogoPath
})

const newPath = path.join(os.tmpdir(), 'output.mp4')

await destBucket.file(filePath).download({
    destination: tmpFilePath
});
console.log('file downloaded to temp');

console.log('adding watermark');

var str = "overlay=10:10"

await spawn('ffmpeg', ['-i', tmpFilePath, '-i', tmpLogoPath, '-filter_complex', str, newPath]);


console.log('watermark added');

return destBucket.upload(newPath, {
    destination: path.dirname(filePath) + '/resized-' + path.basename(filePath),
    metadata: metadata
});;
};