Ir al contenido

Recommended Posts

scaled_full_0371042d189217288e9f.jpg

 

¿Sabían que desde la versión 14.0 Firefox para GNU/Linux es capaz de utilizar Gstreamer para reproducir cualquier formato de Audio y vídeo con el que se encuentre en la web?
Así, aprovechando las ventajas de este proyecto, Firefox sería capaz de reproducir contenido bajo codecs en un principio vetados para el navegador de Mozilla, como pueden ser los privativos H.264, Mp3 o Acc.

Pero esto es algo que hasta ahora la fundación Mozilla y la mayoría de distribuciones no activan cuando compilan el navegador, por ahora la reproducción de contenidos bajo codecs privativos está disponible sólo para la versión Mobile del navegador.
Para sistemas de escritorio tendremos que compilar por nuestra cuenta si queremos utilizar gstreamer para reproducir contenido de este tipo (Como pueden ser los vídeos de Vimeo en HTML5).

NOTA Cumpliendo con las dependencias necesarias para compilar Firefox, el proceso es bastante sencillo, pero compilarlo puede llevar mucho tiempo, no es para hacerlo en 5 minutos, una vez configurado, tendremos que esperar un buen rato hasta que termine de compilar.

NOTA2 Quien dice Firefox, dice cualquiera de sus forks, el procedimiento no varía, la única diferencia sería que tendríamos que utilizar el código fuente del fork en lugar del código oficial de Mozilla



Requisitos Previos

Antes de proceder a descargar el código fuente de firefox, necesitamos algunas dependencias para poder compilar el navegador en nuestro equipo. Para hacer esto hay varios métodos, los propios de cada distribución y un script universal que provee la propia Mozilla:


Script Universal

El script se llama Bootstrap y debería permitirnos instalar todas las dependencias para compilar firefox en nuestra distribución de manera sencilla. Tan sólo debemos descargarlo

wget https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py

Y ejecutarlo como root para que empiece a trabajar

python bootstrap.py

Dependiendo de cuál sea nuestra distribución, los pasos a seguir serán diferentes, cada unadistro utilizará unas herramientas u otras para instalar las dependencias, pero el resultado será el mismo, la instalación de todo lo necesario para proceder a compilar Firefox



Debian

Lo más útil en el caso de las Debian-Based es utilizar Aptitude Build-dep y dejar que el sistema haga el trabajo

aptitude build-dep iceweasel
aptitude install yasm libmozjs-dev

(Para otras deb-based, como Mint o SolydXK)

aptitude build-dep firefox
aptitude install yasm libmozjs-dev

(O Trisquel)

aptitude build-dep abrowser
aptitude install yasm libmozjs-dev

La lista completa de paquetes, en caso de instalarlos a mano sería la siguiente:

aptitude install build-essential zip unxip patch libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev libidl-dev mesa-common-dev autoconf2.13 yasm libmozjs-dev libgtk2.0-dev libdbus-1-dev libdbus-glib-1-dev python-dev

A la hora de descargar el código fuente, podremos optar entre Mercurial o por descargar el código directamente de la FTP de Mozilla. En caso de optar por el primeros, obviamente, tendremos que tenerlo instaldo como cualquier otra dependencia antes de proceder con la descarga.



OpenSUSE

 

zypper install make cvs zip gcc-c++ gtk2-devel xorg-x11-libXt-devel libidl-devel freetype2-devel fontconfig-devel pkg-config dbus-1-glib-devel mesa-devel libcurl-devel libnotify-devel alsa-devel autoconf213 libiw-devel yasm dbus-1-glib-devel gtk2-devel

A la hora de descargar el código fuente, podremos optar entre Mercurial o por descargar el código directamente de la FTP de Mozilla. En caso de optar por el primeros, obviamente, tendremos que tenerlo instaldo como cualquier otra dependencia antes de proceder con la descarga.

NOTA Para OpenSuse 11.2 (y anteriores) será necesario compilar manualmente yasm

wget http://www.tortall.net/projects/yasm/releases/yasm-1.0.1.tar.gz
tar -xzf yasm-1.0.1.tar.gz
cd yasm-1.0.1/
./configure && make && sudo make install

NOTA Para OpenSUSE 11.1 y anteriores será necesario inst6alar manualmente autoconf 2.13

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz
tar -xvzf autoconf-2.13.tar.gz
cd autoconf-2.13/
./configure --program-suffix=2.13
make
sudo make install

 



Fedora/Red Hat/CentOS

 

sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'
sudo yum install autoconf213 glibc-static libstdc++-static yasm wireless-tools-devel mesa-libGL-devel alsa-lib-devel libXt-devel

A la hora de descargar el código fuente, podremos optar entre Mercurial o por descargar el código directamente de la FTP de Mozilla. En caso de optar por el primeros, obviamente, tendremos que tenerlo instaldo como cualquier otra dependencia antes de proceder con la descarga.



Arch Linux

 

pacman -Syu base-devel zip unzip freetype2 fontconfig pkg-config gtk2 dbus-glib iw libidl2 python2 alsa-lib curl libnotify libxt mesa autoconf2.13 yasm wireless_tools

A la hora de descargar el código fuente, podremos optar entre Mercurial o por descargar el código directamente de la FTP de Mozilla. En caso de optar por el primeros, obviamente, tendremos que tenerlo instaldo como cualquier otra dependencia antes de proceder con la descarga.

NOTA Para compilar Firefox hay que utilizar Python 2, algo que debemos tener en cuanta para no cometer el error de usar Python 3 que es el que Arch utiliza por defecto.
Hay varias maneras de hacerlo, como es ejecutar:

mk_add_options PYTHON=/usr/bin/python2

O anteponer un python 2 en el último paso de compilación (Explicado un par de secciones más abajo)

python2 ./mach build

 





Descargando el código fuente

Como ya mencionamos antes, podemos obtener el código fuente de distintas maneras utilizando herramientas como Mercurial, descargando el código directamente desde la FTP de Mozilla o utilizando las herramientas propias de nuestra distribución:

Debian (Iceweasel)

En Debian tenemos la posibilidad de compilar diferentes versiones de Iceweasel, localizaciones incluidas, siempre que tengamos los Repositorios de Mozilla Debian correspondientes a dicha versión

Release (Repositorio Experimental)

echo 'deb http://ftp.debian.org/debian experimental main' /etc/apt/sources.list.d/iceweasel-experimental.list
echo 'deb-src http://ftp.debian.org/debian experimental main' /etc/apt/sources.list.d/iceweasel-experimental.list

Beta

echo 'deb http://mozilla.debian.net/ experimental iceweasel-beta' /etc/apt/sources.list.d/iceweasel-beta.list
echo 'deb-src http://mozilla.debian.net/ experimental iceweasel-beta' /etc/apt/sources.list.d/iceweasel-beta.list

Aurora

echo 'deb http://mozilla.debian.net/ experimental iceweasel-aurora' /etc/apt/sources.list.d/iceweasel-aurora.list
echo 'deb-src http://mozilla.debian.net/ experimental iceweasel-aurora' /etc/apt/sources.list.d/iceweasel-aurora.list

Obteniendo el código fuente

En cualquiera de los casos anteriores, ya que todos son repos experimentales:

aptitude update
apt-get source -t experimental iceweasel

Con esto se descargará el código fuente de iceweasel y todas las localizaciones disponibles para esa versión.


NOTA en caso de querer mantener estos repositorios para posteriores actualizaciones de Iceweasel, conviene que ajustemos las preferencias con Apt_pinning



Otras Debian-Based (Firefox/abrowser)

Siguiendo el mismo procedimiento que para iceweasel, pero adaptando la orden al nombre del paquete según la distribución:

Firefox

aptitude update
apt-get source Firefox

Abrowser

aptitude update
apt-get source abrowser

Con esto se descargará el código fuente de Firefox/Abrowser y todas las localizaciones disponibles para esa versión.



Fedora/Red Hat/CentOS


Necesitaremos Yum utils y hacer algún cambio a los repositorios

yum install yum-utils

Debemos crear un archivo en /etc/yum.repos.d con el nombre que queramos terminado en .list, por ejemplo source-repos.list, que contenga la siguiente información dependiendo de qué distribución estmos utilizando


Fedora


Red Hat


CentOS


Una vez añadido el repo, podremos utilizar yumdownloader --source para obtener el código fuente:

yumdownloader --source firefox

 



Mercurial

Nightly

hg clone http://hg.mozilla.org/mozilla-central/ src
cd src

Aurora

hg clone http://hg.mozilla.org/releases/mozilla-aurora/ aurora-src
cd aurora-src

Beta

hg clone http://hg.mozilla.org/releases/mozilla-beta/ beta-src
cd beta-src

Release

hg clone http://hg.mozilla.org/releases/mozilla-release release-src
cd release-src

Si optamos por alguna localización concreta, podemos obtenerla así (Sustituyendo el ISOcode por el correspondiente, es-ES, pt-PT, en-UK, etc)

hg clone http://hg.mozilla.org/l10n-central/ ISO-code ISOcode
cd ISOcode

 



Manualmente desde la FTP de Mozilla


Es una opción sin misterio, en la dirección:

ftp.mozilla.org/pub/mozilla.org/firefox/releases/RELEASE/source/

Sustituyendo RELEASE por la versión de firefox que queremos descargar, encontraremos un comprimido .ta.bz2 con el código fuente correspondiente.

Sólo tendremos que descargarlo y descomprimirlo

 





Configurando las opciones de compilado

De entrada no haría falta configurar nada para compilar el código fuente de Firefox, pero siempre hay cosas que podemos modificar o meojrar.
En este caso concreto nos interesa compilarlo con --enable-gstreamer para que sirva a nuestros propósitos.

El archivo que debemos crear y donde añadiremos las opciones de compilación para Firefox/Iceweasel/abrowser es .mozconfig y debe estar en la carpeta que contiene el código fuente.

Las opciones de compilación se añaden de la siguiente manera:

ac_add_options --OPCION-DESEADA

o

mk_add_options --OPCION-DE-COMPILADO-DESEADA

Para compilar Firefox con soporte para gstreamer, que es lo que nos interesa en este caso, tendremos que añadir:

ac_add_options --enable-gstreamer

Y Debemos añadir algunas opciones importantes para poder crear luego un .tar.bz2 con el resultado

mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --enable-application=browser

También podemos añadir opciones de optimización:

ac_add_options --enable-optimize=-O2

Y también utilizar varios hilos al compilar:

mk_add_options MOZ_MAKE_FLAGS="-j4"

El valor que acompaña a J dependerá de nuestro procesador, siendo el valor aconsejado (a grosso modo) el número de núcleos de nuestro procesador, "-j2" para 2 núcleos, "-j4" para 4 núcleos, "-j8" para 8 núcleos

Un archivo .mozconfig básico para lo que nos interesa en este tutorial contendría lo siguiente

 

#Archivo de configuracion basica para firefox con soporte gstreamer
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --enable-application=browser
ac_add_options --enable-gstreamer
ac_add_options --enable-optimize=-O2

 



Podemos consultar las diferentes opciones y procedimientos de manera más detallada en:
https://developer.mozilla.org/en-US/docs/Configuring_Build_Options





Compilando

Una vez tenemos todas las opciones de compilacion dentro de .mozzconfig y las dependencias instaladas procedemos a compilar firefox de la siguiente manera:

./mach build

O también podemos usar

make -f client.mk build

Y nos vamos a tomar un café, a pasear al perro, nos leemos el diccionario 3 veces o lo que nos apetezca para matar el tiempo miestras termina :P/>

