![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Incinerated |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
Вот есть небольшой код, который сам написал, разбирался, но вот в конце что-то не получается. Хочу отобразить на Image первый кадр видео, но функция BitBlt возвращает ошибку. Может подскажите в чем моя ошибка? (проверки на ошибки вырезаны).
Это сообщение отредактировал(а) Incinerated - 19.3.2008, 10:37 |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Incinerated, а где у тебя выделяется память под getframe
или хотя бы где у тебя запись данных в эту переменную? -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Incinerated |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
Насколько я знаю, эта функция AVIStreamGetFrame() возвращает указатель на декодированный кадр, формата DIB. А как его отобразить, зная только указатель я не знаю... |
|||
|
||||
korian |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
во первых надо знать BITMAPINFOHEADER
и кстати не путайте битмап с девайс контекстом ::BitBlt(Image1->Picture->Bitmap->Handle - это не правильно |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Incinerated, точно, я когда-то делал покадровое видео.
Но исходники дома. Если найду, и если тебе еще надо то принесу. -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Incinerated |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
если можно, очень нужно |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Хорошо, завтра принесу.
Написал-бы раньше, уже принес-бы. ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Incinerated, напиши мне в личку свое мыло - скину исходники.
-------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Incinerated |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
проблема с 6 параметром, он просит указатель на BITMAPINFO, а не на BITMAPINFOHEADER. BITMAPINFOHEADER это одна из двух частей структуры BITMAPINFO, а где брать вторую часть для этой структуры я не знаю, там нужен вроде массив RGB значений, а как его получить я не в курсе... |
||||
|
|||||
korian |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 4 Всего: 17 |
на самом деле AVIStreamGetFrameOpen тоже требует BITMAPINFO. структура BITMAPINFOHEADER не постоянная, как раз на палитру (bmiColors для BITMAPINFO). BITMAPINFO существует для удобства. короче там надо разбираться... если не вдаваться в подробности, то для 32 битного формата выглядеть это будет так:
Это сообщение отредактировал(а) korian - 25.3.2008, 15:55 |
||||
|
|||||
Incinerated |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
в принципе проиграть получилось, но только без звука...
а можно ли как то проиграть потоковое аудио... получается это следующим образом:
писал по памяти, т.к. с собой кода нету... но вроде так... Т.е. в результате есть аудио-поток, а какими средставми его проиграть, даже не представляю... ну точнее теоертически можно записать в файл, и потом проигрывать из файла, но не думаю что это лучший вариант. |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Да, я и сам бился долго над проигрыванием звука
![]() Но никак не смог добиться синхронизации видео со звуком. Плюнул на все и стал использовать DirectShow ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Incinerated |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
твой пример, что ты мне скинул, там звук не проигрывается, по крайней мере в тех файлах которых я пытался открыть(... МНе бы пускай не синхронно проиграть этот поток... |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 8 Всего: 26 |
Там просто закомментированы места где из потока достается звук.
Я уже точно не помню , но там нада доставать кусок данных из потока заполнять WAVEHEDER отправлять на воспроизведение кусками , следить за тем, когда кусок звука заканчивается ........ и так далее в цикле. Короче лучше с этим не заморачиваться ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
Incinerated |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 18.5.2006 Где: Беларусь, Новопол оцк Репутация: нет Всего: нет |
прийдется заморачиваться, у меня выхода нет. Есть функция waveOutPrepareHeader(), вроде так называется, у нее первый параметр - указатель на аудио-устройство, которое предается из waveOutOpen(), второй параметр структурка, и третий размер структуры... Вот проблема заключается в самой структуре, после выпролнения функции waveOutPrepareHeader(), она вовзращает ошибку "Invalid parametr", я так подозреваю что проблема в структуре, т.к. waveOutOpen() сработала без ошибок. Там в структурке есть первый параметр - указатель на аудио-поток, но тип там (char *), и как мне преобразовать PAVISTREAM в char* я даже не знаю... А так если бы получилось, то думаю играло бы...Ну дальше там вызываются другие функции чтоб проиграть... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |