Задать вопрос
@SmaiL

Как добиться CBR h264 транскодинга в ffmpeg?

Доброго времени суток!
В чем суть вопроса: есть 1080p поток с битрейтом 5Мбит, принимается в rtmp. Есть необходимость сделать из него CBR (строго обязательно) multicast поток h264 те же 5Мбит.
Искал в интернете варианты с перекодированием, нашел с mpeg2. Чтобы избежать потери качества, адаптировал вариант до 24Мегабит, но все-таки это не то, что нужно (нужен h264).
ffmpeg -re -i [входящий rtmp] -vcodec mpeg2video -s 1920x1080 -r 25 -flags cgop+ilme -sc_threshold 1000000000 -b:v 24M -minrate:v 24M -maxrate:v 24M -bufsize:v 16.8M -acodec mp2 -ac 2 -b:a 192k -f mpegts udp://@232.0.0.2:1222?pkt_size=1316

Может есть какой-то вариант вообще без перекодирования, а только с использованием буфера? Если так нельзя, то как провернуть то же самое с h264?
  • Вопрос задан
  • 1456 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@monah_tuk
Если входной поток CBR и h264, то без перекодировки:
ffmpeg -i rtmp://host/app/stream -c:v copy [опционально, для audio: -c:a copy] -f mpegts udp://@232.0.0.2:1222?pkt_size=1316


Если входной поток не CBR, то без перекодирвоки низя. Тут как-то так:
ffmpeg -re -i [входящий rtmp] -vcodec h264 -s 1920x1080 -r 25 -b:v 5M -minrate:v 5M -maxrate:v 5M -bufsize:v 16.8M -acodec aac -ac 2 -b:a 192k -f mpegts udp://@232.0.0.2:1222?pkt_size=1316


учти, что b:v влияет на видео, а общий битрейт потока будете b:v+b:a+оверхед на контейнер. С опциями H264 нужно будет эксперементировать для получения нужного результата. Вот ссылок
* htrd.su/wiki/zhurnal/2014/09/24/x264_low_latency
* web.archive.org/web/20150203203142/http://mewiki.p... (www.chaneru.com/Roku/HLS/X264_Settings.htm)
* trac.ffmpeg.org/wiki/Encode/H.264
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы