Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.17;
Скачать: CL | DM;

Вниз

Разрешение видео   Найти похожие ветки 

 
r0n1n   (2003-07-19 02:28) [0]

Привет всем!!!
Как мне у знать разрешение с которым идет видео с TMediaPlayer
если это не воможно то с каким компонентом и как


 
Rouse_   (2003-07-19 03:41) [1]

Вот, может быть это поможет

procedure TForm1.ReadAviInfo(FileName: string);
var
iFileHandle: Integer; // хэндл файла

// Для позмционирования в AVI файле
Aviheadersize: integer;
Vheadersize: integer;
Aviheaderstart: integer;
Vheaderstart: integer;
Aheaderstart: integer;
Astrhsize: integer;

// Временные переменные
TempTest: String[5];
TempSize: Integer;
TempVcodec: String[5];
TempAcodec: integer;
TempMicrosec: integer;
TempLengthInFrames: integer;
TempAchannels: integer;
TempAsamplerate: integer;
TempAbitrate: integer;

//Выходные данные
Size: double;
Length: string;
Vcodec: string;
Vbitrate: double;
VWidth: integer;
VHeight: integer;
Fps: double;

LengthInSec: double;
Acodec: string;
Abitrate: string;
begin
// Открываем
iFileHandle := FileOpen(FileName, fmOpenRead);

// Грубая проверка на подлинность файла
FileSeek(iFileHandle, 7, 0);
FileRead(iFileHandle, TempTest, 5);
if copy(TempTest, 0, 4) <> "AVI " then
begin
MessageDlg("Could not open " + FileName + " because it is not a valid video file", mtError, [mbOk], 0);
( iFileHandle,4,0) Вот, может быть это поможет

procedure TForm1.ReadAviInfo(FileName: string);
var
iFileHandle: Integer; // хэндл файла

// Для позмционирования в AVI файле
Aviheadersize: integer;
Vheadersize: integer;
Aviheaderstart: integer;
Vheaderstart: integer;
Aheaderstart: integer;
Astrhsize: integer;

// Временные переменные
TempTest: String[5];
TempSize: Integer;
TempVcodec: String[5];
TempAcodec: integer;
TempMicrosec: integer;
TempLengthInFrames: integer;
TempAchannels: integer;
TempAsamplerate: integer;
TempAbitrate: integer;

//Выходные данные
Size: double;
Length: string;
Vcodec: string;
Vbitrate: double;
VWidth: integer;
VHeight: integer;
Fps: double;

LengthInSec: double;
Acodec: string;
Abitrate: string;
begin
// Открываем
iFileHandle := FileOpen(FileName, fmOpenRead);

// Грубая проверка на подлинность файла
FileSeek(iFileHandle, 7, 0);
FileRead(iFileHandle, TempTest, 5);
if copy(TempTest, 0, 4) <> "AVI " then
begin
MessageDlg("Could not open " + FileName + " because it is not a valid video file", mtError, [mbOk], 0);
Exit;
end;

// Размер файла
FileSeek(iFileHandle,4,0);
FileRead(iFileHandle, TempSize, 4);

// Размер хедера (needed to locate the audio part)
FileSeek(iFileHandle,28,0);
FileRead(iFileHandle, Aviheadersize, 4);

// старт хедера (needed to locate the video part)
Aviheaderstart := 32;

// Милисекунды (1000000 / TempMicrosec = fps)
FileSeek(iFileHandle,Aviheaderstart,0);
FileRead(iFileHandle, TempMicrosec, 4);

// Размер во фреймах
FileSeek(iFileHandle,Aviheaderstart + 16,0);
FileRead(iFileHandle, TempLengthInFrames, 4);

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

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

FileSeek(iFileHandle,Aviheaderstart + Aviheadersize + 4,0);
FileRead(iFileHandle, Vheadersize, 4);

Vheaderstart := Aviheaderstart + Aviheadersize + 20;

// кодек
FileSeek(iFileHandle,Vheaderstart + 3,0);
FileRead(iFileHandle, TempVCodec, 5);

Aheaderstart := Vheaderstart + Vheadersize + 8;

FileSeek(iFileHandle,Aheaderstart - 4,0);
FileRead(iFileHandle, Astrhsize, 5);

// Audio codec
FileSeek(iFileHandle,Aheaderstart + Astrhsize + 8,0);
FileRead(iFileHandle, TempACodec, 2);

