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

Материал из virt2real wiki
Перейти к: навигация, поиск
Строка 4: Строка 4:
  
  
# создаём цепочку без конкретного получателя. номер цепочки присваивается автоматически, начиная с 1
+
Создаём цепочку без конкретного получателя. номер цепочки присваивается автоматически, начиная с 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"
 
  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
+
Задаём получателя для цепочки №1 (им будет хост 192.168.1.10, порт 3000)
 
  gst-client -p 1 set multiudpsink0 clients string 192.168.1.10:3000
 
  gst-client -p 1 set multiudpsink0 clients string 192.168.1.10:3000
  
# запускаем цепочку
+
Запускаем эту цепочку
 
  gst-client -p 1 play
 
  gst-client -p 1 play
  

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

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

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


Создаём цепочку без конкретного получателя. номер цепочки присваивается автоматически, начиная с 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