Относительный Uri работает для BitmapImage, но не для MediaPlayer?

Для вас это будет просто:

var uri = new Uri("pack://application:,,,/LiftExperiment;component/pics/outside/elevator.jpg");
imageBitmap = new BitmapImage();
imageBitmap.BeginInit();
imageBitmap.UriSource = uri;
imageBitmap.EndInit();
image.Source = imageBitmap;

=> Отлично работает с .jpg с помощью Build Action: Content Copy to Output Directory: Copy always

MediaPlayer mp = new MediaPlayer();
var uri = new Uri("pack://application:,,,/LiftExperiment;component/sounds/DialingTone.wav");
mp.Open(uri);
mp.Play();

=> Не работает с .wav с тем же действием сборки и копирования для вывода. Я вижу файл в моей папке / debug / ..

MediaPlayer mp = new MediaPlayer();
var uri = new Uri(@"E:\projects\LiftExp\_solution\LiftExperiment\bin\Debug\sounds\DialingTone.wav");
mp.Open(uri);
mp.Play();

=> Работает отлично ..

Итак, как мне заставить звук работать с относительным путем? Почему так не работает? Дайте мне знать, если вам нужен еще код или скриншоты.

Спасибо.


person Thomas Stock    schedule 12.04.2010    source источник


Ответы (1)


Синтаксис URI приложения pack: // предназначен для «встраиваемых» файлов, убедитесь, что медиафайл настроен на это, или используйте pack: // siteoforigin для «свободных» файлов (скопированных в каталог bin).

Ссылка MSDN

person Danny Varod    schedule 12.04.2010
comment
Тогда почему это работает для первого примера с BitmapImage? - person Thomas Stock; 13.04.2010
comment
хех, это работает с этим: var uri = new Uri (pack: // siteoforigin: ,,, / Sounds / DialingTone.wav); Мне пришлось удалить компонент / LiftExperiment; - person Thomas Stock; 13.04.2010