2016-11-17 11 views
3

Я пытаюсь передать веб-страницу в Facebook Live видео с помощью ffmpeg. Я знаю, что могу использовать OBS, но я пытаюсь сделать это с сервера, поэтому я не могу пойти с OBS. Он отлично работает, когда я просматриваю, но как только я нажимаю «Go live», сначала кажется, что он запускается, но потом, когда он доводит меня до живого просмотра, он просто говорит, что видео закончилось. Я даже проверил ошибку видео-журнала с помощью Graph API, ничего. Я использую PhantomJS для труб скриншотами для FFmpeg:Использование ffmpeg для потоковой передачи в Facebook Live Video: можно просмотреть, но не вживую

phantomjs phantom.js | ffmpeg -y -c:v mjpeg \ 
-f image2pipe \ 
-r 5 -i \ 
- -c:v libx264 \ 
-x264-params keyint=5 \ 
-b:v 1000k -minrate 1000k -maxrate 1000k -bufsize 500k \ 
-f flv 'rtmp://rtmp-api.facebook.com:80/rtmp/xxxxxxxxxxxxxxxx' 

Как я уже сказал, что он работает нормально в окне предварительного просмотра живого потока на Facebook, но только немедленно заканчивается, когда я иду жить. Я добавил параметры битрейта, чтобы попытаться сохранить постоянный битрейт в соответствии с требованиями Facebook (https://developers.facebook.com/docs/videos/live-video/production-broadcasts), и у меня есть ключевой кадр каждые 5 кадров (довольно низкая частота кадров со скоростью 5 кадров в секунду), так что требование также выполняется.

Я не отправляю аудио, это может вызвать проблемы?

+0

У меня точно такая же проблема. Я также не отправляю аудио. Предварительный просмотр работает, но когда я нажимаю «Go Live», это занимает некоторое время, а затем показывает, что видео закончилось. Вскоре после остановки ffmpeg. – BugHunterUK

+0

Пробовал добавлять аудио, не повезло. Я думаю, что на самом деле это связано с тем, что частота кадров немного меняется из-за живой обработки, пытаясь найти способы обойти это, поэтому ffmpeg может вытаскивать изображения в нужный момент. –

+0

Я получил это от работы: https: // gist.github.com/JamesTheHacker/56fb9caf36244de582540e7d5c2fd6a5 – BugHunterUK

ответ

1

Facebook Live требуется частота кадров 30 FPS. Вы отправляете его 5, так что вам нужно будет конвертировать. Вам также нужен интервал ключевого кадра в 2 секунды. Попробуйте добавить частоту кадров вывода:

phantomjs phantom.js | ffmpeg -y -c:v mjpeg \ 
-f image2pipe \ 
-framerate 5 \ 
-i - \ 
-r 30 \ 
-c:v libx264 \ 
-x264-params keyint=60 \ 
-b:v 1000k -minrate 1000k -maxrate 1000k -bufsize 500k \ 
-f flv 'rtmp://rtmp-api.facebook.com:80/rtmp/xxxxxxxxxxxxxxxx' 
+0

Все еще не работает, выходы с низкой частотой кадров. вы можете помочь. –

+1

@bhargavjoshi Если у вас нет звука, добавьте молчание '-f lavfi -i anullsrc' &' -c: aac' (может быть, BS, но некоторые, похоже, ожидают или требуют звука). Вам также может понадобиться использовать YUV 4: 2: 0, поэтому добавьте '-pix_fmt yuv420p' в качестве опции вывода и попробуйте использовать' -re' с вашими входами. – LordNeckbeard

+0

@bhargavjoshi Можете ли вы вывести файл, чтобы убедиться, что выход 5 FPS, а не 30? И можете ли вы показать порядок своих параметров? «-r 30» должен быть после спецификации STDIN и перед выходным URL. – Brad