Управляем чем угодно откуда угодно

Gstreamer рецепты

Обсуждение линуксовой части и софта на борту виртурилки

Gstreamer рецепты

Сообщение Vrevre » 14 дек 2013, 20:06

Думаю пригодиться новичкам, а может и профессионалы чего поправят и наставят на пусть истиный:
host=$HOST - в командах ниже заменить на адрес компьютера - на который передаете поток видео (например host=192.168.3.50 ).
Команды на компьютере выполнялись из под ubuntu linux 13

RTP UDP:

mpeg2
на виртурилке:
Код: Выделить всё
gst-launch v4l2src always-copy=FALSE !\
    video/x-raw-yuv,format=\(fourcc\)NV12,width=640,height=480 !\
    dmaiaccel !\
    dmaienc_mpeg2 encodingpreset=2 targetbitrate=3000000 ratecontrol=5 intraframeinterval=23 !\
    dmaiperf print-arm-load=true !\
    rtpmpvpay !\
    udpsink host=$HOST port=3000

на компьютере:
Код: Выделить всё
gst-launch  udpsrc port=3000   ! application/x-rtp,media=video,payload=32,clock-rate=90000,encoding-name=MP2V-ES  ! rtpmpvdepay  ! video/mpeg,width=640,height=480,framerate=25/1,mpegversion=2,systemstream=false  ! ffdec_mpeg2video ! xvimagesink


mpeg4
на виртурилке:
Код: Выделить всё
gst-launch v4l2src always-copy=FALSE !\
    video/x-raw-yuv,format=\(fourcc\)NV12,width=640,height=480 !\
    dmaiaccel !\
    dmaienc_mpeg4 encodingpreset=2 targetbitrate=4000000 ratecontrol=5 intraframeinterval=23 !\
    dmaiperf print-arm-load=true !\
    queue !\
    rtpmp4vpay !\
    udpsink host=$HOST port=3000

на компьютере:
Код: Выделить всё
gst-launch  udpsrc port=3000   ! application/x-rtp,media=video,payload=100,clock-rate=100000000,encoding-name=MP4V-ES  ! rtpmp4vdepay  ! video/mpeg,width=640,height=480,framerate=25/1,mpegversion=4,systemstream=false  ! ffdec_mpeg4 ! xvimagesin


jpeg
на виртурилке:
Код: Выделить всё
gst-launch v4l2src always-copy=FALSE !\
    video/x-raw-yuv,format=\(fourcc\)NV12,width=640,height=480 !\
    dmaiaccel !\
    dmaienc_jpeg qValue=25 !\
    dmaiperf print-arm-load=true !\
    queue !\
    rtpjpegpay !\
    udpsink host=$HOST port=3000

на компьютере:
Код: Выделить всё
gst-launch-0.10 udpsrc port=3000 caps=' application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)96, ssrc=(uint)1006979985, clock-base=(uint)312170047, seqnum-base=(uint)3174' ! rtpjpegdepay ! queue ! jpegdec ! queue ! xvimagesink


mjpeg
на виртурилке:
Код: Выделить всё
gst-launch  v4l2src chain-ipipe=true always-copy=FALSE !\
     'video/x-raw-yuv, width=640, height=480, framerate=(fraction)30/1' !\
     dmaiaccel !\
     dmaienc_mjpeg qValue=10 !\
     dmaiperf print-arm-load=true !\
     rtpjpegpay!\
     udpsink port=5000 host=$HOST

на компьютере:
Код: Выделить всё
gst-launch-0.10 udpsrc port=5000 caps=' application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)96, ssrc=(uint)1006979985, clock-base=(uint)312170047, seqnum-base=(uint)3174' ! rtpjpegdepay ! queue ! jpegdec ! queue max-size-bytes=0 ! xvimagesink double-buffer=false


h264
на виртурилке:
Код: Выделить всё
gst-launch v4l2src always-copy=false chain-ipipe=true ! \
    video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'15/1 ! \
    dmaiaccel ! \
    dmaienc_h264 ddrbuf=true encodingpreset=2 ratecontrol=4 maxbitrate=4000000 targetbitrate=2000000 ! \
    dmaiperf print-arm-load=true !\
    rtph264pay !  queue ! \
    udpsink port=3000 host=$HOST sync=false
на компьютере:

Код: Выделить всё
gst-launch 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+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
Последний раз редактировалось Vrevre 05 мар 2014, 22:54, всего редактировалось 3 раз(а).
Vrevre
 
Сообщения: 33
Зарегистрирован: 04 ноя 2013, 23:52

Re: Gstreamer рецепты

Сообщение phoenix367 » 14 дек 2013, 23:27

Сюда еще можно добавить как вывести на композитный видеовыход картинку:

Код: Выделить всё
gst-launch v4l2src always-copy=false chain-ipipe=true ! \
video/x-raw-yuv,format='(fourcc)'NV12,width=640,height=480 ! dmaiaccel ! \
 TIDmaiVideoSink videoStd=D1_PAL videoOutput=composite accelFrameCopy=FALSE sync=false


Чтобы это работало следует также в файле uEnv.txt, который находится в разделе boot исправить video=davincifb:osd1=0x0x8:osd0=720x480x16,1350K@0,0 на video=davincifb:osd1=0x0x8:osd0=0x0x16,1350K@0,0
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Gstreamer рецепты

Сообщение Gol » 29 дек 2013, 18:54

Еще и про звук чуток viewtopic.php?f=38&t=13410

Надо бы в вики добавть
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Gstreamer рецепты

Сообщение muzhig » 04 янв 2014, 13:23

Подскажите, люди добрые, как на принимающей по UDP стороне писать кодированное h264 видео в файл и одновременно отображать в окошке? :geek:
muzhig
 
Сообщения: 65
Зарегистрирован: 14 сен 2013, 19:47

Re: Gstreamer рецепты

Сообщение Vrevre » 08 янв 2014, 21:34

muzhig писал(а):Подскажите, люди добрые, как на принимающей по UDP стороне писать кодированное h264 видео в файл и одновременно отображать в окошке? :geek:

Думаю копать тебе нужно в сторону вот этого разветвителя: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-tee.html
Vrevre
 
Сообщения: 33
Зарегистрирован: 04 ноя 2013, 23:52

Re: Gstreamer рецепты

Сообщение Dr_Alex » 05 мар 2014, 17:24

Привет всем.

Мне кажется что в текущем обсуждении рецептов запуска gstreamer в синтаксисе скрипта запуска трансляции на виртурилке потока mpeg2 и mpeg4 присутствет ошибка. Одна из строк не закончена. Она обрывается словом intrafram. Подозреваю что строка обрезана и там должно быть intraframeinterval и возможно еще что-то.

И еще поправьте пожалуйста в вики в разделе инструкции -> трансляция видео по сети (адрес http://wiki.virt2real.ru/wiki/%D0%A2%D1 ... 1%82%D0%B8) вставка кода файла /etc/virt2real/camera.sh и /etc/virt2real/camera-usb.sh нет переноса текста (он уходит за предел окна).
Dr_Alex
 
Сообщения: 15
Зарегистрирован: 11 окт 2013, 14:27

Re: Gstreamer рецепты

Сообщение Vrevre » 05 мар 2014, 22:53

Dr_Alex писал(а):Мне кажется что в текущем обсуждении рецептов запуска gstreamer в синтаксисе скрипта запуска трансляции на виртурилке потока mpeg2 и mpeg4 присутствет ошибка. Одна из строк не закончена. Она обрывается словом intrafram. Подозреваю что строка обрезана и там должно быть intraframeinterval и возможно еще что-то.
Поправил, точно по этому параметру ничего не могу сказать (сам не особо разбираюсь), но видел гдето в примерах что его ставят 23. Пробовал его менять - разницы не заметил. Возможно совсем убрать можно.
Vrevre
 
Сообщения: 33
Зарегистрирован: 04 ноя 2013, 23:52

Re: Gstreamer рецепты

Сообщение Gol » 10 мар 2014, 05:26

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

Описание параметров вот тут
Ваш параметр "intraframeinterval" (вместе с idrinterval) задаёт ключевые кадры. По умолчанию равен 30. Для RTP передачи эти параметры не шибко критичны, но вот для флэша (RTMP) - без них нормально не получится.

По поводу обрезаных строк - у гстримера некоторые параметры довольно длинные и разбиение на строки не всегда спасает, браузер обрезает текстовое поле. Чтоб увидеть нормально полную цепочку - на каждой странице Вики вверху справа есть кнопочка "Просмотр". Нажав её - увидите полный текст страницы.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Gstreamer рецепты

Сообщение sanya555 » 19 мар 2014, 12:34

А можно ли все эти строки на VLC принимать. Если да, то каким образом, потому как я пробовал и ничего не выводилось.
Пробую запустить строку с вики
Код: Выделить всё
st-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

Так виртурилка ругается на отсутствие multipartmux.
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: Gstreamer рецепты

Сообщение Gol » 31 мар 2014, 19:23

sanya555 писал(а):А можно ли все эти строки на VLC принимать. Если да, то каким образом, потому как я пробовал и ничего не выводилось.
Пробую запустить строку с вики
Код: Выделить всё
st-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

Так виртурилка ругается на отсутствие multipartmux.


Первоисточник всех цепочек - админка, там всё провернное. А в вики постоянно редактируется когда что-то новое находим, не всегда актуально с прошивкой. Так что пробуй в админке, раздел "Видео" -> MJPEG сервер.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

След.

Вернуться в Софт на виртурилке - SDK, Linux, Github, программирование (C/C++ и др.)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron