2016-12-18 3 views
-1

Я пытаюсь транслировать изображение в Fb видео в реальном времени с помощью этой команды:FFMPEG Streaming обновленный образ в петле на FB Live Video

ffmpeg -loop 1 -re -i "input.jpg" -pix_fmt yuv420p -profile:v baseline -s 720x480 -bufsize 6000k -vb 400k -maxrate 1500k -deinterlace -t 60 -vcodec libx264 -preset veryfast -g 30 -r 30 -f flv "rtmp_link"

Эта команда отлично работает для одного входного файла. Но проблема в том, что я хочу, чтобы ffmpeg передавал последнюю и обновленную версию файла «input.jpg», потому что мое приложение обновляет этот «input.jpg» через каждые 2-3 секунды, но изображение, которое транслируется, является более старой версией, а не обновленный.

Если я попытаюсь перезапустить этот контур, то потоковая остановка остановится примерно на 1 минуту. 4-5 секунд, что достаточно для видео в реальном времени FB, чтобы считать, что потоковая передача остановлена, а затем заканчивается живое видео.

Итак, можно ли использовать последнюю доступную версию входного файла для потоковой передачи в этом цикле? Я мало что знаю о FFMPEG, и я попытался найти эту проблему, но все напрасно.

+0

Попробуйте ответить [здесь] (http://stackoverflow.com/q/41132358/5726027). – Mulvya

+0

@ Mulvya это не сработало для меня. –

ответ

1

Я, наконец, выяснил решение для этого. Когда я напрямую переписывал файл «input.jpg» с помощью моего приложения rails, этот процесс занимал несколько миллисекунд, но за это время ffmpeg транслировал этот файл, который был неполным за несколько миллисекунд.

Таким образом, решение этой проблемы является то, что первым написать обновленный образ на временный файл, как «input.tmp.img», а затем переместить этот файл в исходный файл, используя скрипт или с помощью терминала, как mv input.tmp.img input.jpg Так как перемещение процесс вряд ли займет какое-то время, это решило проблему для меня.

+0

Возможно, самое простое решение. 'mv' будет выполнять свою работу * atomically *: другие процессы будут видеть только старый или новый файл, а не частичный файл. – LordNeckbeard