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

Материал из virt2real wiki
Перейти к: навигация, поиск
Строка 3: Строка 3:
 
=Что должно быть запущено в системе=
 
=Что должно быть запущено в системе=
 
dbus
 
dbus
 +
 
gstd
 
gstd
 +
 +
 +
=Общий принцип=
  
 
Принцип такой: при старте Виртурилки создаются нужные цепочки для видео (их можно создавать неограниченное количество), для примера будем рассматривать только одну цепочку. При создании цепочки находятся "на паузе", трансляция не идёт. После создания цепочки, при появлении надобности, указываем клиента, на который будем слать видеопоток и стартуем цепочку - трансляция пошла.
 
Принцип такой: при старте Виртурилки создаются нужные цепочки для видео (их можно создавать неограниченное количество), для примера будем рассматривать только одну цепочку. При создании цепочки находятся "на паузе", трансляция не идёт. После создания цепочки, при появлении надобности, указываем клиента, на который будем слать видеопоток и стартуем цепочку - трансляция пошла.
  
 +
 +
=Пример команд=
  
 
Создаём цепочку без конкретного получателя. номер цепочки присваивается автоматически, начиная с 1
 
Создаём цепочку без конкретного получателя. номер цепочки присваивается автоматически, начиная с 1

Версия 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