Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.01.2014, 11:02
Tboy Tboy вне форума
Прохожий
 
Регистрация: 14.09.2013
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
Восклицание WMP в Delphi

Не могу разобраться с программой! Вроде бы все компиляцию проходит, НО видеофайл не проигрывается. Хочу чтобы проигрывание зависело от текста вводимого в edit! Вот мой код!
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, WMPLib_TLB, ExtCtrls, ComCtrls,
  ACTIVELISTENPROJECTLib_TLB;
 
type
  TForm1 = class(TForm)
    WindowsMediaPlayer1: TWindowsMediaPlayer;
    Button1: TButton;
    Timer1: TTimer;
    Edit1: TEdit;
    Button4: TButton;
 
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Edit1Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
 
 
 
 
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
WindowsMediaPlayer1.URL:='E:\777.avi';
WindowsMediaPlayer1.Controls.currentPosition:=0;
WindowsMediaPlayer1.Controls.play;
 
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (WindowsMediaPlayer1.Controls.currentPosition = 7) then
     WindowsMediaPlayer1.Controls.currentPosition := 0;
     WindowsMediaPlayer1.Controls.play;
 
end;
 
 
procedure TForm1.Button4Click(Sender: TObject);
begin
if Edit1.Text='Цель' then
begin
WindowsMediaPlayer1.Controls.currentPosition:=0;
WindowsMediaPlayer1.Controls.play;
WindowsMediaPlayer1.URL:='E:\777' end
else
WindowsMediaPlayer1.URL:='E:\999.avi'
end;
 
 
 
 
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Edit1.Clear();
end;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.text<>' ' then Button4.Enabled:=true else Button1.Enabled:=false;
end;
 
end.
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 17.01.2014 в 19:59.
Ответить с цитированием
  #2  
Старый 18.01.2014, 08:09
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

Открывать файл с диска в WindowsMediaPlayer1 нужно так:
WindowsMediaPlayer1.DefaultInterface.URL:='E:\777. avi';
WindowsMediaPlayer1.controls.play;
Ответить с цитированием
  #3  
Старый 19.01.2014, 13:18
Tboy Tboy вне форума
Прохожий
 
Регистрация: 14.09.2013
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Не помогло! Результат такой же!
Ответить с цитированием
  #4  
Старый 19.01.2014, 14:58
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

Проверь свой код, у меня все работает.
Где именно не работает, если на кнопке Button4, то у тебя там ошибки: пропущено расширение файла в строке 'E:\777' (должно быть 'E:\777.avi') и в else добавь WindowsMediaPlayer1.Controls.play; и все должно работать.
Ответить с цитированием
  #5  
Старый 19.01.2014, 17:44
Tboy Tboy вне форума
Прохожий
 
Регистрация: 14.09.2013
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Убрал вообще все что связано с edit и точно - проблема в button4. До этого все работало. Что здесь может быть не так(((( не пойму
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (WindowsMediaPlayer1.Controls.currentPosition = 7) then
     WindowsMediaPlayer1.Controls.currentPosition := 0;
     WindowsMediaPlayer1.Controls.play;
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
WindowsMediaPlayer1.Controls.play;
WindowsMediaPlayer1.URL:='E:\777.avi'
end;

end.
MAD: бан за несоблюдение правил оформления кода.

Последний раз редактировалось M.A.D.M.A.N., 19.01.2014 в 17:54.
Ответить с цитированием
  #6  
Старый 19.01.2014, 18:19
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

Убери Timer и отслеживай изменение позиции плеера, через событие OnPositionChange (WindowsMediaPlayer1)
Вот код:
Код:
procedure TForm1.WindowsMediaPlayer1PositionChange(ASender: TObject;
  oldPosition, newPosition: Double);
begin
  if (newPosition = 7) then
   begin
    WindowsMediaPlayer1.controls.currentPosition := 0;
    WindowsMediaPlayer1.Controls.play;
   end;  
end;
Ответить с цитированием
  #7  
Старый 19.01.2014, 19:12
Аватар для Belanserg
Belanserg Belanserg вне форума
Прохожий
 
Регистрация: 18.11.2009
Сообщения: 29
Версия Delphi: 7
Репутация: 12
По умолчанию

Cобытие OnPositionChange наступает только если пользователь сам (кликом по контролам управления) меняет позицию.
Скорее всего это тебе неподойдет, вообще currentPosition у WindowsMediaPlayer1 типа Double(Тип с плавающей запятой, поддерживающий приблизительно 15 цифр точности) а это значит что ты никогда не получишь currentPosition = 7 от этого у тебя и все проблемы, мой вариант (рабочий проверял) в Timer'е прописать следующий код (Timer1.Interval:=10):
Код:
Label1.Caption:=FormatFloat('#',WindowsMediaPlayer1.controls.currentPosition);//выводим Double без цифр после запятой и переводим в string
if Label1.Caption = '7' then  //проверяем значение(теперь string'овое)
WindowsMediaPlayer1.controls.currentPosition:=0;//установливаем в начало
Ответить с цитированием
  #8  
Старый 25.01.2014, 10:20
Tboy Tboy вне форума
Прохожий
 
Регистрация: 14.09.2013
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Проект вышел, но переход от файла к файлу долгий! Нужно чтобы не заметно было! Объединил 2 видео и написал код. Не выходит(
Вложения
Тип файла: txt Проект 4.txt (2.9 Кбайт, 3 просмотров)
Ответить с цитированием
  #9  
Старый 25.01.2014, 12:03
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от Tboy
...переход от файла к файлу долгий! Нужно чтобы не заметно было!..
Есть подозрение, что WMP предварительно кеширует воспроизводимый ролик (он же настоящий, из системы!-), отсюда "тормоза". Никогда эту активкиску не использовал, но слышал что для смены файла вроде лучше следить за PlayState, в смысле если WMP.playstate = WMPMediaEnded (посмотрите в хелпе про этот наборчик, может по-другому флажок называется), то пора его менять. А чтоб с минимальными задержками при смене, то для этого больше просто TMediaPlayer подходит, он такими новоявленными глупостями, в силу своего преклонного возраста, не занимается
Ответить с цитированием
  #10  
Старый 26.01.2014, 14:13
Teror4uks Teror4uks вне форума
Прохожий
 
Регистрация: 27.10.2013
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А можешь посоветовать чем воспользоваться? Просто я уже зе*ался с этой библиотекой , в проекте есть 4 плей листа куда добавляются видео записи с опр разрешением(воспроизводиться на 4 разных панелях), всё проигрывается, но вот заставить при поставленной галочке зацикливать видео никак не получается, а если и выходит, то ошибки при доступе к памяти...
Ответить с цитированием
  #11  
Старый 26.01.2014, 16:52
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Посмотрите вот такой "сырой" пример, правда он на обычном МР завязан, но может поможет
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:02.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram