Silverlight使用内建的影音功能来播放,不需要太多影音方面知识,也不需要考虑客户端是否安装Media Player、Quick Time等软件,由于Silverlight的影音功能完全是内置的,支持声音和视频的播放,目前支持的格式如下:
◎ WMA :Windows Media Audio
◎ MP3
◎ WMV1:Windows Media Video 7
◎ WMV2:Windows Media Video 8
◎ WMV3:Windows Media Video 9
◎ WMVA
◎ WMVC1
◎ MPEG-4
音频和视频功能是集成一个类MediaElement中,媒体元素(MediaElement)继承自UIElent类,继承了UI的通用属性,开发人员可在视频播放的基础上再叠加额外的效果,主要关键属性如下:
<MediaElement x:Name="MyAudio" Autoplay="True" Volume="1" Source="tt.mp3" Canvas.Left="59" Canvas.Top="102"/>
范例 示范使用摄像头
图9-1是项目启动时画面。
图9-1
◎ 选择“是”后,开始视频捕获,单击“截屏”下方会出现相应的载图,如图9-3。
图9-3
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDeFinitions>
<RowDeFinition Height="189*" />
<RowDeFinition Height="36*" />
<RowDeFinition Height="75*" />
</Grid.RowDeFinitions>
<Border x:Name="bordVider" Margin="3" CornerRadius="3" Width="400" BorderBrush="Gray" HorizontalAlignment="Left" BorderThickness="1" >
<Border.Background>
<VideoBrush x:Name="brshMyVideo"/>
</Border.Background>
</Border>
<Button Name="btStart" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Row="1"
Width="78" Height="33"
Content="启动" FontSize="14" Click="btStart_Click" Margin="12,0" />
<Button Content="关闭" Height="33" HorizontalAlignment="Left" Margin="107,0" Name="btStop" VerticalAlignment="Top" Width="78" Grid.Row="1" FontSize="14" Click="btStop_Click" />
<Button Content="截屏" Height="33" HorizontalAlignment="Left" Margin="196,0" Name="btPing" VerticalAlignment="Top" Width="78" Grid.Row="1" FontSize="14" Click="btPing_Click" />
<Image Grid.Row="2" Height="70" HorizontalAlignment="Left" Margin="20,5,0" Name="imgMy" Stretch="UniformToFill" VerticalAlignment="Top" Width="99" />
</Grid>
</UserControl>
void btStart_Click(object sender,RoutedEventArgs e)
{
//取得默认视频设备
VideoCaptureDevice video = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();
//创建视频捕获源
capSource = new CaptureSource();
if (CaptureDeviceConfiguration.RequestDeviceAccess())
{
//设置视频设备
capSource.VideoCaptureDevice = video;
brshMyVideo.SetSource(capSource);
brshMyVideo.Stretch = Stretch.Fill;
//启动摄像头
capSource.Start();
}
}
private void btStop_Click(object sender,RoutedEventArgs e)
{
//关闭摄像头
capSource.Stop();
}
private void btPing_Click(object sender,RoutedEventArgs e)
{
if (capSource.State == CaptureState.Started)
{
WriteableBitmap wBitmap = new WriteableBitmap(bordVider,new MatrixTransform());
imgMy.source = wBitmap;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。