Вверх ↑
Этот топик читают: Гость
Ответов: 166
Рейтинг: 5
#1: 2014-05-05 21:53:38 ЛС | профиль | цитата
http://wiki.virt2real.ru/wiki/Примеры_цепочек_GStreamer

Вот тут есть цепочки для передачи видео по сети. Так вот передающая сторона работает. И на принимающей стороне тоже принимает . запускается в консоли команда и в отдельном окне идет показ видео. Как мне поймать RTP (udp) видео поток и вставить в свою программу, чтобы он открывал видео не в своем окне а на той поверхности куда я укажу. Я так понимаю что нужно запускать в паралельный поток и уже там ловить, но как это сделать не хватает знаний.

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)"Z2QAM62EBUViuKxUdCAqKxXFYqOhAVFYrisVHQgKisVxWKjoQFRWK4rFR0ICorFcVio6ECSFITk8nyfk/k/J8nm5s00IEkKQnJ5Pk/J/J+T5PNzZprQFAeyA,aO48sA==",
payload=(int)96, ssrc=(guint)1501768479, clock-base=(guint)2009522317, seqnum-base=(guint)40332" !
rtph264depay !
avdec_h264 !
d3dvideosink sync=false enable-navigation-events=false show-preroll-frame=false max-lateness=10

Вот это команда в командной строке запускающая прием трансляции в Винде. Я даже сделал бат файл запускающий. Но вот никак не могу в программу управления тележкой вписать видео окошко.
Кто знаком с этой темой помогите плиззз...
карма: 1
Мастер сам устанавливает закон
0
Ответов: 1343
Рейтинг: 31
#2: 2014-05-05 22:54:12 ЛС | профиль | цитата
попробуй как вариант переназначить ParentHandle на свою форму либо панель ...
карма: 2

0
Ответов: 166
Рейтинг: 5
#3: 2014-05-06 00:25:20 ЛС | профиль | цитата
code_33555.txt

Вот пробую получить видео, но оно уходит в другое окно и не реагирует
карма: 1
Мастер сам устанавливает закон
0
Ответов: 1058
Рейтинг: 76
#4: 2014-05-06 14:35:37 ЛС | профиль | цитата
Noor писал(а):
Вот пробую получить видео

Не совсем правильный у Вас подход.
Для использования в наших проектах нужен посредник, некая обвязка над библиотекой. Примером служат компоненты из вкладки мультимедиа, использующие библиотеку bass.

Возможно гдето в дебрях мануалов есть некие параметры позволяющие указать куда выводить видео. Я же пробежался мельком и нашел только вывод в файл(параметр filesink).
В вашем случае, с использованием командной строки, можно указать сохранение в файл с последующим воспроизведением в своей проге.
В любом случае надо листать мануалы.

Кстати, схема у Вас... , советую подробнее ознакомиться с основами схемостроения
карма: 0

0
Ответов: 166
Рейтинг: 5
#5: 2014-05-07 17:00:36 ЛС | профиль | цитата
Кстати, схема у Вас... , советую подробнее ознакомиться с основами схемостроения


Это не схема, это всего лишь часть для высвечивания проблемы.


В файл не возможно ибо тогда задержка будет большая, пока запишет поток пока его прочитает.
Нужно сразу поток перенаправить в прогу. Все мануалы про то как вывести в самом GStreamer консольно.

Вот запускается видео в отдельном окне, как это стороннее окно вписать в главную форму


Возможно через библиотеку нужно как то, вот и спрашиваю тех кто сталкивался с этим видом проблем.
карма: 1
Мастер сам устанавливает закон
0
файлы: 1code_33555.txt [386B] [664]
Ответов: 1058
Рейтинг: 76
#6: 2014-05-07 19:47:36 ЛС | профиль | цитата
Noor писал(а):
это всего лишь часть для высвечивания проблемы.

Эта часть физически не может работать. Для чего-то, или может быть для кого-то предусмотрели типы данных.
Noor писал(а):
Возможно через библиотеку нужно как то

Можно и нужно, но я не знаю как. Тут уже спецов просить, чтоб глянули на досуге.
Возможно еще копнуть в сторону - "fdsink"(файловый дескриптор), лично не приходилось сталкиваться. Если правильно понимаю, то это что то типа перенаправления видео-потока.
карма: 0

0
Ответов: 578
Рейтинг: 14
#7: 2014-05-07 22:34:44 ЛС | профиль | цитата
когда то часть задачи решил так, попробуй может переделаешь code_33563.txt
карма: 0

