2017-02-22 20 views
0

Я пытаюсь передать веб-страницу, захваченную с помощью PhantomJS на Youtube, с помощью FMMpeg. Это команда я использую:FFMpeg - PhantomJS to Youtube Live

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"; 

И код render.js: http://pastebin.com/raw/X9gv8iGH

Похоже, это потоковое, но не кормить не будет получено YouTube, и я не могу увидеть, где проблема есть. Outpout from my console

+0

Почему 'xvfb-run'? (PhantomJS безголовый) Вы пробовали смотреть поток с игроком? – Vaviloff

+0

PhantomJS не запускается без использования xvfb-run. Я попытался экспортировать его в FLV-видео, но он воспроизводит только черный экран. –

+0

Я запустил скрипт на 5 секунд, и он сделал 48-минутное видео ... –

ответ

1

Попробуйте это:

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"; 

Параметр -framerate:

Можно указать две частоты кадров: вход и выход. Установите частоту кадров ввода с опцией ввода -фрагмента (до -i). По умолчанию для входных данных считывания есть -фрагмент 25, который будет установлен, если указан no -framerate. Скорость выходного кадра для видеопотока, устанавливая -r после -i или используя фильтр fps.

Так что в вашем случае частота кадров должна быть 1/period_from_phantomjs который является 1000/30 = 33,33

Что касается -g 60, что будет добавить ключевой кадр каждые 2 секунды, что, вероятно, является обязательным требованием для youtube streaming api (я знаю, что для facebook это).

+0

Это работает, но выводит очень низкий FPS (около 2,5). Кроме того, он рулит. Любая идея, как это исправить? –

+0

это возможно потому, что рендеринг phantomjs захлебывает процессор, и в ffmpeg недостаточно ввода. –