2017-02-22 1 views
0

J'essaie de diffuser une page Web capturée avec PhantomJS sur Youtube en utilisant FMMpeg. Ce est la commande que j'utilise:FFMpeg - PhantomJS à Youtube en direct

xvfb-run phantomjs --web-security=no render.js | ffmpeg -threads 0 -y -v verbose -c:v png -r 30 -f image2pipe -i - -f lavfi -i anullsrc -strict -2 -acodec aac -ac 1 -ar 44100 -b:a 128k -c:v libx264 -s 1280x720 -pix_fmt yuv420p -f flv "rtmp://a.rtmp.youtube.com/live2/key"; 

Et le code render.js: http://pastebin.com/raw/X9gv8iGH

On dirait qu'il est le streaming, mais aucun flux est reçu par YouTube, et je ne peux pas voir où la Le problème est. Outpout from my console

+0

Pourquoi 'xvfb-run'? (PhantomJS est sans tête) Avez-vous essayé de regarder le flux avec un joueur? – Vaviloff

+0

PhantomJS ne démarre pas sans xvfb-run. J'ai essayé de l'exporter dans une vidéo flv mais elle ne joue que sur un écran noir. –

+0

J'ai exécuté le script pendant 5 secondes et j'ai fait une vidéo de 48 minutes ... –

Répondre

1

Essayez ceci:

phantomjs --web-security=no render.js | ffmpeg -threads 0 -y -v verbose -c:v png -framerate 33 -f image2pipe -i - -f lavfi -i anullsrc -strict -2 -acodec aac -ac 1 -ar 44100 -b:a 128k -c:v libx264 -s 1280x720 -pix_fmt yuv420p -g 60 -r 30 -f flv "rtmp://a.rtmp.youtube.com/live2/key"; 

Paramètre -framerate:

Vous pouvez spécifier deux vitesses: entrée et sortie. Définissez le taux de trame d'entrée avec l'option -framerate input (avant -i). La valeur par défaut pour la lecture des entrées est -framerate 25, qui sera définie si no -framerate est spécifié. Fréquence d'images de sortie pour le flux vidéo en définissant -r après -i ou en utilisant le filtre fps.

Donc, dans votre framerate de cas devrait être 1/period_from_phantomjs qui est 1000/30 = 33,33

En ce qui concerne les 60 -g, qui ajoutera une image clé toutes les 2 secondes, ce qui est probablement une exigence pour l'API de streaming youtube (je sais que pour facebook c'est).

+0

Cela fonctionne mais produit un très faible FPS (environ 2,5). A part ça, ça coule. Toute idée de comment résoudre ce problème? –

+0

c'est peut-être parce que le rendu phantomjs étouffe le cpu, et il n'y a pas assez d'entrée dans ffmpeg. –