![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| JnK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Всем привет!
Возникла такая проблема, нужно снимать скрины с видео файлов (avi, mkv, mp4, mov) , мучаюсь уже больше недели, но проблему решать так и не могу, заключается она в том, что не все видео файлы хотят отдавать картинку, вместо нее выводится черное изображение, есть видео когда выводится всегда одна и таже картинка не важно какое время я брал, кто может подсказать как это можно исправить?
P.s. Другие программы типа: Image Grabber снимают нормально. Это сообщение отредактировал(а) JnK - 18.2.2010, 19:32 |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
Я не очень хорошо разбираюсь в DirectShow, я попробовал твой код на двух видео AVI и MPEG, работает хорошо.
Еще у интерфейса IMediaDet есть метод GetSampleGrabber, возвращающий интерфейс ISampleGrabber. А уже в нём есть метод GetCurrentBuffer, возвращающий текущий буфер и GetCurrentSample, возвращающий интерфейс IMediaSample. Может из них получится что-то вытащить? Я не пробовал. |
|||
|
||||
| RomanEEP |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 1 Всего: 8 |
Долго сам с этим мучался и родил такой код. Смысл в том что для воспроизведения видеофайла нужно создать граф, который создается из фильтров. Фильтр - это некий интерфейс который может кодировать, декодировать и воспроизводить видео/аудио. Граф - это правильно подобраный набор фильтров для воспроизведения определенного потока и соорудить его самому очень сложная задача. Но есть у DirectShow функция RenderFile которая создает граф для вывода в собственное небольшое окно, я это окно удаляю и на его место ставлю свой граббер
Это данные:
Открытие видеофайла и создание графа
Так получать декодированный кадр:
|
||||||
|
|||||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
RomanEEP, а не могли бы вы выложить пример целиком, с выводом кадра в TBitmap? Был бы очень благодарен
|
|||
|
||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 1 Всего: 8 |
Это часть большого проекта. Я отобрал кусок отвечающий за видео и для примера тут больше ничего не нужно - можешь смело скопировать код куда нибуть в батонадинклик и усё будет работать, только лишние переменные поудалять надо.
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
а что такое TImageData? и как потом из него достать Bitmap?
|
|||
|
||||
| JnK |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Не получается правильно собрать программу. :(
Добился только: Открываются файлы только Avi (идет звук, и видно загруженные кодеки), у других форматов - ничего не происходит. :( Добавлено @ 20:30
TImageData - Как я понял это от библиотеки OpenGL. На все что ругается компилятор комментируй, кроме
это заменяй на
или
Это сообщение отредактировал(а) JnK - 25.2.2010, 20:37 |
||||||||
|
|||||||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 1 Всего: 8 |
TImageData = array of Byte; В Bitmap можешь засунуть так:
|
|||
|
||||
| JnK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Вешаю код BitMap на 2 батон в итоге вылетает с ошибкой, чтения участка памяти, по эксперементировав, получил, что иногда выдает черный квадрат. Кроме Avi так и не смог заставить воспроизвести. Это сообщение отредактировал(а) JnK - 28.2.2010, 03:42 |
|||
|
||||
| RomanEEP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: 1 Всего: 8 |
|
|||
|
||||
| JnK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Спасибо за код.
Проблемка осталась с кодеками вроде, на некоторых файлах вылетает ошибка -2147220969, в частности на mkv (matroska). |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 6 Всего: 27 |
Вот так мужик (я про RomanEEP), а говорят не осталось героев... Спасибо
|
|||
|
||||
| zero7 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 3.11.2011 Репутация: нет Всего: нет |
имеется avi файл. при воспроизведении на vlc playre показывает copy protected video file.
при замене всех Akks на 00dc вначале проигрывания надпись остается, но появляется видео. однако видео какое-то несмотрибельное. что делать? могу прислать файл 11 метров. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |