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

Материал из virt2real wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
[[Управление цепочками GStreamer]]
+
Для раздела [[Управление цепочками 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
 +
gst-client -p 1 set multiudpsink0 clients string 192.168.1.10:3000
 +
 
 +
# запускаем цепочку
 +
gst-client -p 1 play
 +
 
  
  
 
[[Категория:Инструкции]]
 
[[Категория:Инструкции]]

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

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

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


  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"


  1. задаём получателя для цепочки №1
gst-client -p 1 set multiudpsink0 clients string 192.168.1.10:3000
  1. запускаем цепочку
gst-client -p 1 play