реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Потоковое видео (RTSP) в своем приложении
Bakradze
сообщение Oct 1 2015, 07:52
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 432
Регистрация: 17-12-09
Пользователь №: 54 306



Нужно организовать вывод видеопотока через собственное приложение. Для этого до сих пор собирался использовать VLC plugin. Подскажите (а лучше подкиньте пример) как подключать vlc плагин в visual studio
Go to the top of the page
 
+Quote Post
Bakradze
сообщение Oct 1 2015, 12:49
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 432
Регистрация: 17-12-09
Пользователь №: 54 306



ОК, что можно сказать об GStreamer чтоб на его основе сделать свой плеер?
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 1 2015, 13:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Если у вас Visual Studio, то видимо Windows. Под нее гораздо проще делать вывод любой мультимедии на DirectShow. Получается буквально в десяток строк.
Код
#include <windows.h>
#include <stdio.h>

#include <atlbase.h>

#include <DShow.h>

#include <INITGUID.H>
DEFINE_GUID(CLSID_FilterGraph,
0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70);

void chk_(HRESULT hr, const char* str)
{
if (hr<0)
  {
   printf("Error %08X in %s\n",hr,str);
   exit(1);
  }
}

#define HR(v) chk_(v,#v)
#define mERROR(msg) chk_(-1,msg)

void run(char* nm)
{
USES_CONVERSION;

CComPtr<IGraphBuilder> graph_builder;
HR(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                         __uuidof(IGraphBuilder), (void **)&graph_builder));
HR(graph_builder->RenderFile(A2W(nm),NULL));

CComQIPtr<IMediaControl> graph_ctrl(graph_builder);
if (!graph_ctrl) mERROR("Can't get IMediaControl interface from Graph");
HR(graph_ctrl->Run());

getchar();
}

int main(int argc, char** argv)
{
if (argc<1) mERROR("Expected file name");
CoInitialize(0);
run(argv[1]);
CoUninitialize();
return 0;
}
Go to the top of the page
 
+Quote Post
Bakradze
сообщение Oct 1 2015, 13:48
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 432
Регистрация: 17-12-09
Пользователь №: 54 306



Цитата(XVR @ Oct 1 2015, 16:38) *
Если у вас Visual Studio, то видимо Windows. Под нее гораздо проще делать вывод любой мультимедии на DirectShow. Получается буквально в десяток строк.
Код
#include <windows.h>
#include <stdio.h>

#include <atlbase.h>

#include <DShow.h>

#include <INITGUID.H>
DEFINE_GUID(CLSID_FilterGraph,
0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70);

void chk_(HRESULT hr, const char* str)
{
if (hr<0)
  {
   printf("Error %08X in %s\n",hr,str);
   exit(1);
  }
}

#define HR(v) chk_(v,#v)
#define mERROR(msg) chk_(-1,msg)

void run(char* nm)
{
USES_CONVERSION;

CComPtr<IGraphBuilder> graph_builder;
HR(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                         __uuidof(IGraphBuilder), (void **)&graph_builder));
HR(graph_builder->RenderFile(A2W(nm),NULL));

CComQIPtr<IMediaControl> graph_ctrl(graph_builder);
if (!graph_ctrl) mERROR("Can't get IMediaControl interface from Graph");
HR(graph_ctrl->Run());

getchar();
}

int main(int argc, char** argv)
{
if (argc<1) mERROR("Expected file name");
CoInitialize(0);
run(argv[1]);
CoUninitialize();
return 0;
}


Благодарю...А есть примерчик как rtsp с камеры воспроизвести через директшов?
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 1 2015, 14:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



В качестве имени файла задайте ваш rtsp url (rtsp://... )
Но сначала попробуйте это вбить в Windows Media Player (он по сути обвертка над Direct Show) - если заработает, то можете внедрять к себе sm.gif
Go to the top of the page
 
+Quote Post
Bakradze
сообщение Oct 1 2015, 15:34
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 432
Регистрация: 17-12-09
Пользователь №: 54 306



Спасибо. А теперь еще одиндилетантский вопрос - а как заставить directshow выводить видео в заданной области окошка собственного приложения?
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 2 2015, 08:55
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Кусок кода внедряющего DS окно в другое окно (top_window) -
Код
   CComQIPtr<IVideoWindow> graph_vw(graph_builder);  
   if (!graph_vw) mERROR("Can't get IVideoWindow interface to switch to FullScreen");
  
   HR(graph_vw->HideCursor(OATRUE));
  
   HR(graph_vw->put_Owner((OAHWND)top_window));
   HR(graph_vw->put_WindowStyle(WS_CHILD | WS_CLIPSIBLINGS));
   RECT grc;
   GetClientRect(top_window, &grc);
   HR(graph_vw->SetWindowPosition(0, 0, grc.right, grc.bottom));
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 16:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016