// Audio каналы (1 = mono, 2 = stereo)
FileSeek(iFileHandle,Aheaderstart + Astrhsize + 10,0);
FileRead(iFileHandle, TempAchannels, 2);

// Audio samplerate
FileSeek(iFileHandle,Aheaderstart + Astrhsize + 12,0);
FileRead(iFileHandle, TempAsamplerate, 4);

// Audio bitrate
FileSeek(iFileHandle,Aheaderstart + Astrhsize + 16,0);
FileRead(iFileHandle, TempAbitrate, 4);

Продолжение ниже>



 
Rouse_   (2003-07-19 03:42) [2]

Продолжение

// закрываем файл
FileClose(iFileHandle);

// анализируем видео кодек (можно добавить больше)
Vcodec := copy(TempVcodec, 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 TempAcodec of
0: Acodec := "PCM";
1: Acodec := "PCM";
85: Acodec := "MPEG Layer 3";
353: Acodec := "DivX;-) Audio";
8192: Acodec := "AC3-Digital";
else
Acodec := "Unknown (" + IntToStr(TempAcodec) + ")";
end;

case (Trunc(TempAbitrate / 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", TempAbitrate / 1024 * 8);
end;

// тут некоторые вычисления
Size := TempSize / 1024 / 1024;
Fps := 1000000 / TempMicrosec; // FPS
LengthInSec := TempLengthInFrames / fps; // Length in seconds
Length := FormatFloat("# min", Int(LengthInSec / 60)) + FormatFloat(" # sec",
( LengthInSec - (Int(LengthInSec / 60) Продолжение

// закрываем файл
FileClose(iFileHandle);

// анализируем видео кодек (можно добавить больше)
Vcodec := copy(TempVcodec, 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 TempAcodec of
0: Acodec := "PCM";
1: Acodec := "PCM";
85: Acodec := "MPEG Layer 3";
353: Acodec := "DivX;-) Audio";
8192: Acodec := "AC3-Digital";
else
Acodec := "Unknown (" + IntToStr(TempAcodec) + ")";
end;

case (Trunc(TempAbitrate / 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", TempAbitrate / 1024 * 8);
end;

// тут некоторые вычисления
Size := TempSize / 1024 / 1024;
Fps := 1000000 / TempMicrosec; // FPS
LengthInSec := TempLengthInFrames / fps; // Length in seconds
Length := FormatFloat("# min", Int(LengthInSec / 60)) + FormatFloat(" # sec",
Round(LengthInSec - (Int(LengthInSec / 60) * 60)));
Vbitrate := (TempSize / LengthInSec - TempABitrate) / 1024 * 8;

// Выводим инфу в мемо
Memo1.Lines.Add("AVI INFORMATION");
Memo1.lines.Add("Size: " + FormatFloat("#.## MB",Size));
Memo1.Lines.Add("Length: " + Length);
Memo1.Lines.Add("");
Memo1.Lines.Add("VIDEO INFORMATION");
Memo1.Lines.Add("Codec: " + Vcodec);
Memo1.Lines.Add("Bitrate: " + FormatFloat("# Kbit/s", Vbitrate));
Memo1.lines.Add("Width: " + IntToStr(VWidth) + " px");
Memo1.lines.Add("Height: " + IntToStr(VHeight) + " px");
Memo1.Lines.Add("FPS: " + FormatFloat("#.##", fps));
Memo1.Lines.Add("");
Memo1.Lines.Add("AUDIO INFORMATION");
Memo1.Lines.Add("Codec: " + Acodec);
Memo1.Lines.Add("Bitrate: " + Abitrate);
end;

Желаю успехов


 
r0n1n   (2003-07-20 03:39) [3]

Спасибо



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

Текущий архив: 2003.11.17;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.009 c
1-56671
Yanis
2003-11-05 09:49
2003.11.17
Regedit


1-56587
Floppy
2003-11-06 09:37
2003.11.17
QuickReport > Doc, Rtf, Txt


1-56687
Ivolg
2003-11-07 17:08
2003.11.17
Компоненты как их грузить?


1-56593
KSergey
2003-11-05 15:02
2003.11.17
Про грид и InplaceEdit


14-56865
анабО
2003-10-28 12:58
2003.11.17
!анабО





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский