
Advanced search
Medias (91)
-
Spitfire Parade - Crisis
15 May 2011, by
Updated: September 2011
Language: English
Type: Audio
-
Wired NextMusic
14 May 2011, by
Updated: February 2012
Language: English
Type: Video
-
Video d’abeille en portrait
14 May 2011, by
Updated: February 2012
Language: français
Type: Video
-
Sintel MP4 Surround 5.1 Full
13 May 2011, by
Updated: February 2012
Language: English
Type: Video
-
Carte de Schillerkiez
13 May 2011, by
Updated: September 2011
Language: English
Type: Text
-
Publier une image simplement
13 April 2011, by ,
Updated: February 2012
Language: français
Type: Video
Other articles (29)
-
Librairies et binaires spécifiques au traitement vidéo et sonore
31 January 2010, byLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation; Oggz-tools : outils d’inspection de fichiers ogg; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores;
Binaires complémentaires et facultatifs flvtool2 : extraction / (...) -
Support audio et vidéo HTML5
10 April 2011MediaSPIP 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 (...) -
De l’upload à la vidéo finale [version standalone]
31 January 2010, byLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier; La génération d’une vignette : extraction d’une (...)
On other websites (1714)
-
Receive HLS stream and rebroadcast
22 September 2020, by user9066046I 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 January 2021, by 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 January 2021, by awabsI 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
});;
};