1
файлы: 1code_33563.txt [4.2KB] [338]
Голосовали:Noor
Ответов: 166
Рейтинг: 5
#8: 2014-05-08 02:21:18 ЛС | профиль | цитата
GanjaKyp писал(а):
когда то часть задачи решил так, попробуй может переделаешь code_33563.txt


Ага, вот тут уже интересней, хорошая идея получать сразу из сервера и потом уже разбираться с расшифровкой. Посмотрю что на порту высвечивается, может станет яснее какие вопросы задавать.
------------ Дoбавленo в 02.21:
tom-it писал(а):
Возможно еще копнуть в сторону - "fdsink"(файловый дескриптор), лично не приходилось сталкиваться. Если правильно понимаю, то это что то типа перенаправления видео-потока.

Надо курить хелпы, возможно в этом и зарыта собака
карма: 1
Мастер сам устанавливает закон
0
Ответов: 758
Рейтинг: 112
#9: 2014-05-08 12:54:59 ЛС | профиль | цитата
Noor, попробуй пример отсюда SetParent
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#10: 2014-05-08 19:48:32 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2021-05-21 08:05:29
карма: 0

0
Ответов: 758
Рейтинг: 112
#11: 2014-05-08 22:32:09 ЛС | профиль | цитата
ppp-80-252-247-148.yu.wil писал(а):
Он вставляет прям целое окно, и то через раз.
На счет через раз - сам думай, а вот что целое окно . Кнопка тоже окно
code_33582.txt
карма: 1

1
файлы: 1code_33582.txt [1.7KB] [395]
Голосовали:Noor
Ответов: 166
Рейтинг: 5
#12: 2014-05-09 00:45:33 ЛС | профиль | цитата
Отлично. Именно то что нужно на данном этапе.
Благодарю

------------ Дoбавленo в 00.45:
Add(MainForm,6502353,70,105)
{
Width=681
Height=559
Point(Handle)
link(onDeactivate,1779052:doSleepMks,[])
link(onCreate,11038488:doExec,[(114,125)(114,202)])
}
Add(WinEnum,1218438,294,119)
{
link(onFindWindow,560410:doEvent1,[])
link(Caption,14145495:Text,[(300,86)(293,86)])
}
Add(Hub,560410,350,119)
{
OutCount=3
link(onEvent1,9783382:doSetParent,[])
link(onEvent2,1783027:doLeft,[])
link(onEvent3,1783027:doTop,[])
}
Add(PosWindow,1783027,392,126)
{
link(Handle,5775991:Var2,[])
}
Add(GetDataEx,5775991,392,102)
{
Angle=3
link(Data,1218438:Handle,[(334,107)(334,163)(300,163)])
}
Add(SetParent,9783382,441,119)
{
link(onSetParent,5287012:doNoBorder,[])
link(Handle,4338841:Var2,[])
link(NewParent,6502353:Handle,[(454,107)(265,107)(265,149)(76,149)])
}
Add(GetDataEx,4338841,441,102)
{
Angle=3
link(Data,5775991:Var3,[])
}
Add(InlineCode,5287012,490,119)
{
WorkPoints=#10:doNoBorder|
DataPoints=#6:Handle|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,Windows,Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|3: |9: public|23: Handle: THI_Event;|54: procedure doNoBorder(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|61:procedure THiAsmClass.doNoBorder(var Data:TData; index:word);|3:var|13: h: THandle;|20: lPrevStyle: int64;|5:begin|34: h := ReadInteger(Data,Handle,0);|44: lPrevStyle := GetWindowLong(h, GWL_STYLE);|158: SetWindowLong(h, GWL_STYLE, (lPrevStyle and (Not WS_THICKFRAME) and (Not WS_BORDER) and (Not WS_CAPTION) and (Not WS_MINIMIZEBOX) and (Not WS_MAXIMIZEBOX)))|4:end;|0:|4:end.|
link(Handle,4338841:Var3,[(496,107)])
}
Add(Sleep,1779052,210,112)
{
Delay=1000
link(onSleep,1218438:doFind,[(268,118)(268,132)])
}
Add(WinExec,11038488,154,196)
{
FileName="Calc.Exe"
}
Add(VisualStrings,14145495,287,21)
{
Lines=#11:Калькулятор|
Width=123
Height=32
}

Все работает всем спасибо большое.


карма: 1
Мастер сам устанавливает закон
0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)