
Recherche avancée
Médias (91)
-
999,999
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Demon seed (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
The four of us are dying (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Corona radiata (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Lights in the sky (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
Autres articles (111)
-
Script d’installation automatique de MediaSPIP
25 avril 2011, parAfin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
La documentation de l’utilisation du script d’installation (...) -
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs
12 avril 2011, parLa manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.
Sur d’autres sites (4782)
-
FFmpeg - RTMP streaming from Node, stream is faster than realtime
31 mars 2023, par WestonMy goal is to render a canvas in Node, and stream that canvas to an RTMP server (Twitch ultimately, but testing on a local RTMP server). The standard way to stream to RTMP seems to be
ffmpeg
, so I'm using that, spawned as a child process from within node. I've tried a bunch of different combinations of techniques andffmpeg
params to get a consistent framerate and a stream at "realtime" speed, but can't figure it out. Here's the paths I've gone down so far

Render canvas and send input in continuous interval


import { createCanvas } from 'canvas';

const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');

const fps = 30;
const ffmpeg = spawn('ffmpeg', [
 '-re',
 '-framerate', String(.fps),
 '-r', String(fps),

 '-i', '-',
 
 '-vcodec', 'libx264',
 '-r', String(fps),
 '-s', '1920x1080',
 '-g:v', String(2*fps),
 '-c:a', 'aac',
 '-f', 'flv', 'rtmp://127.0.0.1/live'
]);
ffmpeg.stdout.pipe(process.stdout)
ffmpeg.stderr.pipe(process.stderr)


const send = () => {
 ctx.fillStyle = 'red'
 ctx.fillRect(0, 0, 1920, 1080);
 ctx.font = '100px Arial';
 ctx.fillStyle = 'black'
 ctx.fillText(new Date().toLocaleString(), 500, 500);
 ffmpeg.stdin.write(canvas.toBuffer())
 setImmediate(() => send())
}
send()



Observations


- 

- Took about 35 seconds for the stream to actually start (I think because of ffmpeg needing some amount of time to analyze the input ?)
- Frame rate extremely below what I set it to, and "speed" also very low, although I'm not 100% sure what this means. example log
Frame= 906 fps=3.9 q=29.0 size= 311kB time=00:00:27.83 bitrate= 91.5kbits/s speed=0.119x
- Stream behavior

- 

- Takes about a minute to load once opened in VLC
- Timer on the stream starts about 1 minute behind real time, stays stuck on a single second for 30+ seconds, then shoots up a few seconds quickly, and gets stuck again














I had a hunch here that at least some of the reason for the strange behavior was that rendering the canvas in the same loop that I send input to
ffmpeg
in was too slow to achieve 30 FPS.

Render canvas in separate interval from ffmpeg input interval


Only render canvas FPS-times per second


Continue sending input to
ffmpeg
as fast as possible

import { createCanvas } from 'canvas';

const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');

let buffer = canvas.toBuffer();

const fps = 30;
const ffmpeg = spawn('ffmpeg', [
 ...same as before
]);

const render = () => {
 ctx.fillStyle = 'red'
 ctx.fillRect(0, 0, 1920, 1080);
 ctx.font = '100px Arial';
 ctx.fillStyle = 'black'
 ctx.fillText(new Date().toLocaleString(), 500, 500);
 buffer = canvas.toBuffer();
 setTimeout(() => render(), 1/fps)
}
render();

const send = () => {
 ffmpeg.stdin.write(buffer)
 setImmediate(() => send())
}
send()



Observations


- 

ffmpeg
starts streaming almost immediately- fps starts out around 16, takes a couple seconds to hit 28, and then 30 more seconds to hit 30fps. speed much closer to 1x, but not quite all the way. example log
frame=15421 fps= 30 q=29.0 size= 4502kB time=00:08:31.66 bitrate= 72.1kbits/s speed=0.994x
- Stream behavior

- 

- Takes about 5 seconds to load once opened in VLC
- Timer stays stuck on the same second for multiple minutes














My hunch here for the stream being stuck on 1 timestamp is that while ffmpeg is sending frames out at 30 frames per second, I'm sending it frames much quicker than that. So in the first 1st of a second of streaming


- 

- Canvas renders with timestamp T 30 times
send
runs N times where N is likely way higher than 30, sendingffmpeg
N frames with the current timestamp- ffmpeg now has N frames with timestamp T on them, but can only send them out 30 per second, so it takes more than 1 second for the timestamp on the screen to change








Only send ffmpeg a frame every 1/FPS second


Same as before, but instead of sending ffmpeg frames as quickly as possible, only send it FPS frames every second.


import { createCanvas } from 'canvas';

const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');

let buffer = canvas.toBuffer();

const fps = 30;
const ffmpeg = spawn('ffmpeg', [
 ...same as before
]);

const render = () => {
 ...same as before
}
render();

const send = () => {
 ffmpeg.stdin.write(buffer)
 setTimeout(() => send(), 1/fps)
}
send()



Observations


- 

ffmpeg
takes a few seconds to start streaming- fps starts out high, around 28, and over the next minute or so drops down to 16. Speed drops along with it. example log
frame= 1329 fps= 16 q=29.0 size= 463kB time=00:00:41.93 bitrate= 90.5kbits/s speed= 0.5x
- Stream behavior

- 

- Takes about 10 seconds to load once opened in VLC
- Timer increases about twice as fast as expected, then gets hung on one second for a bit, and then starts increasing again at same rate















I'll stop there, but tl ;dr I've tried a whole bunch of different combinations of
-re, -framerate, -fps_mode, -r
ffmpeg args, and some other techniques in the code like continuing to usesetImmediate
to send frames, but use a date comparison to actually send a frame at an FPS rate. I'm sure there's probably some fundamental video streaming knowledge I'm missing, so I'm just looking for any sort of guidance on how I can get my canvas to stream at a "realtime" speed, or whatever I could be missing here.

-
FFmpeg - RTMP streaming from NodeJS, stream is faster than realtime
6 avril 2023, par WestonMy goal is to render a canvas in Node, and stream that canvas to an RTMP server (Twitch ultimately, but for now I'm testing on a local RTMP server). The standard way to stream to RTMP seems to be
ffmpeg
, so I'm using that, spawned as a child process from within NodeJS.

I've tried a bunch of different combinations of techniques and
ffmpeg
params to get a consistent framerate and a stream at "realtime" speed, but can't figure it out. Here's the paths I've gone down so far

Render canvas and send input in continuous interval


import { createCanvas } from 'canvas';

const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');

const fps = 30;
const ffmpeg = spawn('ffmpeg', [
 '-re',
 '-framerate', String(.fps),
 '-r', String(fps),

 '-i', '-',
 
 '-vcodec', 'libx264',
 '-r', String(fps),
 '-s', '1920x1080',
 '-g:v', String(2*fps),
 '-c:a', 'aac',
 '-f', 'flv', 'rtmp://127.0.0.1/live'
]);
ffmpeg.stdout.pipe(process.stdout)
ffmpeg.stderr.pipe(process.stderr)


const send = () => {
 ctx.fillStyle = 'red'
 ctx.fillRect(0, 0, 1920, 1080);
 ctx.font = '100px Arial';
 ctx.fillStyle = 'black'
 ctx.fillText(new Date().toLocaleString(), 500, 500);
 ffmpeg.stdin.write(canvas.toBuffer())
 setImmediate(() => send())
}
send()



Observations


- 

- Took about 35 seconds for the stream to actually start (I think because of ffmpeg needing some amount of time to analyze the input ?)
- Frame rate extremely below what I set it to, and "speed" also very low, although I'm not 100% sure what this means. example log
Frame= 906 fps=3.9 q=29.0 size= 311kB time=00:00:27.83 bitrate= 91.5kbits/s speed=0.119x
- Stream behavior

- 

- Takes about a minute to load once opened in VLC
- Timer on the stream starts about 1 minute behind real time, stays stuck on a single second for 30+ seconds, then shoots up a few seconds quickly, and gets stuck again














I had a hunch here that at least some of the reason for the strange behavior was that rendering the canvas in the same loop that I send input to
ffmpeg
in was too slow to achieve 30 FPS.

Render canvas in separate interval from ffmpeg input interval


Only render canvas FPS-times per second


Continue sending input to
ffmpeg
as fast as possible

import { createCanvas } from 'canvas';

const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');

let buffer = canvas.toBuffer();

const fps = 30;
const ffmpeg = spawn('ffmpeg', [
 ...same as before
]);

const render = () => {
 ctx.fillStyle = 'red'
 ctx.fillRect(0, 0, 1920, 1080);
 ctx.font = '100px Arial';
 ctx.fillStyle = 'black'
 ctx.fillText(new Date().toLocaleString(), 500, 500);
 buffer = canvas.toBuffer();
 setTimeout(() => render(), 1/fps)
}
render();

const send = () => {
 ffmpeg.stdin.write(buffer)
 setImmediate(() => send())
}
send()



Observations


- 

ffmpeg
starts streaming almost immediately- fps starts out around 16, takes a couple seconds to hit 28, and then 30 more seconds to hit 30fps. speed much closer to 1x, but not quite all the way. example log
frame=15421 fps= 30 q=29.0 size= 4502kB time=00:08:31.66 bitrate= 72.1kbits/s speed=0.994x
- Stream behavior

- 

- Takes about 5 seconds to load once opened in VLC
- Timer stays stuck on the same second for multiple minutes














My hunch here for the stream being stuck on 1 timestamp is that while ffmpeg is sending frames out at 30 frames per second, I'm sending it frames much quicker than that. So in the first 1st of a second of streaming


- 

- Canvas renders with timestamp T 30 times
send
runs N times where N is likely way higher than 30, sendingffmpeg
N frames with the current timestamp- ffmpeg now has N frames with timestamp T on them, but can only send them out 30 per second, so it takes more than 1 second for the timestamp on the screen to change








Only send ffmpeg a frame every 1/FPS second


Same as before, but instead of sending ffmpeg frames as quickly as possible, only send it FPS frames every second.


import { createCanvas } from 'canvas';

const canvas = createCanvas(1920, 1080);
const ctx = canvas.getContext('2d');

let buffer = canvas.toBuffer();

const fps = 30;
const ffmpeg = spawn('ffmpeg', [
 ...same as before
]);

const render = () => {
 ...same as before
}
render();

const send = () => {
 ffmpeg.stdin.write(buffer)
 setTimeout(() => send(), 1/fps)
}
send()



Observations


- 

ffmpeg
takes a few seconds to start streaming- fps starts out high, around 28, and over the next minute or so drops down to 16. Speed drops along with it. example log
frame= 1329 fps= 16 q=29.0 size= 463kB time=00:00:41.93 bitrate= 90.5kbits/s speed= 0.5x
- Stream behavior

- 

- Takes about 10 seconds to load once opened in VLC
- Timer increases about twice as fast as expected, then gets hung on one second for a bit, and then starts increasing again at same rate















I'll stop there, but tl ;dr I've tried a whole bunch of different combinations of
-re, -framerate, -fps_mode, -r
ffmpeg args, and some other techniques in the code like continuing to usesetImmediate
to send frames, but use a date comparison to actually send a frame at an FPS rate. I'm sure there's probably some fundamental video streaming knowledge I'm missing, so I'm just looking for any sort of guidance on how I can get my canvas to stream at a "realtime" speed, or whatever I could be missing here.

-
Revision 31972 : Et maintenant on peut aussi importer les fichiers d’export. On peut aussi ...
8 octobre 2009, par rastapopoulos@… — LogEt maintenant on peut aussi importer les fichiers d’export.
On peut aussi supprimer entièrement un menu, ce qui n’était bizarement pas possible avant.
Pour la peine, on hausse la version, parce que c’est une nouvelle fonctionnalité d’ajoutée.