Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Вниз

Узнать информацию о видео-файле   Найти похожие ветки 

 
NailMan   (2002-09-26 05:06) [0]

Трабла.

Использую для воспроизведения DirectShow.

Интерфейс IBasicVideo возвращает например битрэйт видео в непонятных единицах(хотя написано бит/сек). Если разделить енто число на 1000 что-то около 7 Мбит/сек получается, а битрэйт по всем показателем не превышает 960 кбит.
Что тогда выводит этот интерфейс вместо битрэйта?

И еще момоент.

Пытаюсь определить инфу о файле через интерфейс IMediaDet, он вообще нифига о потоках не выводит кроме типа потока.

Как мне узнать хотябы битрэйт и на худой конец какой фильтр используется в медиапотоке(видео, аудио)?

Осталась последняя черта в моем медиаплеере и вот, блин, камешки под ноги ползут...

И еще вопросец: А каким макором можно вызвать настройки фильтра, как например в Mplayer2 вызываются настройки DivX и т.п.?


 
SCHMaster   (2002-10-06 03:18) [1]

Лови ...

unit Timeconvert;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls;

function HoursConv(Pos:Int64):Integer;
function MinConv(Pos:Int64):Integer;
function SecConv(Pos:Int64):Integer;
implementation




function HoursConv(Pos:Int64):Integer;
begin
Pos:=Pos div 10000000;
if Pos < 3600 then
begin
result:=0;
end
else result:=Pos div 3600;
end;

function SecConv(Pos:Int64):Integer;
var
H, M, S:Integer;
begin
H:=HoursConv(Pos);
M:=MinConv(Pos);

Pos:=Pos div 10000000;

if H = 0 then S:=Pos-M*60
else S:=(Pos-H*3600-M*60);
result:=S;
end;

function MinConv(Pos:Int64):Integer;
var
H, M, S, Tmp:Integer;
begin
H:=HoursConv(Pos);

Pos:=Pos div 10000000;

if H = 0 then M:=Pos div 60
else
M:=(Pos-H*3600) div 60;

result:=M;
end;

end.





 
SCHMaster   (2002-10-12 04:07) [2]

Это позиция просмотра, на остальное, если еще нужно, вышлю пример.


 
SCHMaster   (2002-10-28 02:53) [3]

Кстати, вчерась качнул DirectShow SDK 2.0, дык там все немного проще и намного понятнее + примеры + HELP


 
pasha676   (2002-10-28 09:05) [4]

Люди, а как насчет вызова окна настроек драйвера? Как это делать?


 
SCHMaster   (2002-10-29 03:03) [5]

> pasha676
Если ты имеешь ввиду использование DirectShow 1.05 RC1
то

procedure TForm1.FilterCall;
var
BaseFilter: IBaseFilter;
begin
FilterGraph1.FilterGraph2.FindFilterByName(StringToOleStr("Твой драйвер, точнее фильтр"), BaseFilter);
ShowFilterPropertyPage(Form1,BaseFilter);
BaseFilter := nil;
end;

Но предварительно нужно создат список этих фильтров, добавляя их, к примеру, хотябы в меню:

procedure TForm1.GetFilterList(graph: IFilterGraph);
var
EnumFilters: IEnumFilters;
BaseFilter: IBaseFilter;
FilterInfo: TFilterInfo;
VidSet:TMenuItem;
T:Integer;
begin
VideoSub.Enabled:=True;
VideoSub.Clear;
T:=0;
graph.EnumFilters(EnumFilters);
While (EnumFilters.Next(1, BaseFilter, nil)=S_OK) do
begin
BaseFilter.QueryFilterInfo(FilterInfo);

VidSet:=TMenuItem.Create(self);
with VidSet do begin
if UpperCase(ExtractFileExt(FilterInfo.achName)) <> ".AVI" //это чтоб в список твой видеофайл не входил
then
begin
Caption:=FilterInfo.achName;
VidSet.Tag:=T;
T:=T+1;
OnClick:=MnuCheck;
VideoSub.Add(VidSet);// а это то меню, куда ты добавляешь
end;
end;
end;
end;




 
pasha676   (2002-10-29 09:08) [6]

Пасибо. Разберусь. Похоже
FilterGraph1.FilterGraph2.FindFilterByName(StringToOleStr("Твой драйвер, точнее фильтр"), BaseFilter);
ShowFilterPropertyPage(Form1,BaseFilter);
BaseFilter := nil;
Это похоже то что надо.


 
pasha676   (2002-10-29 12:46) [7]

Странное дело. Таким способом некоторые кодеки настраиваютьс (интел индео, например), а некоторые не выдают на гора окно настроек(DivX, например). Почему интересно?


 
SCHMaster   (2002-10-30 03:36) [8]

Дык таким способом вызываются только настройки тех кодеков и фильтров, которые в данный момент использует твоя программа, а она использует только кодеки связанные с твоим AVI (или MPEG, MP3 и т.д.)файлом. А Indeo та получил, потому что твой файл закодирован в Indeo (посмотри его свойства и убедись).
Сходи на http://www.progdigy.com/
Там DirectShow 2.0 есть, и DirectShow 1.05 RC1. Причем с примерами.



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

Форум: "Media";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
1-28931
Cherepovets
2003-01-31 12:34
2003.02.10
Поиск в файле


3-28687
Makhanev A.S.
2003-01-24 14:42
2003.02.10
Как программно выделить строку в DBGrid?


1-28843
Natalia
2003-02-03 00:45
2003.02.10
edit


1-28890
SpyX
2003-01-29 21:37
2003.02.10
Реестр


1-28793
tv
2003-01-30 10:11
2003.02.10
Смена кодировеки в TWebBrowser





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