Как узнать, есть ли в компьютере проигрыватель, который может воспроизводить файл определенного формата? - PullRequest
0 голосов
/ 04 декабря 2011

1. Существуют некоторые форматы файлов (предположим, настоящий аудиофайл? (.Ra)), которые VLC может воспроизводить, но Windows Media Player (по умолчанию) не может.Как я могу узнать, есть ли в системе проигрыватель, который может воспроизводить нужный мне формат файла?

2. Кроме того, есть ли способ встроить такого игрока в мое (C #) приложение в общем виде?

1 Ответ

2 голосов
/ 04 декабря 2011

Это немного сложно, но я могу дать вам отправную точку (код был бы слишком длинным, чтобы написать его сейчас), так что вот что я думаю.

Вы просто идете и ищите вулей

HKEY_CLASSES_ROOT 

для расширения файла (в вашем случае это будет .ra).Если вы найдете такой ключ, у вас будут подключи, которые помогут вам определить, какое программное обеспечение использовалось для их открытия, или с помощью строкового значения «Тип содержимого», вы выполните другой поиск в HKEY_CLASSES_ROOT, где у вас снова будут ключи, которые будутСкажите, какое программное обеспечение открывает этот тип контента.

Так что вам нужно использовать классы, которые работают с Реестром (если вы хотите сделать это программно).

По поводу вашего второго вопроса: я спрашиваюНе думаю, что есть общий способ встроить любого игрока в ваше приложение.Это потому, что не каждый игрок предоставит какой-либо API для подключения, у вас не будет контракта, на который можно было бы положиться, и множество других проблем.Возможно, вам удастся добиться успеха в использовании Windows API, но я сомневаюсь, что он охватит все сценарии, которые вам в итоге придется поддерживать.

У вас есть несколько вариантов здесь:

  1. Делайте все, что выможно с Media Player и если формат файла не поддерживается - предложите пользователю открыть его с помощью проигрывателя по умолчанию (простого вызова System.Diagnostics.Process.Start с именем файла должно быть достаточно для Windows, чтобы запустить соответствующую программу) (Самый простой подход).
  2. Напишите свой собственный плеер, который может читать / преобразовывать из различных форматов.Вы должны быть в состоянии найти множество форматов, поддерживаемых различными библиотеками в Интернете, или, по крайней мере, найти их RFC (самый жесткий из всех, что вы можете сделать).
  3. Используйте некоторую библиотеку или программное обеспечение для преобразования типов файлов, которые вы не можетеиграть в фоновом режиме и запускать их с помощью медиаплеера, как если бы они были поддержаны (вероятно, это хороший способ достичь максимального результата с минимальными усилиями), вы можете снова запустить некоторые процессы в фоновом режиме с помощью System.Diagnostics.Process.Start, скрываяих от пользователя и загрузить носитель после его преобразования.Видео сайты, такие как YouTube, делают что-то подобное, когда вы загружаете файл - они помещают его в другой процесс, чтобы его можно было конвертировать, и тогда видео доступно в общем формате (в большинстве случаев это флэш-видео - я полагаю, flv).
...