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

Звук + Видео

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

Звук + Видео

Сообщение Serg » 14 июл 2015, 21:02

Как объединить звук и видео? Вот передача видео с виртурилки
Код: Выделить всё
gst-launch v4l2src always-copy=false chain-ipipe=true ! \
    video/x-raw-yuv,format='(fourcc)'NV12, width=1280, height=720, framerate='(fraction)'30/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=192.168.0.17 sync=false

вот передача звука
Код: Выделить всё
gst-launch alsasrc buffer-time=200000 latency-time=200000 slave-method=0 ! "audio/x-raw-int, channels=1, rate=16000, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16" ! dmaienc_aac copyOutput=false outputBufferSize=20000  bitrate=16000 downmix=false invquant=1 tns=true outputformat=1 ! rtpmp4apay ! udpsink port=3000 host=192.168.0.17


и то и другое работает. Как передать это "в одном флаконе"? Или можно отдельно передавать? Если разные порты написать конечно.
Последний раз редактировалось Serg 15 июл 2015, 14:49, всего редактировалось 1 раз.
Serg
 
Сообщения: 121
Зарегистрирован: 07 сен 2013, 23:55

Re: Звук + Видео

Сообщение realizator » 14 июл 2015, 23:02

Serg писал(а):Как объединить звук и видео? Вот передача видео с виртурилки
Код: Выделить всё
gst-launch v4l2src always-copy=false chain-ipipe=true ! \
    video/x-raw-yuv,format='(fourcc)'NV12, width=1280, height=640, framerate='(fraction)'30/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=192.168.0.17 sync=false

вот передача звука
Код: Выделить всё
gst-launch alsasrc buffer-time=200000 latency-time=200000 slave-method=0 ! "audio/x-raw-int, channels=1, rate=16000, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16" ! dmaienc_aac copyOutput=false outputBufferSize=20000  bitrate=16000 downmix=false invquant=1 tns=true outputformat=1 ! rtpmp4apay ! udpsink port=3000 host=192.168.0.17


и то и другое работает. Как передать это "в одном флаконе"? Или можно отдельно передавать? Если разные порты написать конечно.

Тут уже проскакивал не раз рецепт, причем недавно.
Вы каким-то специальным способом видео и звук принимать планируете? Просто у нас поддержка звука реализована "из коробки" в последней прошивке в rcboard и десктопном приложении плейер.
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: Звук + Видео

Сообщение Serg » 15 июл 2015, 14:17

За последние три дня перепробовал все готовые рецепты с форума, найденные по слову "звук". Мне надо сделать продвинутый видеозвонок. Для начала трансляция внутри сети (вайфай, эзернет) на андроид плюс желательно записывать в файл на карточке. Видео передается по запросу (нажали кнопку звонка) или по команде с планшета (хочу посмотреть что там у дверей). Ну и пара плюшек в виде зажгли свет, открыли калиту, но это делается совсем просто, опыт есть.

Rcboard немного не подходит как мне кажется в силу специфики - у меня ничего не движется, никуда не едет. Ну и хотелось бы свою программу иметь, чтобы потом дописывать все что надо без проблем, но я еще не пробовал софт под виртурилку с gstreamer-ом писать.
Serg
 
Сообщения: 121
Зарегистрирован: 07 сен 2013, 23:55

Re: Звук + Видео

Сообщение realizator » 15 июл 2015, 20:37

Serg писал(а):За последние три дня перепробовал все готовые рецепты с форума, найденные по слову "звук". Мне надо сделать продвинутый видеозвонок. Для начала трансляция внутри сети (вайфай, эзернет) на андроид плюс желательно записывать в файл на карточке. Видео передается по запросу (нажали кнопку звонка) или по команде с планшета (хочу посмотреть что там у дверей). Ну и пара плюшек в виде зажгли свет, открыли калиту, но это делается совсем просто, опыт есть.

