Pages

domingo, 29 de diciembre de 2013

Linux: cómo saber el UUID de tus discos o particiones, incluso desde grub.

A veces nos encontramos con que necesitamos conocer el uuid de un disco duro o una partición. A menudo porque se ha producido algún fallo en grub, quizás por redimensionar una partición, cambiar un disco duro, etc. Aquí tienes distintas formas para ver cómo averiguar el uuid asociado a una partición.

1. Desde grub ---> útil si no carga el kernel y el sistema no arranca.

 En este caso, podemos acceder a la consola de comandos de grub. Al encender el pc, cuando aparece el menú de grub, pulsamos la tecla [e]. A continuación, veremos algo como esto:


A continuación, entramos en la consola de comandos de grub pulsando [Ctrl]-[c].

Es importante que sepas que grub siempre llama a las particiones y discos duros de la sigiente forma:

(hdX,tipo_particionY) ---> fíjate que va entre paréntesis.
  •  hd es el disco duro, siendo "X" un número entero mayor o igual que 0. hd0 será el disco duro 1, hd1 será el disco duro 2.... No importa si tu disco duro es scsi, sata o ata, grub siempre lo va a llamar hd.
  • tipo_particionY ---> "Y" es un numero entero mayor o igual a 1. Que indica un numero de partición dentro de un disco duro cualquiera. En cuanto al tipo de partición, si tu placa base usa BIOS, tu esquema de particionado será del tipo MBR, y por tanto, casi seguro que el tipo de partición sea msdos. En sistemas EFI, es probable que hayas seguido un esquema de particionado GPT, y que tus particiones sean del tipo gpt.
  • Así pues la partición (hd0,msdos1) (hd0,msdos2) serían dos particiones del disco duro hd0 particionado con esquema MBR.
Una vez en la consola de comandos de grub, usamos el comando ls :
        1. grub> ls           #esto de listará las particiones de tu sistema:

 



Supongamos que quiero saber el uuid de la particion (hd0,msdos2):
        2. grub> ls (hd0,msdos2)

 

2. Desde el sistema  operativo.

  • $ sudo blkid
  • $ sudo ls -l /dev/disk/by-uuid


  • El archivo /etc/fstab ---> muestra las particiones que el sistema operativo monta al inicio, y sus uuids respectivas. Si añades un disco duro a tu equipo y quieres que el sistema lo monte al inicio, tendrás que añadir esa nueva partición a este archivo editándolo.
    $ cat /etc/fstab





Espero que te sirva ;)

jueves, 7 de febrero de 2013

opensuse12.2: instalación de bumblebee 3.0.1 + drivers de nvidia. Para tarjetas Nvidia con tecnología optimus

Hola a todos!
La semana pasada me instalé opensuse en mi portátil. Intenté instalar bumblebee para dar soporte a la tecnología optimus pero... Tuve que leer mucha documentación y mirar en demasiados sitios. Es curioso: la documentación que en ubuntu se encuentra en miles de blogs, en opensuse escasea. Se nota que somos menos usuarios los de opensuse. Pero bastantes menos, diría yo.

El motivo que me ha llevado a publicar esta entrada es que la mayoría de los posts que he visto en foros dedicados a opensuse están desactualizados: hablan de paquetes que ya ni existen y casi siempre, los repositorios que proporcionan para instalar bumblebee es para la versión 2.4 del mismo. Esto puede crear confusiones e incluso instalaciones fallidas por no existir ya paquetes esenciales para esas versiones viejas de bumblebee.
Por otro lado, bumblebee 3.0 ha sido programado en C y eso le da un mejor desempeño que versiones más viejas del mismo.

En mi caso, voy a utilizar los drivers de nvidia. El motivo es que con los de nouveau no me funcionó correctamente. Bumblebee arrancaba pero por alguna razón nouveau no gestionaba mi gráfica nvidia.

