J'ai essayé de faire du Livestreaming avec une image créée par programme sur youtube en utilisant node. J'ai eu un succès très limité en utilisant FFmpeg. Bien que j'aie réussi à créer et à sauvegarder une image grâce à este Je n'ai pas encore réussi à faire fonctionner le code pour le streaming vers un serveur RTMP.
const cp = require('child_process'),
destination = 'rtmp://a.rtmp.youtube.com/live2/[redacted]', //stream token redacted
proc = cp.spawn('./ffmpeg/bin/ffmpeg.exe', [
'-f', 'rawvideo',
'-pix_fmt', 'rgb24',
'-s', '426x240',
'-i', '-', //allow us to insert a buffer through stdin
'-f', 'flv',
destination
]);
proc.stderr.pipe(process.stdout);
(function loop() {
setTimeout(loop, 1000 / 30); //run loop at 30 fps
const data = Array.from({length: 426 * 240 * 4}, () => ~~(Math.random() * 0xff)); //create array with random data
proc.stdin.write(Buffer.from(data)); //convert array to buffer and send it to ffmpeg
})();
Lors de l'exécution de ce code, aucune erreur n'apparaît et tout semble fonctionner, mais YouTube signale qu'aucune donnée n'est reçue. Quelqu'un sait-il ce qui se passe ici ?
Mise à jour : C'est vraiment contre-intuitif mais ajouter un slash à la destination comme ceci 'rtmp://a.rtmp.youtube.com/live2/[redacted]/'
fait en sorte que ffmpeg jette une erreur générique I/O error
. C'est vraiment bizarre pour moi. Je m'excuse si la réponse à cette question est évidente, je suis vraiment inexpérimenté avec ffmpeg.