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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.014 c
1-28905
RomanaPro
2003-01-30 22:16
2003.02.10
Нет вывода


3-28688
Ihor Osov'yak
2003-01-24 03:03
2003.02.10
Сервис + созданный в рантайме TADOConnection -> проблема с


3-28685
Fishka
2003-01-23 13:39
2003.02.10
MSWord, Table и закладки


14-29083
Axis_of_Evil
2003-01-23 12:46
2003.02.10
Закон для Усех Гоблинов


1-28886
Сергей
2003-01-30 17:36
2003.02.10
Инициализация