介绍
Silverlight 4.0 媒体方面的增强:
* 新增对摄像头的支持
* 新增对麦克风的支持
在线DEMO
http://www.cnblogs.com/webabcd/archive/2010/08/09/1795417.html
示例
1、演示如何捕获摄像头
MemoryStreamVideoSink.cs
代码
/*
* VideoSink - 用于捕获视频信息。抽象类,其有一个CaptureSource类型的属性
*/
using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.IO;
namespace Silverlight40.WebcamMic
{
public class MemoryStreamVideoSink : VideoSink
{
public VideoFormat VideoFormat { get; private set; }
public MemoryStream MemoryStream { get; private set; }
// 当视频设备开始捕获视频数据时所调用的方法
protected override void OnCaptureStarted()
{
MemoryStream = new MemoryStream();
}
// 当视频设备停止捕获视频数据时所调用的方法
protected override void OnCaptureStopped()
{
}
/// <summary>
/// 当视频设备报告视频格式更改时所调用的方法
/// 当视频设备开始捕获视频数据时会调用一次OnFormatChange,此时便可以确定当前的视频格式
/// </summary>
/// <param name="videoFormat">新的视频格式</param>
protected override void OnFormatChange(VideoFormat videoFormat)
{
VideoFormat = videoFormat;
}
/// <summary>
/// 当视频设备捕获了一个完整的视频采样时所调用的方法
/// </summary>
/// <param name="sampleTime">当前采样被捕获时的时间。单位:100纳秒</param>
/// <param name="frameDuration">当前采样的时长。单位:100纳秒</param>
/// <param name="sampleData">当前采样的视频数据的字节流</param>
protected override void OnSample(long sampleTime, long frameDuration, byte[] sampleData)
{
MemoryStream.Write(sampleData, 0, sampleData.Length);
}
}
}