none
Webcam en Silverlight 5 RRS feed

Respuestas

  • Hola Camilo.

    En un principio, deberia de salirte del mismo modo que en la version 4. ¿estas desplegando la aplicacion desde el IIS o IIS Express?, es posible que el navegador no tenga activada alguna opcion de activeX.

    ¿lo has probado en varios navegadores?.

    En cualquier caso, en silverlight 5 ya se puede ejecutar la aplicacion con permisos elevados de modo que puedes probar a activar la opcion siguiente en las propiedades del proyecto:

    Con esta opcion se requeriran permisos full trust para la aplicacion dentro del navegador y no ira preguntando por accesos.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    martes, 13 de marzo de 2012 13:28

Todas las respuestas

  • Hola Camilo.

    En un principio, deberia de salirte del mismo modo que en la version 4. ¿estas desplegando la aplicacion desde el IIS o IIS Express?, es posible que el navegador no tenga activada alguna opcion de activeX.

    ¿lo has probado en varios navegadores?.

    En cualquier caso, en silverlight 5 ya se puede ejecutar la aplicacion con permisos elevados de modo que puedes probar a activar la opcion siguiente en las propiedades del proyecto:

    Con esta opcion se requeriran permisos full trust para la aplicacion dentro del navegador y no ira preguntando por accesos.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/

    martes, 13 de marzo de 2012 13:28
  • Hola buenos dias,

    Tengo un problema similar. estoy haciendo una aplicativo con silverlight he probado la version 4 y la 5 beta, de manejo de la camara web. he probado diversos ejemplos, acabo de probar el que referencia el amigo Camilo y tampoco.

    El problema radica es que cuando lanzo la aplicacion en el Interner Explorer V 9.0.8.xxx y cuando voy a activar la camara, efectivamente si me muestra la tipica pantalla de que el siguiente sitio XXXXX desea utilizar mi dispositivos multimedia como la camara y el audio.. etc.. y logicamente le digo que si le doy permisos. y despues de eso simplemente se cierra la aplicacion no genera ningun error ni usando try catch. lo simpatico de todo es que he probado un ejemplo en linea (http://socketlab.com/WCBin/#/Home) si funciona bien, pero ejecutando yo ese mismo codigo me sale el error mencionado.

    Agradezco infinitamente los cosejos y soluciones que me puedan brindar.

    Saludos,

    Luis Ilian

    martes, 13 de marzo de 2012 16:08
  • Hola Luis.

    En la pagina que se comenta Camilo, no hay ningun ejemplo concreto, solo se explica como usar la camara, aunque he visto los codigos y son correctos.

    os pongo un ejemplo basico que tengo implementado para pruebas y me comentas si te funciona o no:

    Codigo xaml donde se presentan 2 cuadrados para las imagenes y 2 botones para iniciar/detener

    <UserControl x:Class="webcam_basic.MainPage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" d:DesignHeight="400" d:DesignWidth="600" Width="800" Height="450">
    
        <Grid x:Name="LayoutRoot">
        	<Grid.ColumnDefinitions>
        		<ColumnDefinition/>
        		<ColumnDefinition/>
        	</Grid.ColumnDefinitions>
        	<Grid.Background>
        		<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        			<GradientStop Color="Black"/>
        			<GradientStop Color="White" Offset="0.897"/>
        			<GradientStop Color="#FF303B70" Offset="1"/>
        		</LinearGradientBrush>
        	</Grid.Background>
        	<Grid.RowDefinitions>
        		<RowDefinition Height="Auto" MinHeight="414"/>
        		<RowDefinition/>
        	</Grid.RowDefinitions>
            
            <Rectangle x:Name="rect_left" Width="320" Height="240" Fill="White" RadiusX="10" RadiusY="10" Stroke="#FF0024FF">
            	<Rectangle.Projection>
            		<PlaneProjection RotationY="-200"/>
            	</Rectangle.Projection>
            	<Rectangle.Effect>
            		<DropShadowEffect/>
            	</Rectangle.Effect>
            </Rectangle>
            <Rectangle x:Name="rect_right" Width="320" Height="240" Fill="White" RadiusX="10" RadiusY="10" Stroke="#FF0024FF" Margin="40,60" Grid.Column="2">
            	<Rectangle.Projection>
            		<PlaneProjection RotationY="20"/>
            	</Rectangle.Projection>
            	<Rectangle.Effect>
            		<DropShadowEffect/>
            	</Rectangle.Effect>
            </Rectangle>
    
            <Button Content="start" Height="23" HorizontalAlignment="Left" Name="btn_start" VerticalAlignment="Center" Width="133" Click="button_Click" Margin="150,0,0,0" Grid.Row="1" d:LayoutOverrides="HorizontalAlignment" />
            <Button Content="stop" Height="23" HorizontalAlignment="Left" Name="btn_stop" VerticalAlignment="Center" Width="133" Click="button_Click" Margin="10,0,0,0" Grid.Row="1" BorderThickness="1" />        
        
        </Grid>
    </UserControl>

    Codigo cs donde se inicializa toda la camara y se establecen los rectangulos como destino de los frames:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace webcam_basic
    {
        public partial class MainPage : UserControl
        {
            /// <summary>
            /// Objeto que suministra metodos para trabajar con un dispositivo de captura especifico de audio o video
            /// </summary>
            CaptureSource m_captureSource;
    
            /// <summary>
            /// Constructor por defecto de la clase
            /// </summary>
            public MainPage()
            {
                InitializeComponent();
            }
    
    
            /// <summary>
            /// Evento ocurrido al pulsar un boton en el control de usuario
            /// </summary>
            /// <param name="sender">Objeto remitente</param>
            /// <param name="e">argumentos del evento</param>
            private void button_Click(object sender, RoutedEventArgs e)
            {
                // obtener el boton pulsado y evaluar para actual en consecuencia
                Button btn = (Button)e.OriginalSource;
                switch (btn.Name)
                {
                    // boton btn_start
                    case "btn_start":
    
                        // comenzar la captura de video
                        startVideo();
    
                        break;
                    // boton btn_stop
                    case "btn_stop":
    
                        // detener la captura de video
                        stopVideo();
    
                        break;
                }
            }
    
            /// <summary>
            /// Funcion para iniciar la captura de video
            /// </summary>
            private void startVideo()
            {
                // Obtener el valor que permite acceder al dispositivo sin preguntar
                bool ok = CaptureDeviceConfiguration.AllowedDeviceAccess;
    
                // si no se permite por defecto, se muestra el cuadro para pedir acceso
                if (!ok) ok = CaptureDeviceConfiguration.RequestDeviceAccess();
    
                // si se permite el acceso, se establece la captura
                if (ok)
                {
                    // el objeto 'CaptureSource' solo se necesita inicializar una vez
                    if (m_captureSource == null)
                    {
                        // crear el objeto 'CaptureSource' con el dispositivo por defecto de video
                        m_captureSource = new CaptureSource()
                        {
                            VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice()
                        };
                        
                        // asociar la fuente de la captura al relleno de los 2 'Rectangle'
                        VideoBrush brush = new VideoBrush();
                        brush.SetSource(m_captureSource);
                        rect_left.Fill = brush;
                        rect_right.Fill = brush;
                    }
    
                    // comenzar la captura de video desde el dispositivo asociado
                    m_captureSource.Start();
                }
            }
    
            /// <summary>
            /// Funcion para detener la captura de video
            /// </summary>
            private void stopVideo()
            {
                // detener la captura del video
                m_captureSource.Stop();            
            }
        }
    }

    Este codigo me funciona correctamente, bajo silverlight 4 y 5 (no valen betas, ya que creo recordar que alguna funcion cambio de nombre).

    Por otra parte si existe algun error grave en el control silverlight, es posible que no se pare sobre el codigo silverlight, ya que el error ocurre en el navegador, se puede probar a insertar un punto de interrupcion en la funcion 'OnSilverlightError' de javascript que se crea en la pagina aspx por defecto y ver si para ahi. OJO: para depurar recomiendo iexplorer.

    Ademas, si no se detiene en el punto, se puede comprobar el visor de eventos de windows a ver si pone algo al respecto.

    Y otra opcion es ejecutar la aplicacion como OOB (out of browser) esto deberia de dar mas pistas.

    Ya contaras que tal.


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/


    jueves, 15 de marzo de 2012 10:30
  • Hola que tal...

    Te recomiendo el ejemplo de este video de mi buen amigo Rodrigo. =)

    http://www.silverlight.net/learn/international/spanish/09-webcam


    Recibe un saludo de mi parte. Atentamente Cisco Pérez. =) Si esto responde tu pregunta, favor de marcala como contestada. =)

    jueves, 15 de marzo de 2012 16:34
  • Hola que tal...

    Te recomiendo el ejemplo de este video de mi buen amigo Rodrigo. =)

    http://www.silverlight.net/learn/international/spanish/09-webcam


    Recibe un saludo de mi parte. Atentamente Cisco Pérez. =) Si esto responde tu pregunta, favor de marcala como contestada. =)

    jueves, 15 de marzo de 2012 16:35
  • Por Seguridad Silverlight Siempre Mostrara este mensage al usrio en genral a la hora de cargar o acceder a la camara web, esto viene por la seguridad de Microsoft Silverlight tanto como en la version 4 como en la Version 5.

    Mark the better answers for you,do not turn off your mind

    Website http://www.calidadidentificada.com

    jueves, 22 de marzo de 2012 10:50
  • Wow muchísimas gracias, disculpa la demora en la respuesta, es q había olvidado esta parte de mi aplicación y cuando retomé, recordé que tenía error en esto, wow enserio gracias, gracias.
    martes, 3 de abril de 2012 6:30