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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2008, 11:54
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию Медиаплеер

Вот решил медиаплеер сделать. С трэкбаром проблемы. При воспроизведении он двигается за медиаплеером (т.е. trackbar1.position:=mediaplayer1.position). А когда я его двигаю, он возвращается на позицию плеера. Мне надо чтобы я двигал его и позиция плеера соответсвенно менялась. Подскажите как это сделать.
Ответить с цитированием
  #2  
Старый 23.02.2008, 12:58
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

Да вот ещё один вопрос. Как узнать размер в пикселях avi файла? Заранее спасибо!
Ответить с цитированием
  #3  
Старый 26.02.2008, 22:02
vitalik007 vitalik007 вне форума
Прохожий
 
Регистрация: 12.10.2007
Адрес: Минск
Сообщения: 30
Репутация: 10
По умолчанию

procedure TForm1.ScrollBar2MouseLeave(Sender: TObject);
begin
sliding:=false;
end;

procedure TForm1.ScrollBar2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
sliding:=true;
end;

procedure TForm1.ScrollBar2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
sliding:=true;
if button = mbleft then
BASS_ChannelSetPosition(music, Scrollbar2.position);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not sliding then
Scrollbar2.Position :=BASS_ChannelGetPosition(music);
end;
Ответить с цитированием
  #4  
Старый 26.02.2008, 22:05
vitalik007 vitalik007 вне форума
Прохожий
 
Регистрация: 12.10.2007
Адрес: Минск
Сообщения: 30
Репутация: 10
По умолчанию

procedure Tfrm_main.btn_openClick(Sender: TObject);
var
i : Integer;
afile : PAVIFile;
afi : TAVIFileInfo;

avimsg : Word;
begin
if od1.execute then begin
AVIFileInit;
avimsg := AVIFileOpen(afile, PChar(od1.FileName), OF_READ, nil);
if avimsg = Word(AVIERR_OK) then begin
if AVIFileInfo(afile, afi, sizeof(afi)) = 0 then begin
AVIWidth := afi.dwWidth;
AVIHeight := afi.dwHeight;
end;
end;
AVIFileRelease(afile);
AVIFileExit;
Ответить с цитированием
  #5  
Старый 26.02.2008, 22:12
vitalik007 vitalik007 вне форума
Прохожий
 
Регистрация: 12.10.2007
Адрес: Минск
Сообщения: 30
Репутация: 10
По умолчанию

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
//Процедура для чтения информации об AVI
procedure AviInfo(FileName: string);
end;

var
Form1: TForm1;

implementation
{$R *.DFM}
procedure TForm1.AviInfo(FileName: string);
var
AviFileHandle: Integer;

AVI_HEADER_SIZE: integer;
V_HEADER_SIZE: integer;
AVI_HEADER_START: integer;
V_HEADER_START: integer;
A_HEADER_START: integer;
A_STRH_SIZE: integer;

//Временные значения
TEMP_TEST: string[5];
TEMP_SIZE: Integer;
TEMP_VCODEC: String[5];
TEMP_ACODEC: integer;
TEMP_MICROSEC: integer;
TEMP_LENGTHinFRAMES: integer;
TEMP_ACHANNELS: integer;
TEMP_ASAMPLERATE: integer;
TEMP_ABITRATE: integer;

//Окончательные значения
Size: double;
Length: string;
Vcodec: string;
Vbitrate: double;
VWidth: integer;
VHeight: integer;
Fps: double;
LengthInSec: double;
Acodec: string;
Abitrate: string;
begin
//Открываем файл
AviFileHandle := FileOpen(FileName, fmOpenRead);

//Проверяем, что это AVI файл
FileSeek(AviFileHandle, 7, 0);
FileRead(AviFileHandle, TEMP_TEST, 5);
if copy(TEMP_TEST, 0, 4) <> 'AVI ' then
begin
ShowMessage('Невозможно обработать выбранный AVI файл. Операция остановлена!');
exit;
end;

