Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Просмотр видео и MFC 
:(
    Опции темы
kurlyak
Дата 7.11.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Скажите пожалуйста, какие функции MFC загружают, инсталируют кодеки видео. Как это видео (например .avi) просмотреть в программе на Visual C++? То есть какое то окно же создать наверно надо, лично мне надо просматривать видео в диалоговой форме (CDialog). Какой елемент управления разместить на диалоге, что бы в нем смотреть мое видео и как к этому элементу управления подключить мой .avi файл?
PM MAIL   Вверх
Andrey44
Дата 7.11.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Если просто посмотреть несжатый AVI то CAnimateCtrl
А если фильмы avi посмотри здесь


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
zkv
Дата 7.11.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



и тут: Simple Media Player
PM MAIL   Вверх
kurlyak
Дата 7.11.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



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

Код

void CMyCAnimateCtrlDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    HRESULT m_objHRsult;
    IMediaControl* m_objMediaControl;
    IGraphBuilder* m_objGraphBuilder;
    IMediaEventEx* m_objMediaEvent;
    m_objHRsult=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)& m_objGraphBuilder);
    m_objHRsult=m_objGraphBuilder->QueryInterface(IID_IMediaControl,(void**)&m_objMediaControl);
    m_objHRsult=m_objGraphBuilder->QueryInterface(IID_IMediaEventEx,(void**)&m_objMediaEvent);
    m_objHRsult=m_objGraphBuilder->RenderFile("clock.avi",NULL);
    m_objMediaControl->Run();
    long *evCode;
    m_objMediaEvent->WaitForCompletion(INFINITE, evCode);
}


Добавлено через 8 минут и 34 секунды
Ага, нашел, надо написать #include <dshow.h>, но где его взять? У меня 6-й Visual C++ пишет что не может найти такой файл.
PM MAIL   Вверх
zkv
Дата 7.11.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



kurlyak, нужно скачать и установить DirectX SDK архив ~235 MB

Это сообщение отредактировал(а) zkv - 7.11.2007, 17:54
PM MAIL   Вверх
kurlyak
Дата 7.11.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Ага, понятно. Попробую.
PM MAIL   Вверх
kurlyak
Дата 8.11.2007, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Нашел я 9-й DirectX SDK, у меня Visual C++ 6. Компилятор пишет что 
Compiling...
myCAnimateCtrlDlg.cpp
c:\dx90sdk\include\strmif.h(1018) : error C2146: syntax error : missing ';' before identifier 'HSEMAPHORE'
c:\dx90sdk\include\strmif.h(1018) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

Может версия Visual C++ моего не подходит? У меня в проекте таких файлов нету, в которых пишеться ошибка.
PM MAIL   Вверх
zkv
Дата 8.11.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



kurlyak, трудно что либо сказать по приведенным тобою сведениям.
Попробуй подключить хедеры директ икса в конце файла stdafx.h (те после всех остальных инклудов) твоего проекта.
Цитата(kurlyak @  8.11.2007,  18:04 Найти цитируемый пост)
У меня в проекте таких файлов нету, в которых пишеться ошибка. 

по сообщению компилятора видно, что ошибка в директиксовских инклудах.
PM MAIL   Вверх
kurlyak
Дата 8.11.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Получилось, только теперь ошибка в программе, я не знаю как ее исправить:
Compiling...
myCAnimateCtrlDlg.cpp
C:\My\MFC\myCAnimateCtrl\myCAnimateCtrlDlg.cpp(107) : error C2440: 'initializing' : cannot convert from 'char [10]' to 'const unsigned short *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

myCAnimateCtrl.exe - 1 error(s), 0 warning(s)

Ошибка для строки:
Код

m_objHRsult=m_objGraphBuilder->RenderFile("clock.avi",NULL);

PM MAIL   Вверх
zkv
Дата 8.11.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Код

RenderFile(L"clock.avi",NULL);

?
PM MAIL   Вверх
kurlyak
Дата 8.11.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



О, получилось, только теперь компллер что то выдает. Может еще библиотеки надо в проект подключать? Какие если да.

Compiling...
myCAnimateCtrlDlg.cpp
C:\My\MFC\myCAnimateCtrl\myCAnimateCtrlDlg.cpp(110) : warning C4700: local variable 'evCode' used without having been initialized
Linking...
myCAnimateCtrlDlg.obj : error LNK2001: unresolved external symbol _IID_IMediaEventEx
myCAnimateCtrlDlg.obj : error LNK2001: unresolved external symbol _IID_IMediaControl
myCAnimateCtrlDlg.obj : error LNK2001: unresolved external symbol _CLSID_FilterGraph
myCAnimateCtrlDlg.obj : error LNK2001: unresolved external symbol _IID_IGraphBuilder
Debug/myCAnimateCtrl.exe : fatal error LNK1120: 4 unresolved externals
Error executing link.exe.

myCAnimateCtrl.exe - 5 error(s), 1 warning(s)

Добавлено через 6 минут и 24 секунды
Нашел я что линковать: strmiids.lib. Компилируеться и линкуеться без ошибок, тольк теперь во время запуска проги пишет окно информации, что у меня :NMSQL.DLL нет в системе и надо переинсталить визуальный С++. У меня не полная версия визуального С++ на компакт- диске, что именно нужно добавить в него, что бы заработало?

Добавлено через 11 минут и 14 секунд
Всмысле я не полностью весь визульный Си ставил себе не винт, какой компонет добавить?
PM MAIL   Вверх
zkv
Дата 8.11.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



rtfm
Цитата(Setting Up the Build Environment)

This article describes how to build Microsoft® DirectShow® applications. You can build a project from the command line, or from within the Microsoft® Visual Studio® environment that comes with Microsoft® Visual C++®:

Header Files

All DirectShow applications use the header file shown in the following table.

Header File Required For 
Dshow.h All DirectShow applications. 


Some DirectShow interfaces require additional header files. These requirements are noted in the interface reference.

Library Files

DirectShow uses the library files shown in the following table.

Library File Description 
Strmiids.lib Exports class identifiers (CLSIDs) and interface identifiers (IIDs). All DirectShow applications require this library. 
Quartz.lib Exports the AMGetErrorText function. If you do not call this function, this library is not required. 


In your build environment, place the DirectX SDK Include and Lib directories first in the Visual Studio search path. This ensures that you are using the most recent versions of these files.




Добавлено через 1 минуту и 23 секунды
Цитата(kurlyak @  8.11.2007,  18:53 Найти цитируемый пост)
визуальный С++

 smile 
Цитата(kurlyak @  8.11.2007,  18:53 Найти цитируемый пост)
У меня не полная версия визуального С++ на компакт- диске, что именно нужно добавить в него, что бы заработало? 

вот тут не знаю чем тебе помочь.
PM MAIL   Вверх
kurlyak
Дата 9.11.2007, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Поставил Визуальную студию 2005. Все компилируеться без ошибок, линк тоже без ошибок, но нажимаю на кнопку и никакого действия не происходит. Пример взял из мсдн-а. Не хочет проигрывать не .avi, не .mpg, не wmv. В чем может быть проблема?

Код

void CDXVideoDlg::OnBnClickedButton1()
{
    // TODO: Add your control notification handler code here
    
    CoInitialize(NULL);
    HRESULT m_objHRsult;
    IMediaControl* m_objMediaControl;
    IGraphBuilder* m_objGraphBuilder;
    IMediaEventEx* m_objMediaEvent;
    m_objHRsult=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)& m_objGraphBuilder);
    m_objHRsult=m_objGraphBuilder->QueryInterface(IID_IMediaControl,(void**)&m_objMediaControl);
    m_objHRsult=m_objGraphBuilder->QueryInterface(IID_IMediaEventEx,(void**)&m_objMediaEvent);
    m_objHRsult=m_objGraphBuilder->RenderFile(LPCWSTR("C:\\test.mpg"),NULL);
    m_objMediaControl->Run();
    long evCode;
    m_objMediaEvent->WaitForCompletion(INFINITE, &evCode);
    m_objMediaControl->Release();
    m_objMediaEvent->Release();
    m_objGraphBuilder->Release();
    CoUninitialize();
}

PM MAIL   Вверх
kurlyak
Дата 9.11.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



Ага все исправил. Добавил панель открытия файлов. Но...

Compiling...
DX VideoDlg.cpp
c:\my\mfc\dx video\dx video\dx videodlg.cpp(132) : error C2664: 'wcsncpy' : cannot convert parameter 2 from 'LPSTR' to 'const wchar_t *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\My\MFC\DX Video\DX Video\Debug\BuildLog.htm"
DX Video - 1 error(s), 0 warning(s)

Часть кода такая:

Код

         CFileDialog dlg(TRUE);
         .........
         WCHAR wFile[MAX_PATH];
    wcsncpy(wFile, dlg.m_ofn.lpstrFileTitle, NUMELMS(wFile)-1);
         wFile[MAX_PATH-1] = 0;
    m_objGraphBuilder->RenderFile(wFile,NULL);

PM MAIL   Вверх
Andrey44
Дата 9.11.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



Код

dlg.GetFileName( ).GetBuffer()


Добавлено через 4 минуты и 54 секунды
И вообще, делай
Код

m_objGraphBuilder->RenderFile(dlg.GetFileName( ).GetBuffer(),NULL);


Это сообщение отредактировал(а) Andrey44 - 9.11.2007, 18:13


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
kurlyak
Дата 10.11.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 7.11.2007

Репутация: 1
Всего: 3



А я вот сделал так:
Код

         USES_CONVERSION;
    WCHAR wFile[MAX_PATH];
    wcsncpy_s(wFile, T2W(dlg.m_ofn.lpstrFileTitle), NUMELMS(wFile)-1);
         wFile[MAX_PATH-1] = 0;
    m_objGraphBuilder->RenderFile(wFile,NULL);

только в MSDN ничего не говориться о USES_CONVERSION и T2W. Что это такое?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.