GStreamer и его цепочки — различия между версиями

Материал из virt2real wiki
Перейти к: навигация, поиск
(Новая страница: «За трансляцию, запись и преобразование мультимедиа-информации в Virt2real отвечает приложен…»)
 
Строка 1: Строка 1:
 
За трансляцию, запись и преобразование мультимедиа-информации в Virt2real отвечает приложение Gstreamer - модульное приложение, позволяющее строить цепочки обработки аудио-видео-потоков. К сожалению, альтернативные варианты почти полностью вытеснены этим продуктом из-за его тесной интеграциии в продукты TI. Эта интеграция состоит в наличии интерфейса к закрытым кодекам h.264/aac и уже реализованного механизма минимального копирования данных при обработке потока, что значительно сказывается на производительности.
 
За трансляцию, запись и преобразование мультимедиа-информации в Virt2real отвечает приложение Gstreamer - модульное приложение, позволяющее строить цепочки обработки аудио-видео-потоков. К сожалению, альтернативные варианты почти полностью вытеснены этим продуктом из-за его тесной интеграциии в продукты TI. Эта интеграция состоит в наличии интерфейса к закрытым кодекам h.264/aac и уже реализованного механизма минимального копирования данных при обработке потока, что значительно сказывается на производительности.
  
= Включение обработки видео =
+
= Сборка SDK =
 
+
Для поддержки обработки видео в SDK в секции   
+
 
+
== Сборка SDK ==
+
 
После make defconfig выполнить ''Package Selection for the target -> Audio and video applications'' должны быть выбраны базовые модули gstreamer-a + gst-ti-dmai (собственно, поддержка кодеков). Если вы пользуетесь прошивкой по умолчанию - там уже все есть, беспокоится не надо. Особо отметим, что сборка DVSDK (а именно - DMAI) должна предшествовать сборке buildroot, потому что в при компиляции gst-ti-dmai потребуются готовые библиотеки.
 
После make defconfig выполнить ''Package Selection for the target -> Audio and video applications'' должны быть выбраны базовые модули gstreamer-a + gst-ti-dmai (собственно, поддержка кодеков). Если вы пользуетесь прошивкой по умолчанию - там уже все есть, беспокоится не надо. Особо отметим, что сборка DVSDK (а именно - DMAI) должна предшествовать сборке buildroot, потому что в при компиляции gst-ti-dmai потребуются готовые библиотеки.
  
 +
= Первые шаги =
 
== Трансляция (UDP) ==
 
== Трансляция (UDP) ==
  
Строка 54: Строка 51:
 
  rtph264depay ! queue ! avdec_h264 ! videoconvert ! videoscale ! osxvideosink sync=false \
 
  rtph264depay ! queue ! avdec_h264 ! videoconvert ! videoscale ! osxvideosink sync=false \
 
  show-preroll-frame=false
 
  show-preroll-frame=false
 +
 +
= Вторые шаги =
  
 
== Прием потока через TCP на плейер VLC ==
 
== Прием потока через TCP на плейер VLC ==

Версия 22:01, 13 октября 2014

За трансляцию, запись и преобразование мультимедиа-информации в Virt2real отвечает приложение Gstreamer - модульное приложение, позволяющее строить цепочки обработки аудио-видео-потоков. К сожалению, альтернативные варианты почти полностью вытеснены этим продуктом из-за его тесной интеграциии в продукты TI. Эта интеграция состоит в наличии интерфейса к закрытым кодекам h.264/aac и уже реализованного механизма минимального копирования данных при обработке потока, что значительно сказывается на производительности.

Содержание

Сборка SDK

После make defconfig выполнить Package Selection for the target -> Audio and video applications должны быть выбраны базовые модули gstreamer-a + gst-ti-dmai (собственно, поддержка кодеков). Если вы пользуетесь прошивкой по умолчанию - там уже все есть, беспокоится не надо. Особо отметим, что сборка DVSDK (а именно - DMAI) должна предшествовать сборке buildroot, потому что в при компиляции gst-ti-dmai потребуются готовые библиотеки.