// Определяем размер файла
FileSeek(AviFileHandle,4,0);
FileRead(AviFileHandle, TEMP_SIZE, 4);

//Производим инициализирующие действия, чтобы в дальнешем получить
//информацию об аудио и видео
FileSeek(AviFileHandle,28,0);
FileRead(AviFileHandle, AVI_HEADER_SIZE, 4);
AVI_HEADER_START := 32;

//Значение необходимо для получения fps
FileSeek(AviFileHandle,AVI_HEADER_START,0);
FileRead(AviFileHandle, TEMP_MICROSEC, 4);

//Длина фильма в кадрах
FileSeek(AviFileHandle,AVI_HEADER_START + 16,0);
FileRead(AviFileHandle, TEMP_LENGTHinFRAMES, 4);

//Ширина
FileSeek(AviFileHandle,AVI_HEADER_START + 32,0);
FileRead(AviFileHandle, VWidth, 4);

//Высота
FileSeek(AviFileHandle,AVI_HEADER_START + 36,0);
FileRead(AviFileHandle, VHeight, 4);

FileSeek(AviFileHandle,AVI_HEADER_START + AVI_HEADER_SIZE + 4,0);
FileRead(AviFileHandle, V_HEADER_SIZE, 4);
V_HEADER_START := AVI_HEADER_START + AVI_HEADER_SIZE + 20;

//Видеокодек
FileSeek(AviFileHandle,V_HEADER_SIZE + 3,0);
FileRead(AviFileHandle, TEMP_VCODEC, 5);
A_HEADER_START := V_HEADER_START + V_HEADER_SIZE + 8;
FileSeek(AviFileHandle,AVI_HEADER_START - 4,0);
FileRead(AviFileHandle, A_STRH_SIZE, 5);

//Аудиокодек
FileSeek(AviFileHandle,A_HEADER_START + A_STRH_SIZE + 8,0);
FileRead(AviFileHandle, TEMP_ACODEC, 2);

//Дополнительная информация об аудио
//Mono(1), Stereo(2)
FileSeek(AviFileHandle,AVI_HEADER_START + A_STRH_SIZE + 10,0);
FileRead(AviFileHandle, TEMP_ACHANNELS, 2);
//samplerate
FileSeek(AviFileHandle,AVI_HEADER_START + A_STRH_SIZE + 12,0);
FileRead(AviFileHandle, TEMP_ASAMPLERATE, 4);
//bitrate
FileSeek(AviFileHandle,AVI_HEADER_START + A_STRH_SIZE + 16,0);
FileRead(AviFileHandle, TEMP_ABITRATE, 4);

//Информация прочитана, закрываем файл
FileClose(AviFileHandle);

//Определяем название видеокодека
Vcodec := copy(TEMP_VCODEC, 0, 4);
if Vcodec = 'div2' then Vcodec := 'MS MPEG4 v2'
else if Vcodec = 'DIV2' then Vcodec := 'MS MPEG4 v2'
else if Vcodec = 'div3' then Vcodec := 'DivX;-) MPEG4 v3'
else if Vcodec = 'DIV3' then Vcodec := 'DivX;-) MPEG4 v3'
else if Vcodec = 'div4' then Vcodec := 'DivX;-) MPEG4 v4'
else if Vcodec = 'DIV4' then Vcodec := 'DivX;-) MPEG4 v4'
else if Vcodec = 'div5' then Vcodec := 'DivX;-) MPEG4 v5'
else if Vcodec = 'DIV5' then Vcodec := 'DivX;-) MPEG4 v5'
else if Vcodec = 'divx' then Vcodec := 'DivX 4'
else if Vcodec = 'mp43' then Vcodec := 'Microcrap MPEG4 v3';

//Определяем название аудиокодека
case TEMP_ACODEC of
0: Acodec := 'PCM';
1: Acodec := 'PCM';
85: Acodec := 'MPEG Layer 3';
353: Acodec := 'DivX;-) Audio';
8192: Acodec := 'AC3-Digital';
else
Acodec := 'Неизвестный (' + IntToStr(TEMP_ACODEC) + ')';
end;

