Динамическое изменение битрейта — различия между версиями

Материал из virt2real wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
Для раздела [[Управление цепочками GStreamer]] приведу самый актуальный для трансляции пример - динамическое (т.е. "на лету") изменение битрейта видеопотока.
 
Для раздела [[Управление цепочками GStreamer]] приведу самый актуальный для трансляции пример - динамическое (т.е. "на лету") изменение битрейта видеопотока.
 +
  
 
=Что должно быть запущено в системе=
 
=Что должно быть запущено в системе=
 +
 
dbus
 
dbus
  

Версия 13:54, 16 ноября 2014

Для раздела Управление цепочками GStreamer приведу самый актуальный для трансляции пример - динамическое (т.е. "на лету") изменение битрейта видеопотока.


Что должно быть запущено в системе

dbus

gstd


Общий принцип

Принцип такой: при старте Виртурилки создаются нужные цепочки для видео (их можно создавать неограниченное количество), для примера будем рассматривать только одну цепочку. При создании цепочки находятся "на паузе", трансляция не идёт. После создания цепочки, при появлении надобности, указываем клиента, на который будем слать видеопоток и стартуем цепочку - трансляция пошла.


Пример команд

Создаём цепочку без конкретного получателя. номер цепочки присваивается автоматически, начиная с 1

gst-client create "v4l2src always-copy=false chain-ipipe=true ! capsfilter caps=video/x-raw-yuv,format=(fourcc)NV12,width=1280,height=720,framerate=(fraction)30 ! dmaiaccel ! dmaienc_h264 copyOutput=false ddrbuf=false encodingpreset=2 ratecontrol=1 intraframeinterval=30 idrinterval=60 t8x8intra=true t8x8inter=true airrate=30 targetbitrate=1000000 bytestream=false headers=true ! rtph264pay mtu=1500 pt=96 ! multiudpsink clients=\"\" sync=false enable-last-buffer=false"


Задаём получателя для цепочки №1 (им будет хост 192.168.1.10, порт 3000)

gst-client -p 1 set multiudpsink0 clients string 192.168.1.10:3000

Запускаем эту цепочку

gst-client -p 1 play