Конференция "Media" » Список кодеков системы
 
  • Gu (22.02.11 10:51) [0]
    как получить список аудио\видео кодеков\фильтров системы, их версии и пути к библиотекам?

    надо примерно это http://www.izone.ru/sys/utilities/installedcodec-screen.htm

    видео частично получается вытащить так: http://www.delphigroups.info/2/11/280318.html
    но там только список.

    может компонент какой есть?

    Rad 2010, W7
  • clickmaker © (22.02.11 12:11) [1]
    из реестра все можно узнать
  • Gu (22.02.11 13:56) [2]
    там они зарыты в ключах classes это очень сложно, звуковые лежат тут HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32 но там не все, кроме того x64 не учитываются, привидите пример тогда, "можно" и я могу написать
  • clickmaker © (22.02.11 14:19) [3]
    берешь тулзу installedcodec, запускаешь regmon от SysInternals и смотришь, куда тулза лезет.
    Либо сам ищещь в реестре по именам кодеков.
  • Gu (22.02.11 15:00) [4]
    я знаю куда она лезет - писал же - в классы, там туча инфы, должен быть другой способ
  • Gu (22.02.11 15:31) [5]
    нашел как через wmi сделать, только почемуто подозрительно мало выдает, 11 штук всего, вот скрипта пример

    создаем файлик codec.vbs

    --------------

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery("Select * from Win32_CodecFile")

    For Each objItem in colItems
      Wscript.Echo "Access Mask: " & objItem.AccessMask
      Wscript.Echo "Archive: " & objItem.Archive
      Wscript.Echo "Caption: " & objItem.Caption
      strCreationDate = WMIDateStringToDate(objItem.CreationDate)
      Wscript.Echo "Creation Date: " & strCreationdate
      Wscript.Echo "Drive: " & objItem.Drive
      Wscript.Echo "Eight Dot Three File Name: " & _
         objItem.EightDotThreeFileName
      Wscript.Echo "Extension: " & objItem.Extension
      Wscript.Echo "File Name: " & objItem.FileName
      Wscript.Echo "File Size: " & objItem.FileSize
      Wscript.Echo "File Type: " & objItem.FileType
      Wscript.Echo "File System Name: " & objItem.FSName
      Wscript.Echo "Group: " & objItem.Group
      Wscript.Echo "Hidden: " & objItem.Hidden
      strInstallDate = WMIDateStringToDate(objItem.InstallDate)
      Wscript.Echo "Last Accessed: " & strLastAccessed
      strLastModified = WMIDateStringToDate(objItem.LastModified)
      Wscript.Echo "Last Modified: " & strLastModified
      Wscript.Echo "Manufacturer: " & objItem.Manufacturer
      Wscript.Echo "Name: " & objItem.Name
      Wscript.Echo "Path: " & objItem.Path
      Wscript.Echo "Version: " & objItem.Version
    Next

    Function WMIDateStringToDate(dtmDate)
      WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _
         Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _
            & " " & Mid (dtmDate, 9, 2) & ":" & _
               Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate, _
                  13, 2))
    End Function

    --------------
    и запускаем в проводнике. в дельфи реализовать несложно, но фильтров там нету :(  и почемуто молчит про divx и остальные
  • Pavia © (22.02.11 17:57) [6]
    Кодеки бывают разные. Есть те которые цепляются к DirectX, есть те которые цепляются к vfw. А есть те которые идут вместе с плеером к примеру с медиа плеером классическим идут FFMmeg.
  • Gu (22.02.11 19:08) [7]
    если к-лайт установлен, он регистрирует в системе кучу кодеков, которые видно через всякого рода проги, ссылку на скрин в начале приводил и к-лайтовскими утилитами, типа gspod 2.7, в меню System\List codec -мгновенно список выдает полный. кроме того, если запустить виндовский проигрыватель, в меню выбрать "о программе", а в этом окне снизу тыкнуть ссылку "техподдержа" или чивототам, то откроется страничка (локально!) где все они будут видны.
    не важно какие они бывают, как инфу о них выдрать я спрашиваю из системы, те которые уже зарегены и видятся разными прогами.
  • Gu (22.02.11 20:38) [8]
    нашел, короче для вытаскивания видео как выше писал MSVFW32.DLL  надо юзать только не так как в примере, а для аудио - Msacm32.dll
  • Дмитрий Белькевич (23.02.11 11:51) [9]

    procedure TAviWriter_2.GetCompressorList(List: TStrings);
    var
    ii: TICINFO;
    i:  DWord;
    ic: THandle;
    BitmapInfoHeader: TBitmapInfoHeader;
    //Name: String;
    //j: integer;
    function Iterator(var i: DWord): DWord; inline;
    begin
     Result := i;
     Inc(i);
    end;

    begin
    List.Clear;
    List.add('No compression');

    FillChar(BitmapInfoHeader, SizeOf(BitmapInfoHeader), 0);
    with BitmapInfoHeader do
    begin
     biSize  := SizeOf(BitmapInfoHeader);
     biWidth := FWidth;
     biHeight := FHeight;
     biPlanes := 1;
     biCompression := BI_RGB;
     biBitCount := BitCounts[FPixelFormat];
    end;

    i := 0;
    while True do
    begin
     ii.dwSize := SizeOf(ii);
     if not ICInfo(ICTYPE_VIDEO, Iterator(i), @ii) then
      Break;
     ic := ICOpen(ICTYPE_VIDEO, ii.fccHandler, ICMODE_QUERY);
     if ic = 0 then
      Continue;
     try
      if ICCompressQuery(ic, @BitmapInfoHeader, nil) = 0 then
      begin
       ICGetInfo(ic, @ii, SizeOf(ii));
       List.add(FourCCToString(ii.fccHandler) + ' ' + ii.szName);
      end;
     finally
      ICClose(ic);
     end;
    end;
    end;



    Посмотри - может из этого можно что-то взять, кроме списка. Сама компонента - у нас на сайте выложена, если что.

    http://www.makhaon.com/download/software/AviWriter2.1.zip
  • Gu (24.02.11 01:19) [10]
    посмотрел я компоненту, немного не то что нужно, но все равно спасиб.
    сделал все же через библиотеки как выше писал.

    кстати эта компонента чтото не фурычит, при установки ансичары переделал где можно (под рад 2010), вроде встала норм после этого но вот файлы записывать может только когда "без компрессии", но даже в этом случае их невозможно открыть, а при компресии аццес виолатион выдает.
  • sfd (21.03.11 17:26) [11]
    http://site.expert-viveska.ru  тут есть ответ
 
Конференция "Media" » Список кодеков системы
Есть новые Нет новых   [134430   +3][b:0][p:0.001]