//Определяем bitrate
case (Trunc(TEMP_ABITRATE / 1024 * 8)) of
246..260: Abitrate := '128 Kbit/s';
216..228: Abitrate := '128 Kbit/s';
187..196: Abitrate := '128 Kbit/s';
156..164: Abitrate := '128 Kbit/s';
124..132: Abitrate := '128 Kbit/s';
108..116: Abitrate := '128 Kbit/s';
92..100: Abitrate := '128 Kbit/s';
60..68: Abitrate := '128 Kbit/s';
else
Abitrate := FormatFloat('# Kbit/s', TEMP_ABITRATE / 1024 * 8);
end;

//Окончательный рассчет
Size := TEMP_SIZE / 1024 / 1024;
Fps := 1000000 / TEMP_MICROSEC; // FPS
LengthInSec := TEMP_LENGTHinFRAMES / fps; // Length in seconds
Length := FormatFloat('# min', Int(LengthInSec / 60)) +
FormatFloat(' # sec', Round(LengthInSec - (Int(LengthInSec / 60) * 60)));
Vbitrate := (TEMP_SIZE / LengthInSec - TEMP_ABITRATE) / 1024 * 8;

//Выводит информацию в TMemo
Memo1.Lines.Add('СВЕДЕНИЯ ОБ AVI файле: '+FileName);
Memo1.lines.Add('Размер: ' + FormatFloat('#.## MB',Size));
Memo1.Lines.Add('Длина: ' + Length);
Memo1.Lines.Add('');
Memo1.Lines.Add('информация о видео');
Memo1.Lines.Add('Кодек: ' + Vcodec);
Memo1.Lines.Add('Bitrate: ' + FormatFloat('# Kbit/s', Vbitrate));
Memo1.lines.Add('Ширина: ' + IntToStr(VWidth) + ' px');
Memo1.lines.Add('Высота: ' + IntToStr(VHeight) + ' px');
Memo1.Lines.Add('FPS: ' + FormatFloat('#.##', fps));
Memo1.Lines.Add('');
Memo1.Lines.Add('информация об аудио');
Memo1.Lines.Add('Кодек: ' + Acodec);
Memo1.Lines.Add('Bitrate: ' + Abitrate);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialog1.Filter := 'AVI files (*.avi)|*.avi';
if OpenDialog1.Execute then
begin
Memo1.Clear;
AviInfo(OpenDialog1.FileName);
end;
end;

end.
Ответить с цитированием
  #6  
Старый 27.02.2008, 16:15
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

Спасиб большое
Ответить с цитированием
  #7  
Старый 27.02.2008, 19:19
Sanek_ntsk Sanek_ntsk вне форума
Новичок
 
Регистрация: 02.09.2007
Сообщения: 55
Репутация: 10
По умолчанию

у меня нет таких процедур ScrollBar2MouseMove, ScrollBar2MouseMove и т.д со словом Mouse.
Ответить с цитированием
  #8  
Старый 01.03.2008, 19:10
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

Цитата:
Сообщение от Sanek_ntsk
у меня нет таких процедур ScrollBar2MouseMove, ScrollBar2MouseMove и т.д со словом Mouse.
Войди во вкладку Events (Object Inspector) и кликни 2 раза по той процедуре (справа). OnMouseMove

Там есть все...
Ответить с цитированием
  #9  
Старый 05.03.2008, 22:50
vitalik007 vitalik007 вне форума
Прохожий
 
Регистрация: 12.10.2007
Адрес: Минск
Сообщения: 30
Репутация: 10
По умолчанию

А за что меня забанили?
Пришел написал 3 месаги и получил недельный БАН
Ответить с цитированием
  #10  
Старый 06.03.2008, 20:20
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

Цитата:
Сообщение от vitalik007
А за что меня забанили?
Пришел написал 3 месаги и получил недельный БАН
За несоблюдение правил форума (пункт 2.8).
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter