locked
silverlight 播放器 RRS feed

  • 问题

  • 大家好,这里有一个播放器代码,如下:

    <MediaElement Height="236" AutoPlay="True" Stretch="Fill" IsMuted="False"  Volume="1" Source="D:\\music.wma" HorizontalAlignment="Left" Margin="35,37,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="331" />

    进行了一系列属性的设置,但是,就是没有反应,请问,那里有问题?

    谢谢!<最好是可以再源码上进行改正!>

    2010年7月19日 4:02

答案

  • 其实,这段代码中,最重要的是Source,在Silverlight3.0中,我们确实不能浏览本地文件,最多的,只能得到本地文件的名称,我曾经也尝试过利用这段代码:Source="music.wma",但是,失败了。

    其他的不变,将Source的值设置成Source="/MediaPlayer;component/music.mp3",这样,就可以了。

    其中,/MediaPlayer是项目名称,component是固定的格式,后面的/music.mp3是文件地址,如果,将这个音频文件放在了文件夹中,适当的添加路径就可以了。

    这个方式我用过,可以成功的读取音频文件以及视频文件。

    但是,我这里也有一个疑问:当我在后台代码中设置这个属性的时候,会出现错误。代码是这样的:

    string musicName="这个地方时传过来的音频文件的名称";//我想做成动态的播放器

    string musciPath="/MediaPlayer;component/"+musicName;

    Uri uri=new Uri(path);//代码会在这个地方出错,没有报异常,只是,出现了调试的界面,但是,如果我将代码改为:Uri uri=new Uri("D:\\music.mp3")不会出错,但是,音频文件不能加载进来。

    this.musicPlayer.Source=uri;

    this.musicPlayer.Play();

    请问,如果我想把这个播放器做成动态的,这个地方应该怎么解决?

    谢谢!

    2010年7月21日 0:32
  • 你指的是动态读取文件路径吗 WCF提供服务 再赋值给player
    stay hungry stay foolish
    2010年7月22日 4:38

全部回复

  • 你好,

         Source URI 有问题,Silverlight不能这样去访问本地的文件。

         Silverlight被限制在游览器沙箱内的。

    2010年7月20日 9:31
  • 大家好,这里有一个播放器代码,如下:

    <MediaElement Height="236" AutoPlay="True" Stretch="Fill" IsMuted="False"  Volume="1" Source="D:\\music.wma" HorizontalAlignment="Left" Margin="35,37,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="331" />

    进行了一系列属性的设置,但是,就是没有反应,请问,那里有问题?

    谢谢!<最好是可以再源码上进行改正!>

    Silverlight作为客户端插件没有权限读取本地目录。你可以将该音乐文件放在Web目录下,然后使用下面代码就可以了


    <MediaElement Height="236" AutoPlay="True" Stretch="Fill" IsMuted="False"  Volume="1" Source="music.wma" HorizontalAlignment="Left" Margin="35,37,0,0" Name="mediaElement1" VerticalAlignment="Top" Width="331" />

    2010年7月20日 17:31
  • 其实,这段代码中,最重要的是Source,在Silverlight3.0中,我们确实不能浏览本地文件,最多的,只能得到本地文件的名称,我曾经也尝试过利用这段代码:Source="music.wma",但是,失败了。

    其他的不变,将Source的值设置成Source="/MediaPlayer;component/music.mp3",这样,就可以了。

    其中,/MediaPlayer是项目名称,component是固定的格式,后面的/music.mp3是文件地址,如果,将这个音频文件放在了文件夹中,适当的添加路径就可以了。

    这个方式我用过,可以成功的读取音频文件以及视频文件。

    但是,我这里也有一个疑问:当我在后台代码中设置这个属性的时候,会出现错误。代码是这样的:

    string musicName="这个地方时传过来的音频文件的名称";//我想做成动态的播放器

    string musciPath="/MediaPlayer;component/"+musicName;

    Uri uri=new Uri(path);//代码会在这个地方出错,没有报异常,只是,出现了调试的界面,但是,如果我将代码改为:Uri uri=new Uri("D:\\music.mp3")不会出错,但是,音频文件不能加载进来。

    this.musicPlayer.Source=uri;

    this.musicPlayer.Play();

    请问,如果我想把这个播放器做成动态的,这个地方应该怎么解决?

    谢谢!

    2010年7月21日 0:32
  • 你指的是动态读取文件路径吗 WCF提供服务 再赋值给player
    stay hungry stay foolish
    2010年7月22日 4:38
  • 谢谢你提供的思路!
    2010年7月22日 7:47