Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

Странная проблема с DsPack   Найти похожие ветки 

 
misha_gr   (2006-01-19 17:28) [0]

При разработке утилиты (нечто вроде проигрывателя фильмов с некоторыми дополнительными возможностями) столкнулся с проблемой. Используются компоненты TFilterGraph и TVideoWindow. У меня видео проигрывается нормально. У пользователя открывается дополнительное окно с заголовком ActiveMovie Window, в котором видео и проигрывается. Не со всеми типами фалов, avi проигрываются, по его словам, нормально.

Что означает свойство TVideoWindow.Mode?
У меня оно установлено в vmVMR. В help"е, к сожалению, не расписано (((


 
programania ©   (2006-01-19 19:24) [1]

У меня стоит vmNormal и другие окна не появляются
а vmVMR это как я понял с некорыми дополнительными возможностями
не работающими в 95,98, может у пользователя другая windows?
например захват кадров возможен так:
ms:= TMemoryStream.Create;
 try
   if form1.VideoWindow1.VMRGetBitmap(ms) then bTV.LoadFromStream(ms);
 finally
 ms.Free;


 
misha_gr   (2006-01-19 19:50) [2]

У пользователя Windows XP SP2 deutsch.

Я поставил vmVMR потому что заметил, что с vmNormal, к сожалению, не работает флаг KeepAspectRatio. То есть, с Align := clClient и при изменении размеров окна, пропорции будут искажаться.

Вообще, с помощью DsPack можно например узнать, размер изображения по вертикали/горизонтали? Тогда можно было бы самому рулить размерами.

И еще меня интересует такие вопросы, как узнать количество фреймов (кадров) в avi. Как можно двигать изображение покадрово?

В миллисекундах я примерно так меняю... но это ведь не фреймы...

 if assigned(FMediaSeeking) then begin
   FMediaSeeking.GetStopPosition(StopPosition);
     CurrentPosition := MiliSecToRefTime(Value);
     FMediaSeeking.SetPositions(CurrentPosition, M_SEEKING_AbsolutePositioning,
                               StopPosition, AM_SEEKING_NoPositioning);

 end;


 
Анонимщики ©   (2006-01-20 13:02) [3]

vmr - video mixing rendere - фильтр, ответственный за отображение. есть vmr7 (2000 default) и vmr9 (xp default).
в старых виндоусах используется другой рендерер
узнать размер можно, обратившись к свойствам окна
лучше это все написано в документации по directshow (msdn)
что касается лишних окон, то ответить можно, увидев код
скорее всего, тот граф фильтров который строится автоматически (когда dspack дает команду render исходящему контакту), разный на разных машинах - такое вполне может быть - из-за этого и окна лишние
читай msdn и мою статью


 
misha_gr   (2006-01-20 15:25) [4]

Можно ссылку на статью?


 
programania ©   (2006-01-21 02:42) [5]

>Вообще, с помощью DsPack можно например узнать, размер изображения по вертикали/горизонтали?

Можно
например при вызове

form1.FilterGraph1.RenderFile(
application.processMessages;

вызывается событие FilterGraph куда передаются размеры кадра:

procedure TForm1.FilterGraph1GraphVideoSizeChanged(sender: TObject; Width,
 height: Word);
begin

end;

>как узнать количество фреймов (кадров) в avi. Как можно двигать изображение покадрово?

я при записи всех кадров передвигаю позицию на 30 мс получаю кадр и сравниваю
с предыдущим если отличается то записываю как следущий кадр
на нескольких кадрах так можно узнать и длительность кадра

еще размер кадра можно получить с DSPack

met:TEnumMediaType;

met:=TEnumMediaType.Create;
try met.assign("film.avi") except er:=true; end;

в met.MediaDescription[0]
будет примерно такая строка
MAJOR TYPE: VIDEO - SUB TYPE: UNKNOWN  FORMAT: VIDEOINFO DIV3 512X288, 24 BITS
в met.MediaDescription[1]
MAJOR TYPE: AUDIO - SUB TYPE: UNKNOWN  FORMAT: WAVEFORMATEX: MPEGLAYER3,
48000 HERTZ, 12 BITS, 2 CHANNELS

Есть еще модуль для определения параметров avi
http://kladovka.net.ru/delphibase/?action=viewfunc&topic=mediasound&id=10430



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
8-1137837125
deamon_t
2006-01-21 12:52
2006.06.25
Алгоритм сравнения двух TBitmap


3-1146563515
yurant
2006-05-02 13:51
2006.06.25
SQL-запрос


15-1149120248
vidiv
2006-06-01 04:04
2006.06.25
Раздел математики


1-1147726374
Officeman
2006-05-16 00:52
2006.06.25
Вопрос о временный таблицах


3-1146332166
Express
2006-04-29 21:36
2006.06.25
ADOCommand – как перейти на следующую запись???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский