如何在WPF中捕获视频 [英] how to capture video in WPF

查看:132
本文介绍了如何在WPF中捕获视频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个小型应用程序,可以从网络摄像头捕获视频并将其保存在我的计算机中.我已经完成了一些代码,但是没有检测到网络摄像头.非常感谢.
我将我的代码放在这里.
Window1.xaml

i am developing a small application which capture video from web cam and save in my computer location.i have done some code but its not detecting the web cam.plz help me. thanks in advanced.
i am putting my code here.
Window1.xaml

<Window x:Class="AvCapWPF.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:l="clr-namespace:AvCapWPF"
    Name="wnd"
    Title="Window1" Height="291" Width="286">
    <Window.Resources>
        <l:ScaleConverter x:Key="conv"/>
    </Window.Resources>
        <Grid>
        <l:CapPlayer x:Name="player" RenderTransformOrigin="0.5,0.5">
            <l:CapPlayer.RenderTransform>
                <TransformGroup>
                    <ScaleTransform ScaleX="1" ScaleY="1"/>
                    <SkewTransform AngleX="0" AngleY="0"/>
                    <RotateTransform Angle="180.294"/>
                    <TranslateTransform X="0" Y="0"/>
                </TransformGroup>
            </l:CapPlayer.RenderTransform>
        </l:CapPlayer>
        <HeaderedItemsControl Header="Framerate" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="55">
            <Grid>
                <Rectangle Fill="#55FF0000">
                    <Rectangle.Height>
                        <MultiBinding Converter="{StaticResource conv}">
                            <Binding ElementName="player" Path="Framerate"/>
                            <Binding ElementName="wnd" Path="ActualHeight"/>
                        </MultiBinding>
                    </Rectangle.Height>
                </Rectangle>
                <TextBlock Text="{Binding ElementName=player, Path=Framerate}" HorizontalAlignment="Left" Width="13" />
            </Grid>
        </HeaderedItemsControl>
        <Button Height="23" Name="btnStart" VerticalAlignment="Bottom" Margin="0,0,74,0" Click="btnStart_Click" HorizontalAlignment="Right" Width="61">Start</Button>
        <Button Height="23" Margin="0,0,8,0" Name="button2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="61">Stop</Button>
        <Button Height="23" Margin="74,0,0,0" Name="btnCue" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="48" Click="btnCue_Click">cue</Button>
    </Grid>
</Window


>



window1.xaml.cs


>



window1.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using DirectX.Capture;
namespace AvCapWPF
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        private Capture capture = null;
        public Window1()
        {
            InitializeComponent();

        }
        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //capture.PreviewWindow = player;
                //capture.VideoSource =
               // capture.VideoDevice;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to enable/disable preview. Please submit a bug report.\n\n" + ex.Message + "\n\n" + ex.ToString());
            }

            try
            {
                if (capture == null)
                    throw new ApplicationException("Please select a video and/or audio device.");
                if (!capture.Cued)
                    capture.Filename = "D:\anay.avi";
                capture.Start();
                btnCue.IsEnabled = false;
                btnStart.IsEnabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n\n" + ex.ToString());
            }
        }
        private void btnCue_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (capture == null)
                    throw new ApplicationException("Please select a video and/or audio device.");
                if (!capture.Cued)
                    capture.Filename = "D:\anay.avi";
                capture.Cue();
                btnCue.IsEnabled = false;
                MessageBox.Show("Ready to capture.\n\nUse Cue() before Start() to " +
                    "do all the preparation work that needs to be done to start a " +
                    "capture. Now, when you click Start the capture will begin faster " +
                    "than if you had just clicked Start. Using Cue() is completely " +
                    "optional. The downside to using Cue() is the preview is disabled until " +
                    "the capture begins.");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n\n" + ex.ToString());
            }
        }
    }
    public class ScaleConverter : IMultiValueConverter
    {

        #region IMultiValueConverter Members
        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            float v = (float)values[0];
            double m = (double)values[1];
            return v * m / 50;
        }
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
        #endregion
    }
}

推荐答案

有很多细节此处 [ ^ ]可以帮助您您将掌握初始化捕获设备所需的一切.
There''s plenty of detail here[^] to help you get to grips with what you need to initialise the capture device.


这篇关于如何在WPF中捕获视频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