Главная страница
    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
3-56510
Ozone
2003-10-28 07:46
2003.11.17
TADOTable


3-56508
froland
2003-10-28 08:27
2003.11.17
Сумма поля


8-56773
Col Isaev
2003-07-18 13:40
2003.11.17
Сохранение куска битмап в массив


14-56814
Denis_Ac
2003-10-21 09:12
2003.11.17
Результаты встречи кодеров Красноярска


1-56744
Intense
2003-11-07 22:15
2003.11.17
создание MDI-окна в run-time





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