1º. Consideraciones generales:
  •  Si tu portátil es un lenovo, puede que ésta guia no te sirva. Deberías consultar también estos dos enlaces:
  • Parto desde una instalación limpia de opensuse12.2. Es decir, hasta ahora, sólo he ejecutado dos comandos:
    • $ sudo zypper refresh
    • $ sudo zypper update (fíjate que no he añadido ningún repositorio. Ni siquiera packman o libdvdcss).
  • Mi portátil es un ASUS N53S.
  • Mis tarjetas gráficas: la implementada por intel y una nvidia GT540M.

2º. Desinstala el driver de nouveau y por si acaso, lo añades a la blacklist:

  • Para añadir el driver nouveau a la blacklist:
    • $ gnomesu gedit /etc/modprobe.d/50-blacklist.conf
      Das tu clave de admin e introduces esta linea:
      blacklikst nouveau
      (guarda los cambios y te sales de gedit)
     
  • Elimina el driver de nouveau y reinicia:
    •  $ sudo zypper rm xorg-x11-driver-video-nouveau && sudo /sbin/reboot
 3º. Añade los repositorios de nvidia e instala paquetes:
  • Añade el repositorio de nvidia latest opensuse-factory, refresca e instala:
    • $ sudo zypper ar -f http://download.opensuse.org/repositories/home:/Bumblebee-Project:/nVidia:/latest/openSUSE_Factory/ repo-nvidia-latest
    • $ sudo zypper refresh
    • $ sudo zypper in dkms
    • $sudo zypper in nvidia-compute x11-video-nvidia (Te dirá que va a instalar automáticamente estos paquetes: dkms-nvidia  nvidia-compute x11-video-nvidia x11-video-nvidia-devel ; acepta las dependencias).
    • Llegados a este punto, es posible que veas durante la instalación de los drivers un mensaje de error al final:
      cannot stat 'libXvMCNVIDIA.a': No such file or directory
      Ignora éste mensaje, es normal. A mí también me ha pasado y me funciona.
    • $ sudo /usr/sbin/dkms autoinstall -k `uname -a | awk -F" " '{ print $3 }'`
     
  • Reinicia $ sudo /sbin/reboot

Te llamará la atención que si haces lsmod, no verás nvidia ni nouveau por ningún lado, es decir que sólo ha cargado el driver i915. Es normal:



 Si usas gnome 3 y has perdido la aceleración gráfica o ahora estás en gnome clásico, es que algo has hecho mal. Deberías seguir teniendo aceleración gráfica proporcionada por la gráfica de intel.


4º. Añade el repositorio para bumblebee, lo instalas y sigue todos los pasos necesarios:
  •  Para añadir el repositorio de bumblebee de overman79:
    $ sudo zypper ar -f http://download.opensuse.org/repositories/home:/Overman79/openSUSE_12.2/ repo-bumblebee
  • $ sudo zypper refresh
  • $ sudo zypper in VirtualGL bbswitch-kmp-desktop dkms-bbswitch bumblebee
    (los paquetes VirtualGL bbswitch-kmp-desktop son absolutamente imprescindibles para que bumblebee 3.0.1 funcione, así que no olvides incluirlos en la linea de más arriba).
  • A continuación te logueas como root con el comando su
  • Crea el grupo bumblebee: # groupadd bumblebee
  • Añade a tu usuario al grupo bumblebee: # usermod -A bumblebee tu_usuario
  • Elimina cualquier pasword de acceso al grupo bumblebee:
    # gpasswd -r bumblebee
  • A continuación, si vas a utilizar los drivers de nouveau, edita el archivo /etc/bumblebee/bumblebee.conf. Si vas a utilizar los drivers de nvidia, entonces no toques nada en ese archivo.
  • Añade bumblebee a tu lista de demonios para que arranque al inicio:
    # systemctl enable bumblebeed.service
  • Arranca el demonio bumblebee:# systemctl start bumblebeed.service
  • Reinicia: # reboot


 La instalación ha finalizado. Ahora, vamos a ver si funciona o no:

En el lado de intel:

 $ glxgears



En el lado de nvidia:
$ optirun glxgears




$ optirun glxspheres




Si te ha gustado el artículo, los "me gusta" y los +1 siempre son bien recibidos ;)

 

lunes, 17 de diciembre de 2012

17 cosas útiles que puedes hacer con ffmpeg y algunos conceptos de video digital

En este post os voy a enseñar (muy por encima) a utilizar ffmpeg para:
  1. transformar archivos multimedia
  2. editar las etiquetas id3 tags de archivos de audio
ffmpeg funciona en línea de comandos, y es el programa que usan entre bambalinas muchos de los programas con entorno gráfico utilizados para transformar archivos multimedia.

(El caracter $ antes de cada comando representa el prompt de la shell).

1. Para saber si tienes instalado ffmpeg:

$ dpkg -l ffmpeg | grep ii

Si lo tienes instalado, te devolverá algo como esto:
ii  ffmpeg       4:0.8.4-0ubuntu0.12.04.1 Multimedia player, server, encoder and transcoder (transitional package)

2. Si no lo tienes instalado, para instalarlo:

$ sudo apt-get install ffmpeg
Ahora debes fijarte bien si más abajo te dice algo sobre paquetes sugeridos o paquetes recomendados. Si te pone paquetes recomendados, te sugiero que copies los nombres de todos esos paquetes, canceles la instalación pulsando "n" y hagas $ sudo apt-get install ffmpeg (copia aquí los nombres de los paquetes recomendados).
Te aconsejo que te olvides de los paquetes sugeridos.

3. Sintaxis de ffmpeg:

ffmpeg funciona del siguiente modo: le pasamos un archivo de entrada que queremos transformar y unos modificadores de ese archivo de entrada, y un archivo de salida con una serie de modificadores de dicho archivo de salida.
$ ffmpeg [opciones_archivo_entrada] -i archivo_entrada [opciones_archivo_salida] archivo_salida

4. Tratamiento de archivos de video con ffmpeg:

4.1. Principales modificadores:


-b Nk ----> establece a N el bitrate (nº de kbps) en el archivo de salida:
$ ffmpeg -i archivo_entrada.avi -b 1600k archivo_salida.avi

-r N ----> establece a N el nº de frames por segundo en el archivo de salida:
$ ffmpeg -i archivo_entrada.flv -r 50 archivo_salida.flv

-s NxM ----> establece a NxM el tamaño de cada frame (resolución):
$ ffmpeg -i archivo_entrada.mp4 -s 800x600 archivo_salida.mp4

-aspect XU:UV ----> establece la relación de aspecto a XU:UV. Por ejemplo, -aspect 16:9:
$ ffmpeg -i archivo_entrada.avi -aspect 16:9 archivo_salida.avi

-acodec codecX ----> codificará el audio del video de salida utilizando el codec de audio "codecX"

-vcodec codecX ----> codificará la sucesión de imágenes del video de salida utilizando el codec de video "codecX"


4.2. Códecs, formatos y contenedores

4.2.1. FORMATOS

Para ver qué formatos de audio y de video admite ffmpeg, haz esto:
$ ffmpeg -formats
  • Primera columna (recuadro rojo) ----> ffmpeg puede decodificar (D) y/o codificar (E) dicho formato.
  • Segunda columna (recuadro azul) →nombre del formato.
  • Tecera columna (recuadro verde) →descripción del formato.


Algunos formatos de audio frecuentes: mp3, aac, m4a, ac3, ogg, FLAC.
  • mp3, aac, m4a son formatos privativos (NO LIBRES) de compresión con pérdida de calidad.
  • ogg es un formato libre de compresión con pérdida.
  • FLAC es un formato libre de compresión sin pérdida de calidad (sería como tener el disco original).

Algunos de los formatos de video más frecuentes son divx, xvid, h264, x264, mpeg4, vp8, theora y muchos más.

  • mpeg4 ----> admite aceleración por hardware.
  • h264 ----> admite aceleración por hardware y es de código cerrado.
  • x264 ----> igual que h264 pero libre.
  • theora ----> alta compresión en formato libre.
  • vp8 ----> alta calidad en formato libre.
  • divx ----> mejor que mpeg4. El audio se codifica en mp3. Código cerrado.
  • xvid ----> igual que divx pero libre.

 4.2.2. CÓDECS 

Podemos entender los codecs como un conjunto de programas o librerías que utiliza ffmpeg para codificar y decodificar archivos. Según el tipo de contenedor que utilicemos, tenemos que decirle o no a ffmpeg el codec o códecs que queremos que utilice para codificar el archivo de salida.
Para ver la lista de códecs disponibles en ffmpeg
 $ ffmpeg -codecs
No todos los códecs son iguales. En la primera columna, el comando anterior te devuelve para cada codec esta leyenda:
  • D….. = Decoding supported.
  • .E…. = Encoding supported.
  • ..V… = Video codec.
  • ...A… = Audio codec.
  • ....S… = Subtitle codec.
  • ..…S.. = Supports draw_horiz_band.
  • .…..D. = Supports direct rendering method 1.
  • .…...T = Supports weird frame truncation.


4.2.3. CONTENEDORES

Un archivo de video no es más que una sucesión de imágenes acompañadas de sonido. Obviamente, tenemos que meter todo eso en un contenedor.
  • avi ----> muy extendido por compatibilidad, aunque queda muy atrás en cuanto a calidad con respecto a mp4, mkv, o webm.
  • flv ----> contenedor típico para videos en flash.
  • mkv ----> admite FullHD y es de código abierto.
  • mp4 ----> admite FullHD.
  • webm ----> admite FullHD. Tiene como peculiaridad que sólo soporta ogg como fomato de audio y vp8 como formato de video, de manera que si transformas un video a webm, no es necesario decirle a ffmpeg qué codecs tiene que utilizar, puesto que él ya lo sabrá.

4.3. Cambiar de formato archivos de video

modificadores importantes en cambios de formato de video:
  • -vcodec codecX ----> codificará la sucesión de imágenes del video de salida utilizando el codec de video "codecX"
  • -acodec codecX ----> codificará el audio de salida utilizando el codec de audio "codecX".
  • -sameq ----> conserva en el archivo de salida la calidad del archivo de entrada a pesar del cambio de formato.
  • -pix_fmt rgbXYle ----> útil para garantizar que se conserva la calidad cuando cambiamos la resolución o la relación de aspecto (modificadores -s y -aspect). Este modificador, sustituye el formato del píxel original predeterminado, que contiene 16 bits de información, por otro que contiene XY bits de información.
Convierte un archivo de entrada en contenedor mp4 en un archivo de salida en contenedor avi con un bitrate de 870kbps y una resolución de 1024x768. Los formatos de salida son xvid para el video y mp3 para el audio debido a los códecs utilizados.
$ ffmpeg -i archivo_entrada.mp4 -b 870k -s 1024×764 -acodec libmp3lame -vcodec libxvid archivo_salida.avi

Convierte un video en contenedor mp4 en uno en contenedor mkv. Los formatos de audio y de video son ogg o x264. El archivo de salida conserva la calidad del original gracias al modificador -sameq.
$ ffmpeg -i archivo_entrada.mp4 -sameq -acodec libvorbis -vcodec libx264 archivo_salida.mkv

Transforma un archivo de entrada en contenedor mp4 en un archivo en contenedor webm. Los formatos de audio y de video son forzosamente ogg y vp8 ya que webm no soporta otros, de ahí que no haya necesidad de especificar los códecs a utilizar en  este caso. El archivo de salida conserva la calidad del original gracias al modificador -sameq.
$ ffmpeg -i archivo_entrada.mp4 -sameq archivo_salida.webm

Transforma un archivo en contenedor mp4 en otro en webm. Los formatos ya sabemos que son ogg (audio) y vp8 (video). Se conserva la calidad del archivo original gracias a los modificadores -sameq y -pix_fmt rgb48e que sustituye el formato del pixel original predeterminado con 16 bits de información, por otro que contiene 48 bits de información.
Por otro lado, se fuerza a que la resolución del video de salida sea de 192x1080 con una relación de aspecto de 16:9.
$ ffmpeg -i archivo_entrada.mp4 -sameq -pix_fmt rgb48le -s 1920×1080 -aspect 16:9 archivo_salida.webm

4.4. Extraer de un video una secuencia de imágenes

$ ffmpeg -i video_entrada -sameq -r 10 imagen%d.png
Extrae del video de entrada 10 imágenes por segundo y las almacena en el directorio actual con el nombre imagen1.png, imagen2.png, imagen3.png…… imagenN.png en orden ascendente.

4.5. Crear un video a partir de una secuencia de imágenes

$ ffmpeg -i imagen%d.png  -sameq video_salida.mkv
Crea un video en contenedor mkv partiendo de la secuencia de imágenes imagen1.png, imagen2.png, imagen3.png, ..... , imagenN.png

4.6. Quitar el sonido de un video

$ ffmpeg -i VideoEntrada -sameq -an VideoSalida

4.7. Extraer el sonido de un video

$ ffmpeg -i video_entrada -sameq audio_video.flac
Extrae el sonido del video de entrada sin pérdida de  calidad y lo almacena en el archivo audio_video.flac (recuerda que el formato flac es un algoritmo de compresión de audio sin pérdida).

$ ffmpeg -i video_entrada -ab 192k audio_video.ogg
Extrae el sonido del video de entrada con pérdida de calidad. Y lo almacen en el archivo audio_video.ogg, en el que el bitrate de audio será de 192kbps.


4.8. Insertar nuevo audio en un archivo de video (necesitas que el archivo de video NO tenga sonido)

$ ffmpeg -i archivo_audio.mp3 -i video_sin_audio.avi -sameq nuevo_video+audio.avi


4.9. Unir varios videos en uno (necesitas tener dichos videos en mpeg)

$cat video1.mpeg video2.mpeg video3.mpeg videoN.mpeg >video_final.mpeg

4.10. Acortar un video

Genera un video de salida a partir del segundo 132 del video de entrada:
$ ffmpeg -i video_entrada -sameq -ss 132 video_salida

Genera un video de salida que dure 10 minutos justos.
$ ffmpeg -i VideoOriginal -sameq -t 600 VideoFinal


5. Tratamiento de archivos de audio con ffmpeg

5.1. Ver las etiquetas Id3, o los comentarios de un archivo de audio

$ ffmpeg -i audio_entrada


Si quieres enviar dicha información a una tubería para ser tratada por un segundo comando:
$ ffmpeg -i audio_entrada 2>&1 |  comando2
Fíjate que redirijo la salida de error estándar hacia el descriptor de la salida estándar del comando. Esto es así porque al no especificar ningún archivo de salida, resulta que la salida de ffmpeg se envía a la salida de error estándar. De no poner ese 2>&1 no iría ninguna información al comando 2 de la tubería.

Ejemplo:
$ ffmpeg -i vnv_nation-lightwave.ogg 2>&1 | tr [:upper:] [:lower:] | grep artist | awk -F": " '{ print $2 }'
Esto devuelve: vnv nation

$ ffmpeg -i vnv_nation-lightwave.ogg | tr [:upper:] [:lower:] | grep artist | awk -F": " '{ print $2 }'
Esto devuelve por pantalla lo mismo que $ffmpeg -i vnv_nation-lightwave.ogg y eso es porque la salida de ffmpeg no ha ido a la tubería.


5.2. Conversión a otros formatos de audio


Modificadores más importantes:

  • -acodec códecX ----> igual que en vídeo.
  • -aq N ----> Audio quality. N es un número de 1 a 9. 1 para que el archivo de audio de salida tenga la calidad más baja y 9 para la más alta. Con un 5 el archivo de salida tendrá un bitrate de unos 160kbps y con un 6, unos 192kbps.

Si quiero pasar de formato flac a ogg con un bitrate de 192 kbps para el archivo de salida:
$ ffmpeg -i audio_entrada.flac -acodec libvorbis -aq 6 audio_salida.ogg

Si quiero generar un archivo en formato aac con un bitrate de 192kbps partiendo de un archivo original en formato flac:
$ ffmpeg -i audio_entrada.flac -acodec libvo_aacenc -aq 6 audio_salida.aac

Si quiero generar un archivo en formato mp3 con un bitrate de unos 224 kbps partiendo de un archivo en formato wav:
$ ffmpeg -i audio_entrada.wav -acodec libmp3lame -aq 7 audio_salida.mp3

Si quiero generar un archivo en formato flac partiendo de un archivo en formato wav:
$ ffmpeg -i audio_entrada.wav -sameq -acodec flac audio_salida.flac


5.3. Escribir / modificar las etiquetas id3 de los archivos de audio

modificadores importantes:
  • -map_metadata -1 ----> borras las etiquetas id3 del archivo de entrada, o generas un archivo de salida igual que el de entrada sin etiquetas id3.
  • -metadata campo="nombre_del_campo" ----> generas un archivo de salida con etiqueta id3 con un campo y su valor. ejemplo: -metadata artist="the rolling stones"

Para borrar todas las etiquetas id3 del archivo de entrada. Genero un archivo de salida igual que el de entrada, pero sin etiquetas id3 o comentarios.

$ ffmpeg -i audio_entrada.aac -map_metadata -1audio_salida.aac

Las etiquetas id3, se conservan por defecto, incluso al cambiar de formato un archivo. Para pasar de mp3 a ogg haciendo que el archivo de salida conserve las etiquetas id3 del archivo original:
$ ffmpeg -i audio_entrada.mp3 -acodec libvorbis -aq 6 audio_salida.ogg

Para incrustar etiquetas id3 en un archivo de audio, utilizamos -metadata de forma repetitiva, una vez por cada campo id3 que queremos incrustar en el archivo. Ejemplo, supongamos:
  • grupo música----> vnv nation
  • álbum ----> matter and form
  • título ----> lightwave
  • número de pista ----> 10
  • año del álbum ----> 2005
  • género ----> electrodark * (otros pondrían future pop, según como clasifiques).
  • discos que forman el álbum ----> 1 (luego es el disco 1 de 1)
$ ffmpeg -i audio_entrada.flac -acodec libvorbis -aq 6 -metadata title="lightwave" -metadata artist="vnv nation" -metada album_artist="vnv nation" -metadata album="matter and form" -metadata track="10" -metadata date="2012" -metadata genre="electrodark" -metadata disc="1/1" audio_salida.ogg


Bastante largo, y siento haberos soltado este turrón, pero es que la página de man de ffmpeg parece una enciclopedia, sólo que sin fotos xDDD.
Éstas son sólo las opciones más importantes, igual que en el último ejemplo sólo he puesto algunas de las etiquetas id3 que soporta ffmpeg, pero de verdad que hay mucho más. Os aseguro que más resumido no se puede si es que se quiere hacer un buen manual ;)

Si te ha gustado mi post, agradecer no cuesta nada, dame un "me gusta", un +1 o un lo que sea en los botones que tienes más abajo. Gracias ;)

PD: en unos dias pondré un script para pasar discos e incluso colecciones enteras a ogg, editando incluso las etiquetas id3 de los archivos