Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметры фильмов, как определить? 
:(
    Опции темы
Ch0bits
  Дата 12.4.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Например открываю я свойства какой-нибудь mpeg'ки или avi'ки и могу посмотреть там битрейт звука, видео, размер видео, кодек, частота кадров, длительнось...
Можно ли получить подобную информацию средствами дотНЕТа, ведь explorer получает?

Это сообщение отредактировал(а) Vadim999 - 12.4.2005, 16:40
PM WWW   Вверх
Ch0bits
Дата 13.4.2005, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Чего-то не видно ответов... smile видать архисложная фиговина.
PM WWW   Вверх
mr.DUDA
Дата 13.4.2005, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Vadim999 @ 12.4.2005, 15:34)
Можно ли получить подобную информацию средствами дотНЕТа, ведь explorer получает

Не вижу логической связи... При чём тут explorer к .NET?

P.S. Это то же самое что говорить о JAVA, сравнивая возможности её библиотеки базовых классов с возможностями софта под FreeBSD.

P.S. (2) наверное, есть какой-то способ (типа прикрутить COM-компонент или бесплатную unmanaged библиотеку), не знаю smile .


--------------------
user posted image
PM MAIL WWW   Вверх
Ch0bits
  Дата 13.4.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Цитата(mr @ 13.4.2005, 10:58)
При чём тут explorer к .NET?

Explorer получает эту инфу средствами виндовс, а .NET как бы и является воплощением всех возможностей виндовс(заменяет прогр. на API).
Поскольку "свойства файла" встроены в виндузу, то где то есть DLLка с функцией которая получает эту инфу.
PM WWW   Вверх
mr.DUDA
Дата 13.4.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Vadim999 @ 13.4.2005, 11:37)
а .NET как бы и является воплощением всех возможностей виндовс(заменяет прогр. на API).

Где это написано ?


--------------------
user posted image
PM MAIL WWW   Вверх
Ch0bits
Дата 13.4.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Цитата(mr @ 13.4.2005, 11:47)
Где это написано ?

Это пропагандируется M$. И является заменой всему по умолчанию.

PM WWW   Вверх
mr.DUDA
Дата 13.4.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



По идее, можно получить информацию о файле с помощью MCI. Не вникая в детали, получится примерно такой код:
Код
public class AviInfo
    {
        [DllImport("winmm.dll")]
        extern static int mciSendString(string command, IntPtr responseBuffer,int bufferLength, int nothing);

        [STAThread]
        unsafe static void Main(string[] args)
        {
            IntPtr response = Marshal.AllocHGlobal(128);
            int lastErr;
            try
            {
                cmd = "open c:\\video\\Film.avi";
                lastErr = mciSendString(cmd, response, 128, 0);
                if(lastErr != 0) return;

                cmd = "info digitalvideo video algorithm";
                lastErr = mciSendString(cmd, response, 128, 0);

                byte *cbuf = (byte *) response;
                string str = String.Empty;
                for(int i=0; i<128; i++)
                    if(cbuf[i] != 0)
                        str += (char) cbuf[i];

                cmd = "close digitalvideo";
                lastErr = mciSendString(cmd, response, 128, 0);
            }
            finally
            {
                Marshal.FreeHGlobal(response);
            }
        }


Код не работает (MCI возвращает какую-то ошибку при попытке получить инфу), но я думаю в разделе по мультимедиа помогут составить правильную последовательность MCI-команд.


--------------------
user posted image
PM MAIL WWW   Вверх
Ch0bits
Дата 14.4.2005, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Даже скомпилить не могу... smile
Ошибка: Unsafe code may only appear if compiling with /unsafe


Код

using System;
using System.Runtime.InteropServices;

public class AviInfo
{
    [DllImport("winmm.dll")]
    extern static int mciSendString(string command, IntPtr responseBuffer,int bufferLength, int nothing);

    unsafe static void Main(string[] args)
    {
        IntPtr response = Marshal.AllocHGlobal(128);
        int lastErr;
        try
        {
            string cmd = "open c:\\video\\Film.avi";
            lastErr = mciSendString(cmd, response, 128, 0);
            if(lastErr != 0) return;
            cmd = "info digitalvideo video algorithm";
            lastErr = mciSendString(cmd, response, 128, 0);
            byte *cbuf = (byte *) response;
            string str = String.Empty;
            for(int i=0; i<128; i++)
                if(cbuf[i] != 0)
                    str += (char) cbuf[i];
            cmd = "close digitalvideo";
            lastErr = mciSendString(cmd, response, 128, 0);
        }
        finally
        {
            Marshal.FreeHGlobal(response);
        }
    }
}

PM WWW   Вверх
SergKO
Дата 15.4.2005, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

Репутация: нет
Всего: 20



Цитата(Vadim999 @ 14.4.2005, 23:02)
Даже скомпилить не могу... 
Ошибка: Unsafe code may only appear if compiling with /unsafe


В свойствах проекта необходимо установить соответствующее разрешение AllowUnsafeBlocks
PM MAIL   Вверх
Ch0bits
Дата 15.4.2005, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 9
Всего: 62



Я уже додумался, просто указал опцию компилятора csc /unsafe.

Но прога всё равно вылетает(путь к фильму правильный), ошибка: smile
Инструкция по адресу "0x078a7bb6" обратилась к памяти по адресу "0x07a84db4" Память не может быть "read". smile
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.