Я пытаюсь создать надежный поток с моих серверов Icecast / Shoutcast на Youtube в прямом эфире.Команда, которую я использую:
ffmpeg -v verbose -framerate 30 -loop 1 -i /var/image.jpg -re -i http://127.0.0.1:4700/radio -c:v libx264 -preset ultrafast -b:v 2250k -maxrate 6000k -bufsize 6000k -c:a copy -ab 128k -s 1920x1080 -framerate 30 -g 60 -keyint_min 60 -f flv rtmp://a.rtmp.youtube.com/live2/xxx
Как вы видите, я использую рекомендованный битрейт для Youtube, вставляйте ключевые кадры каждые 2 секунды и потоковую передачу со скоростью 30 кадров в секунду.Поток работает, но после запуска в течение некоторого времени происходят две вещи:
- FFMPEG
speed
падает с 1x до чего-то вроде 0.998x
- Youtube начинает жаловаться, что скорость видео потокаработает медленно, качество оценивается как плохое, и иногда видео начинает буферизоваться.
Почему это происходит?Загрузка процессора нормальная, связь в порядке (поток работает на выделенном сервере 1Gg / s).
Так как в моем примере выше я передаю одно изображение в виде логотипа потока, который я также пытался сгенерироватькороткое 30-секундное видео с этим изображением и трансляция этого видео вместо изображения, но это также не помогло.
Команда, которую я использовал для преобразования:
ffmpeg -framerate 30 -loop 1 -i /var/image.jpg -c:v libx264 -preset ultrafast -tune stillimage -b:v 2250k -minrate 2250k -maxrate 6000k -bufsize 6000k -framerate 30 -g 60 -keyint_min 60 -t 30 out4.mp4
И трансляция с
ffmpeg -stream_loop -1 -i out4.mp4 -re -i http://127.0.0.1:4700/radio -c:v copy -c:a copy -framerate 30 -g 60 -keyint_min 60 -f flv rtmp://a.rtmp.youtube.com/live2/xxx
ffmpeg версия 4.1.1