FFMpeg - PhantomJS для Youtube Live
Я пытаюсь транслировать веб-страницу, снятую с PhantomJS, на Youtube с помощью FMMpeg. Это команда, которую я использую:
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 из моей консоли
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). По умолчанию для чтения входных данных используется -framerate 25, который будет установлен, если не указан параметр -framerate. Частота кадров на выходе для видеопотока устанавливается с помощью -r после -i или с использованием фильтра fps.
Таким образом, в вашем случае частота кадров должна быть 1/period_from_phantomjs, которая равна 1000/30 = 33,33
Что касается -g 60, это будет добавлять ключевой кадр каждые 2 секунды, что, вероятно, является обязательным требованием для API потоковой передачи YouTube (я знаю, что для Facebook это).