NOTA

Building can take a significant amount of time, depending on your system, OS and chosen build options. Linux builds on a fast box may take under 15 minutes, but Windows builds on a slow box may take several hours

:silba:





Probando

Una vez termine de compilarse Firefox/Iceweasel/Abrowser, encontraremos el ejecutable "firefox" dentro de la carpeta donde hemos compilado el código fuente, en la ruta:

obj-architecture-Sys-linux-gnu/dist/bin/

Por ejemplo, en el caso de un sistema GNU/Linux x86_64, la ruta sería:

obj-x86_64-unknown-linux-gnu/dist/bin

NOTA En caso de que de entrada gstreamer no esté habilitado, poner a "true" la opción "media.gstreamer.enabled" accediendo a "about:config"





Empaquetar

Gracias a las opciones que añadimos antes en el .mozconfig, podremos enpaquetar el resultado de nuestro trabajo en un práctico paquete tar.bz2
Para eso debemos situarnos en el subdirectorio ff-opt e iniciar el proceso de empaquetado

cd ff-opt
make package

El resultado aparecerá en ff-opt/dist y será un comprimido con nuestro firefox que sólo tendremos que descomprimir y usar






Actualizar/Compilar nuevas versiones

Mediante mercurial, podemos actualizar el código fuente para volver a compilar firefox aprovechando el trabajo ya realizado ejecutando el siguiente comando:
 

hg pull -u

Y volveremos a ejectar:
 

./mach build

Que en esta ocasión se centrará en compilar únicamente el código que ha cambiado






Para más detalles sobre el proceso podemos consultar la documentación de Mozilla

https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions




EDITO

Una pequeña muestra del resultado después de compilar la versión 20 de iceweasel siguiendo este método.

EDITO 2

Para quien no tenga ganas de compilar, pero sí de probarlo:

Firefox 21 alpha2 x86_64 (Gstreamer enabled).tar.bz2

Compartir este post


Enlace al post
Compartir en otros sitios

En páginas que hagan uso de la imitación de flash de M$ directamente no entro, por lo que ni me lo había planteado :P

 

La verdad es que no tengo idea de cómo funcionarán ese tipo de reproductores multimedia, sería cuestión de probar ¿Algún ejemplo de página que lo use?

Compartir este post


Enlace al post
Compartir en otros sitios

Pues lo mismo que en el caso de kickstarter:
 
Sin Gstreamer
 
32795338.png
 
Con Gstreamer
 
67776440.png
 
 
Eso sí, no me he topado con silverlight por ningún lado, el de la captura es un vídeo MP4 codificado bajo H264 con el que gstreamer no tiene problema.
 

<div class="module videos-destacados">
	        <h2>MUNDO HACKER</h2>
	        


<div id="ctl00_content_zona1_player_MH_PnlPlayer">
	

        <video id="video" autoplay="true" controls="controls" height="390" width="620">
	        <source src="http://zonapublica.blob.core.windows.net/vodch01/CABECERA_MUNDO_HACKER.mp4" type="video/mp4">
	        Tu navegador no soporta HTML 5
        </video>

</div>

 
EDITO
 
Aunque sí estoy viendo algo diferente. Antes la lista de vídeos de Discovery Max me salía en flash, pero ahora que he entrado con gstreamer habilitado aparecen como vídeos mp4.
Supongo que en función de las capacidades del navegador tienen preparado para que salte un reproductor u otro

Compartir este post


Enlace al post
Compartir en otros sitios

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder en este tema...

×   Has incluido contenido con formato.   Eliminar formato

  Sólo se permiten 75 emoticonos como máximo.

×   Tu enlace ha sido insertado automáticamente.   Deshacer y mostrar como enlace

×   Su contenido anterior ha sido restaurado.   Limpiar editor

×   No puedes pegar imágenes directamente. Súbelas a algún hosting de imágenes y pega la dirección URL


×
×
  • Crear Nuevo...