Rcboard немного не подходит как мне кажется в силу специфики - у меня ничего не движется, никуда не едет. Ну и хотелось бы свою программу иметь, чтобы потом дописывать все что надо без проблем, но я еще не пробовал софт под виртурилку с gstreamer-ом писать.

Окей, я уточню у Сереги Gol'а - он может выгрызет кусок кода параметризованный, где можно понять как мы звук запускаем.
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: Звук + Видео

Сообщение Serg » 16 июл 2015, 01:06

Был бы премного благодарен. В двоичном коде rcboard видны некоторые пайпы, но к чему это хакерство, когда можно по человечески спросить :)
Serg
 
Сообщения: 121
Зарегистрирован: 07 сен 2013, 23:55

Re: Звук + Видео

Сообщение Gol » 17 июл 2015, 07:05

Serg писал(а):Как объединить звук и видео? ... и то и другое работает. Как передать это "в одном флаконе"? Или можно отдельно передавать? Если разные порты написать конечно.

А я их и не объединял, именно независимыми пайпами работают (мне это требовалось для независимого включения/выключения звука и видео). Объединять есть смысл если требуется запись видеофайла со звуком или для трансляции с синхронизацией видео и звука. Но я это не использую ибо для рцборды главное чтоб видео шустро шло, а уж звук вторичен, пусть отстаёт.

Так что отдельные пайпы правильные, а вот насчёт использования с синхронизацией - эт надо тему копать, rtpbin вроде для этого дела используется http://www.freedesktop.org/software/gst ... tpbin.html

У меня вообще вот примерно таким макаром, без использования RTP:

передача
Код: Выделить всё
gst-launch -e v4l2src always-copy=false chain-ipipe=true ! \
   capsfilter caps=video/x-raw-yuv,format='(fourcc)'NV12,width=1280,height=720,framerate='(fraction)'30/1 ! \
   dmaiaccel qos=false ! dmaienc_h264 copyOutput=false ddrbuf=false encodingpreset=2 ratecontrol=1 intraframeinterval=30 idrinterval=0 targetbitrate=$BITRATE bytestream=true headers=false aud=false ! \
   multiudpsink clients=$HOST:$VPORT sync=false enable-last-buffer=false alsasrc buffer-time=200000 slave-method=0 ! audio/x-raw-int,channels=1,rate=16000,endianness=(int)1234,signed=(boolean)true,width=(int)16,depth=(int)16 ! dmaienc_aac copyOutput=false outputBufferSize=3000 bitrate=48000 tns=true outputformat=0 ! rtpmp4apay ! multiudpsink sync=false async=false clients=$HOST:$APORT



приём
Код: Выделить всё
gst-launch udpsrc port={vport} buffer-size=120000 ! capsfilter caps="video/x-h264,framerate=(fraction)30/1,width=1280,height=720" ! h264parse ! ffdec_h264 ! ffmpegcolorspace ! d3dvideosink sync=false show-preroll-frame=false udpsrc do-timestamp=true timeout=1000000 port={aport} caps="application/x-rtp, media=(string)audio, clock-rate=(int)16000, encoding-name=(string)MP4A-LATM, cpresent=(string)0, config=(string)40002810, payload=(int)96, ssrc=(uint)1671202142, clock-base=(uint)1287116010, seqnum-base=(uint)18619" ! rtpmp4adepay ! ffdec_aac ! sdlaudiosink sync=false async=false buffer-time=20000 latency-time=20000 provide-clock=false slave-method=0
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: Звук + Видео

Сообщение Serg » 17 июл 2015, 13:35

Спасибо за ответ, попробую пайпы. Я передавал звук и видео разными gstreamerами - просто запускал два экземпляра. На ноуте тоже запускал пару - один на звук, другой на видео. Какой-то рассинхронизации не заметил, просто почему-то решил, что не кошерно в два потока передавать.
Serg
 
Сообщения: 121
Зарегистрирован: 07 сен 2013, 23:55


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

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

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

cron