Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 11:51   #1
villain10
Пользователь
 
Аватар для villain10
 
Регистрация: 03.01.2012
Сообщений: 12
Радость Работа с классом UdxMediaPlayer. Ошибка. Directshow.

Написал простенький видео плеер используя Directshow и класс UdxMediaPlayer.

Я сделал следующее:

1. Подключил Directshow указав путь к папке с pas'никами.
2. Закинул файл UdxMediaPlayer.pas и dcu в C:\Program Files\Borland\Delphi7\Lib

Здесь, сделал вроде бы все правильно.

При компиляции выходит debugger с таким предупреждением:



Вот в этой строке:



Подскажите в чем проблема?

Выложу исходники и UdxMediaPlayer
Вложения
Тип файла: zip Player.zip (226.5 Кб, 19 просмотров)
Тип файла: zip Classes.zip (25.1 Кб, 18 просмотров)
villain10 вне форума Ответить с цитированием
Старый 14.01.2012, 09:50   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
procedure TForm1.MediaNotify(var Msg: Tmessage);
var
  EventCode: Integer;
  Param1, Param2: Integer;
begin
  while MediaPlayer.GetEvent(EventCode, Param1, Param2, 0) = S_OK do
  begin
    if EventCode = EC_Complete then
    begin
      MediaPlayer.Stop;
      MediaPlayer.SetPlayingPosition(0);
    end;
    inherited;
  end;
end;
ZuBy вне форума Ответить с цитированием
Старый 14.01.2012, 10:06   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

а как в этом коде сделать чтобы .flv-шные файлы выводились на панель, а не на ActiveMovie Window?
ZuBy вне форума Ответить с цитированием
Старый 14.01.2012, 10:48   #4
villain10
Пользователь
 
Аватар для villain10
 
Регистрация: 03.01.2012
Сообщений: 12
По умолчанию

добавил inherited, не помогло.
villain10 вне форума Ответить с цитированием
Старый 14.01.2012, 10:50   #5
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

не может быть, у меня все норм.
ZuBy вне форума Ответить с цитированием
Старый 14.01.2012, 10:52   #6
villain10
Пользователь
 
Аватар для villain10
 
Регистрация: 03.01.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
не может быть, у меня все норм.
Странно, добавил куда надо.
Может это зависит от ОС? у меня Win7

Если не затруднит, можешь скинуть сюда исходники?)

P.S. где-то в нете видел пример как flv. файлы воспроизводить на panel к примеру. Если найду, сюда скину пример)

Последний раз редактировалось villain10; 14.01.2012 в 11:05.
villain10 вне форума Ответить с цитированием
Старый 14.01.2012, 11:04   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

лови исходник
Вложения
Тип файла: zip Player.zip (1.00 Мб, 19 просмотров)
ZuBy вне форума Ответить с цитированием
Старый 14.01.2012, 11:30   #8
villain10
Пользователь
 
Аватар для villain10
 
Регистрация: 03.01.2012
Сообщений: 12
По умолчанию

Спасибо, я сравнил наши исходники, ты там изменил:

Код:
{******************************************************************************}
{** Открытие нового мультимедиа файла                                        **}
{******************************************************************************}
procedure TForm1.Button1Click(Sender: TObject);
var
Volume: longint;
begin
  if OpenDialog1.Execute then
  begin
    if SUCCEEDED(MediaPlayer.Initialize(WideString(openDialog1.FileName))) then
    begin
      Caption := 'Small Media Player: ' + openDialog1.FileName;

      TrackBar1.Max := MediaPlayer.FrameCount div 100;

      MediaPlayer.RegisterEventMessage(Handle, WM_MEDIA_NOTIFY);

      MediaPlayer.SetWindowPosition(Rect(0, 0, Panel1.ClientRect.Right,
        Panel1.ClientRect.Bottom));
        
      if SUCCEEDED(MediaPlayer.GetVolume(Volume)) then
        TrackBar1.Position := 10 - Volume div 100;
    end;
end;
end;
изменил на:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    if SUCCEEDED(MediaPlayer.Initialize(WideString(openDialog1.FileName))) then
    begin
      Caption := 'Small Media Player: ' + openDialog1.FileName;

      TrackBar1.Max := MediaPlayer.FrameCount div 100;
      TrackBar1.Position := 0;

      MediaPlayer.RegisterEventMessage(Handle, WM_MEDIA_NOTIFY);

      MediaPlayer.SetWindowPosition(Rect(0, 0, Panel1.ClientRect.Right,
        Panel1.ClientRect.Bottom));

      MediaPlayer.SetVolume(TrackBar2.Position * 1000);

     { hnd := FindWindow('VideoRenderer', 'ActiveMovie Window');
      if hnd > 0 then
        ShowMessage('find'); }
        
      MediaPlayer.Play;
    end;
  end;
end;
Я сделал так же, но все ровно, у меня при компиляции дебагер выходит. Какая у тебя ось?
villain10 вне форума Ответить с цитированием
Старый 14.01.2012, 11:43   #9
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

проверял на xp sp3
ZuBy вне форума Ответить с цитированием
Старый 14.01.2012, 12:22   #10
villain10
Пользователь
 
Аватар для villain10
 
Регистрация: 03.01.2012
Сообщений: 12
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
проверял на xp sp3
Решил заново написать все, скопировал ваш код, все заработало. Единственное, я добавил компонент Xpmanifiest)))
villain10 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с классом списков(с++) besbyblik Помощь студентам 0 27.12.2011 22:33
Ошибка с классом vector Stepan575 Общие вопросы C/C++ 6 26.11.2010 14:13
Работа с классом UnChanter Помощь студентам 2 14.03.2010 20:23
Работа с классом| C++ Konicy Общие вопросы C/C++ 15 21.12.2009 19:08
C++ работа с классом VadEr Помощь студентам 2 17.05.2009 12:33