<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, Java y programación &#187; camara</title>
	<atom:link href="http://casidiablo.net/tag/camara/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Trabajando con el Kernel Linux (II)</title>
		<link>http://casidiablo.net/trabajando-con-el-kernel-linux-ii/</link>
		<comments>http://casidiablo.net/trabajando-con-el-kernel-linux-ii/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 14:00:02 +0000</pubDate>
		<dc:creator>Cortex</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[camara]]></category>
		<category><![CDATA[compilación]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[sysctl]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3306</guid>
		<description><![CDATA[Anterior artículo&#8230; Continuando con la serie de posts dedicados al Kernel, hoy vamos a hablar sobre las cámaras web y la herramienta sysctl. Cámaras Web En la actualidad, el kernel tiene muy buen soporte para las cámaras web, tanto las integradas como las externas. Basado en mi experiencia, nunca he tenido ningún problema con dispositivos [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Ftrabajando-con-el-kernel-linux-ii%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Trabajando%20con%20el%20Kernel%20Linux%20%28II%29%22%20%7D);"></div>
<p><a title="Trabajando con el Kernel Linux (I)" href="http://casidiablo.net/trabajando-con-el-kernel-linux-i/">Anterior artículo&#8230;</a></p>
<p>Continuando con la serie de posts dedicados al Kernel, hoy vamos a hablar sobre las cámaras web y la herramienta <strong>sysctl</strong>.</p>
<h2>Cámaras Web</h2>
<p style="text-align: center"><img class="alignnone size-full wp-image-3324" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/09/webcam_pinguino.jpg" alt="webcam_pinguino" width="214" height="195" /></p>
<p>En la actualidad, el kernel tiene muy buen soporte para las cámaras web, tanto las integradas como las externas. Basado en mi experiencia, nunca he tenido ningún problema con dispositivos de captura de video en Linux aunque me imaginó que en algún hardware habrá incompatibilidades. La ventaja es que los desarrolladores del kernel cada día trabajan por mejorarlo y desarrollando controladores para maximizar el soporte en la mayor cantidad de máquinas posibles.<span id="more-3306"></span></p>
<p>Lo primero que debemos hacer es identificar la <em>referencia</em> del dispositivo. Si tienes un portatil y lo que buscas es hacer funcionar la cámara integrada que trae, usando el <a title="Linux UVC driver and tools" href="http://linux-uvc.berlios.de/">driver UVC</a> sería suficiente:</p>
<pre>Device Drivers  ---&gt;
     &lt;*&gt; Multimedia support  ---&gt;
          [*]   Video capture adapters  ---&gt;
               [*]   Autoselect pertinent encoders/decoders and other helper chips
               [*]   V4L USB devices  ---&gt;
                    &lt;*&gt;   USB Video Class (UVC)
                          [*]     UVC input events device support</pre>
<p>Ahora, en caso de que la cámara sea externa debes conectarla y hacer un <strong>lsusb</strong>. Hay tantos modelos disponibles que sería difícil hacer una guía definitiva, además de que ya existe un <a title="Linux Webcam HOWTO" href="http://www.tldp.org/HOWTO/Webcam-HOWTO/">completo HOWTO que explica esto</a>. Lo que haré, será mostrar un ejemplo haciendo uso de una vieja cámara <strong>Genius</strong> que tengo. Si la conecto y hago un <strong>dmesg</strong> puedo ver la información del dispositivo:</p>
<div class="consola">[ 4601.153221] usb 5-1: New USB device found, idVendor=093a, idProduct=2471<br />
[ 4601.153228] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0<br />
[ 4601.153235] usb 5-1: Product: CIF Single Chip<br />
[ 4601.153241] usb 5-1: Manufacturer: Pixart Imaging Inc.</div>
<p>Ahora <strong>lsusb</strong>:</p>
<div class="consola">Bus 005 Device 003: ID 093a:2471 Pixart Imaging, Inc.</div>
<p>Teniendo el <strong>ID</strong>, debemos buscar cuál es el módulo necesario para esta cámara. <a title="GSPCA V4L2 - Webcams" href="http://moinejf.free.fr/webcam.html">Aquí tienes una larga lista</a> de IDs con su respectivo módulo. Si buscamos también en la <a title="Linux Kernel Driver DataBase" href="http://cateee.net/lkddb">base de datos de drivers del kernel</a> veremos la <a href="http://cateee.net/lkddb/web-lkddb/USB_GSPCA_PAC207.html">configuración</a> que debemos hacer y el módulo a activar. El driver en cuestión es: <strong>gspca_pac207.</strong></p>
<pre>&lt;*&gt;   GSPCA based webcams  ---&gt;
     &lt;M&gt;   Pixart PAC207 USB Camera Driver</pre>
<p>Si compilaste como módulo no olvides agregarlo al inicio del sistema (si es lo que deseas). En Gentoo con OpenRC y Baselayout 2:</p>
<div class="consola"># echo &#8216;modules_2_6=&#8221;${modules_2_6} gspca_pac207&#8243;&#8216; &gt;&gt; /etc/conf.d/modules</div>
<p>Para esta cámara es necesario tener instalada la librería <strong>v4l (Video 4 Linux)</strong>.</p>
<div class="consola"># emerge -av media-libs/libv4l</div>
<div class="nota">En general, este es el proceso para todos las cámaras, aunque en algunas puede haber variaciones. Con los enlaces que expuse anteriormente debe ser suficiente para encontrar la información relativa a tu hardware.</div>
<p>Y listo. Reiniciamos con el nuevo kernel y usamos cualquier programa como <strong>cheese</strong> para comprobar que todo funciona bien.</p>
<h2>Sysctl</h2>
<p>A raíz de un <a title="arpunk" href="http://casidiablo.net/trabajando-con-el-kernel-linux-i/#comment-7291">comentario de arpunk</a>, he decidido posponer uno de los temas que iba a tocar en este artículo y hablar sobre <strong>sysctl.</strong></p>
<p>El kernel Linux es tan flexible que te permite modificar la manera en que trabaja, dinámicamente, a través del comando <em>sysctl</em>. Sysctl provee de una interfaz que permite examinar y cambiar cientos de parámetros en núcleos Linux y BSD. Gracias a esta herramienta podemos modificar y optimizar el kernel sin tener que recompilarlo. Los cambios son realizados inmediatamente e incluso pueden ser definidos como persistentes, de manera que continúen después de reiniciar.</p>
<p>Para ver los parámetros actuales del kernel en ejecución:</p>
<div class="consola">sysctl -a<br />
sysctl -n vm.swappiness</div>
<p>Con el segundo lo que hacemos es ver el valor de un determinado parámetro, en este caso <strong>vm.swappiness</strong>. Suponiendo que quisiéramos decirle al kernel que <a title="Swappiness" href="http://kerneltrap.org/node/3000">use más la memoria RAM que la swap</a> ó habilitar el <em>forwarding</em> en IPv4, bastaría con cambiar el valor de estas <em>variable</em>s:</p>
<div class="consola">sysctl vm.swappiness=10<br />
sysctl net.ipv4.conf.all.forwarding=1</div>
<p>Recuerda que las modificaciones que hagas con este comando serán temporales, y la próxima vez que reinicies el sistema se cargarán los valores por defecto. Para cambiar este comportamiento, hay que editar el archivo <em>/etc/sysctl.conf</em></p>
<div class="consola">echo &#8216;net.ipv4.conf.all.forwarding=1&#8242; &gt;&gt; /etc/sysctl.conf</div>
<p><strong>Básicamente</strong> eso es sysctl. El tema podría tornarse más extenso pero la idea de estos artículos, es tan sólo, recopilar conceptos en torno al kernel Linux. Para más información <a title="man sysctl" href="http://linux.die.net/man/8/sysctl">man sysctl</a>.</p>
<p>Hasta aquí por hoy. En el próximo artículo hablaremos un poco de optimizaciones para el procesador y de otras buenas prácticas a la hora de compilar el núcleo.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/trabajando-con-el-kernel-linux-ii/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Video en cámara lenta (slow motion) con ffmpeg</title>
		<link>http://casidiablo.net/camara-lenta-slow-motion-ffmpeg/</link>
		<comments>http://casidiablo.net/camara-lenta-slow-motion-ffmpeg/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 12:28:12 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[camara]]></category>
		<category><![CDATA[lenta]]></category>
		<category><![CDATA[slow motion]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2019</guid>
		<description><![CDATA[Otro de los trucos que podemos hacer con ffmpeg es poner un video en cámara lenta, también conocido como slow motion. El comando ésta vez es un poco más complejo, que no difícil, puesto que vamos a usar pipes; pero por supuesto al final explicaré cada parte. Antes que nada es de aclarar que NO [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fcamara-lenta-slow-motion-ffmpeg%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Video%20en%20c%C3%A1mara%20lenta%20%28slow%20motion%29%20con%20ffmpeg%22%20%7D);"></div>
<p style="text-align: justify;"><a href="http://www.youtube.com/watch?v=sc0Gbsw70Hk"><img style="float:left;" src="http://i4.ytimg.com/vi/sc0Gbsw70Hk/default.jpg" alt="" /></a>Otro de los trucos que podemos hacer con ffmpeg es poner un video en cámara lenta, también conocido como <em>slow motion</em>. El comando ésta vez es un poco más complejo, que no difícil, puesto que vamos a usar pipes; pero por supuesto al final explicaré cada parte.</p>
<p style="text-align: justify;">Antes que nada es de aclarar que NO es posible hacerlo únicamente con <code>ffmpeg</code>, sino que es necesario utilizar el comando <code>yuvfps</code>. Asi que si no lo tienes instalado:</p>
<div class="consola">apt-get install yuvfps</div>
<p style="text-align: justify;">Otro dato a tener en cuenta es que, <code>yuvfps</code> lee y escribe los datos del video desde y hacia la entrada (stdin) y salida (stdout) estándar, respectivamente. Este es el motivo por el cual podemos/debemos usar pipes.</p>
<h3>Ejemplo&#8230;</h3>
<p style="text-align: justify;">Supongamos que hemos descargado <a href="http://www.youtube.com/watch?v=IuP3XmjKNGs">este video del Youtube</a>, en donde una muchacha recibe un golpe fuertísimo, y queremos poner el video en cámara lenta. Pues bien, el comando sería el siguiente:</p>
<div class="consola">ffmpeg -i mujeres.flv -f yuv4mpegpipe &#8211; | yuvfps -s 15:1 -r 15:1 | ffmpeg -f yuv4mpegpipe -i &#8211; -f mpeg2video -r 29.97 -y lentas.mpeg</div>
<p>Después de ello, el video resultante (<em>lentas.mpeg</em>) <a href="http://www.youtube.com/watch?v=sc0Gbsw70Hk">quedaría algo así</a>.</p>
<h3>Explicación&#8230;</h3>
<p style="text-align: justify;">El comando en realidad se divide en tres partes principalmente:</p>
<ul style="text-align: justify;">
<li> La primera es cuando convertimos el video original en uno con formato yuv4mpegpipe (<code>ffmpeg -i mujeres.flv -f yuv4mpegpipe -</code>). Vemos que el nombre del archivo original es <em>mujeres.flv</em>, y con el comando <code>-f</code> le indicamos a <code>ffmpeg</code> que el formato del video de salida será <code>yuv4mpegpipe</code>. Por último, ponemos un guión (<code>-</code>) que representa el archivo de salida, y que será lo que pasemos como parámetro al siguiente comando&#8230;</li>
<li>El segundo comando (<code>yuvfps -s 15:1 -r 15:1</code>) disminuye la velocidad del video a la mitad. Puesto que <code>yuvfps</code> lee la <em>stdin</em>, en realidad está leyendo el archivo que representa el guión del comando anterior.</li>
<li style="text-align: justify;">Por último, reconvertimos el video generado por el comando anterior que está en formato <code>yuv4mpegpipe</code> (ffmpeg -f yuv4mpegpipe -i &#8211; ), generando un archivo en formato MPEG2 (<code>-f mpeg2video -r 29.97 lentas.mpeg</code>).</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/camara-lenta-slow-motion-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