Первые шаги

Трансляция (UDP)

Для трансляции на комп 192.168.1.10 запустить на virt2real

gst-launch v4l2src always-copy=false chain-ipipe=true ! video/x-raw-yuv,format='(fourcc)'NV12, \
width=640, height=480, framerate='(fraction)'30/1 ! dmaiaccel  ! dmaienc_h264 ddrbuf=true rcalgo=0 \
bytestream=true encodingpreset=2 ratecontrol=1 intraframeinterval=46 idrinterval=46 \
targetbitrate=1000000 ! rtph264pay ! udpsink port=3000 host=192.168.1.10 sync=false enable-last-buffer=false

Прием потока на Windows =

GStreamer для Windows можно скачать с оф. сайта http://gstreamer.freedesktop.org/data/pkg/windows/1.0.10/ В процессе установки нужно выбрать "Выборочную установку" и выбрать все компоненты gstreamer.

Для Windows x86 необходимо уставить пакеты:

Для Windows x64 необходимо уставить пакеты:

Прием потока на Linux

Должен быть установлен gstreamer

gst-launch udpsrc port=3000 ! "application/x-rtp, media=(string)video, clock-rate=(int)90000, \
encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQg\
KisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQFAeyA\,aO48sA\=\=\", \
payload=(int)96, ssrc=(guint)2498431066, clock-base=(guint)297251943, seqnum-base=(guint)34949" ! \
rtph264depay ! queue ! ffdec_h264 ! ffmpegcolorspace ! videoscale ! ximagesink sync=false \
show-preroll-frame=false

Прием потока на Mac OS X

Ставим необходимые пакеты

brew install gstreamer gst-libav gst-plugins-bad gst-plugins-base gst-plugins-good gst-plugins-ugly

Команда

gst-launch-1.0 udpsrc port=3000 ! "application/x-rtp, media=(string)video, clock-rate=(int)90000, \
encoding-name=(string)H264, sprop-parameter-sets=(string)\"Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQg\
KisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQFAeyA\,aO48sA\=\=\", \
payload=(int)96, ssrc=(guint)2498431066, clock-base=(guint)297251943, seqnum-base=(guint)34949" ! \
rtph264depay ! queue ! avdec_h264 ! videoconvert ! videoscale ! osxvideosink sync=false \
show-preroll-frame=false

Вторые шаги

Прием потока через TCP на плейер VLC

На виртурилке

gst-launch v4l2src always-copy=false chain-ipipe=true ! video/x-raw-yuv,format=\(fourcc\)NV12, \
width=640, height=480, framerate=\(fraction\)30/1 ! queue ! dmaienc_mjpeg ! multipartmux ! tcpserversink \
port=3000 sync=false

В VLC открываем url

tcp://адрес_virt2real:3000

Трансляция в HD

  • на стороне устройства:
HOST_ADDR=<Client's IP address>
PORT=3000
gst-launch -e v4l2src always-copy=FALSE input-src=composite chain-ipipe=true ! video/x-raw-yuv,format=\(fourcc\)NV12, width=1280, height=720, framerate=\(fraction\)23/1 ! queue ! dmaiaccel ! dmaienc_h264 encodingpreset=2 ratecontrol=2 intraframeinterval=23 idrinterval=46 targetbitrate=3000000 ! rtph264pay ! udpsink port=$PORT host=$HOST_ADDR sync=false enable-last-buffer=false &
  • на стороне клиента (версия Ubuntu)
PORT=3000
gst-launch -v udpsrc port=3000 ! 'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"Z2QAKK2EBUViuKxUdCAqKxXFYqOhAVFYrisVHQgKisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQCgC3I\,aO48sA\=\=", payload=(int)96, ssrc=(guint)1335677188, clock-base=(guint)2580247201, seqnum-base=(guint)5999' ! rtph264depay ! 'video/x-h264' ! ffdec_h264 ! 'video/x-raw-yuv, width=(int)1280, height=(int)720, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false' ! xvimagesink

Остальные примеры цепочек приведены в соответствующих разделах пункта Видео-Аудио.