Codificación de video optima para la XBOX 360

Supongo que esta mas que comentado y la mayoría de nosotros utilizamos scripts o aplicaciones para codificar video para la X360, el caso es que estoy intentado buscar una configuración óptima para videos en formato HD (720p y 1080p), me gustaría buscar colaboradores para entre todos pulir un script, sobre todo pensando en nuevos usuarios. Tengo un paquete para ubuntu y distros compatibles, el resto puede descomprimirlo y ejecutar el script libremente.

Lo primero es instalar HandBrake:
Para usuarios de ubuntu, desde terminal:

sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo apt-get update
sudo apt-get install handbrake-cli handbrake-gtk

El paquete lo podéis descargar en este enlace: https://dl.dropbox.com/s/4kalac6zfwyav8c/vx360-12.359-i386.deb?dl=1
La entrada la podéis ver en este enlace: http://www.lincudo.org.es/2012/12/xbox-360-codifica-tus-videos-facilmente.html

*Se busca colaboradores para intentar mejorar y pulir el script, cualquier ayuda sera bien recibida. [sonrisa]
Yo me hice un script muy sencillo para convertir un MKV a un MP4 compatible con la Xbox 360 (audio stereo, porque 5.1 no es compatible con la 360). Básicamente es esto:

ffmpeg -i "fichero.mkv" -map 0:0 -map 0:1 -vcodec copy -acodec libfaac -ac 2 "fichero.mp4"


No recomprime el vídeo, sólo el audio, por lo que el proceso dura 1-2 minutos (dependiendo de la potencia del ordenador). Antes tenía otro script que prácticamente lo mismo, pero en varios pasos: extraía el vídeo, extraía el audio, recodificaba el audio, y lo montaba todo en un MP4. Pero esta solución es un único paso con el ffmpeg por lo que es todavía más rápida. El script desarrollado es el siguiente:


#! /bin/bash
if [ ! -f /usr/bin/ffmpeg ]; then
        echo "Asegúrese de que 'ffmpeg' está instalado en el sistema"
        exit
fi
dir=`dirname "$1"`
base=`basename "$1"`
in="$dir/$base"
if [ ! -f "$in" ]; then
        echo "ERROR: No existe el archivo '$base'"
        exit
fi
if [ $(echo "$in" | grep '.mkv$' | wc -l) -ne 1 ]; then
        echo "ERROR: El archivo no es un Matroska '$base'"
        exit
fi
name=`echo $base | sed s/.mkv$//g`
out="$dir/$name.mp4"
ffmpeg -i "$in" -map 0:0 -map 0:1 -vcodec copy -acodec libfaac -ac 2 "$out"
exit
Gracias xzibit, voy a echarle un vistazo a tu script.

copia y pega del script vx360. Admite cualquier archivo de video, mkv, avi, mov.

#!/bin/bash

# vx360

# install handbrake
# sudo add-apt-repository ppa:stebbins/handbrake-releases
# sudo apt-get update
# sudo apt-get install handbrake-cli handbrake-gtk

if [ -f ~/.config/user-dirs.dirs ]; then
. ~/.config/user-dirs.dirs
fi

opcion=`/usr/bin/zenity --title="vx360" --width=400 --height=300 \
                         --text="Configuración de vídeo" \
                         --list --column="Seleccionar" --column="Formato" \
                         --radiolist FALSE "1080p" FALSE "720p" `

INPUT=`zenity --file-selection --title="Select the file to Convert" --save --filename="$XDG_DESKTOP_DIR/"`


if [ "$INPUT" = "" ]; then
    exit 0
fi

FILENAME=`basename "$INPUT" | tr ' ' '_'`
mv "$INPUT" `echo "$INPUT" | tr ' ' '_'`

FILE2=`echo $INPUT | tr ' ' '_'`
OUTPUT=`echo $FILENAME | awk '{print tolower ($0)}' | sed 's/ //g;s/_-_/-/g;s/#//g;s/.mpg//g;s/.MPG//g;s/.mpeg//g;s/.MPEG//g;s/.mp4//g;s/.MP4//g;s/.avi//g;s/.AVI//g;s/.mov//g;s/.MOV//g;s/.mkv//g;s/.MKV//g'`

if [ $? -eq 0 ]
then
        IFS="|"
        for opcion in $opcion
        do
               if [ "$opcion" = "1080p" ];
                     then

gnome-terminal -t "vx360 - 1080p" --hide-menubar --geometry=80x24+200+200 -e "HandBrakeCLI -e x264 -b 4000 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 1920 -m -x rc-lookahead=50:ref=2:subme=9:trellis=0:analyse=all:direct=auto:b-adapt=0:me=umh:8x8dct=0:deblock=-2,-1:no-fast-pskip=1 -i "$FILE2" -o "$XDG_DESKTOP_DIR/$OUTPUT-1080p-x360.m4v" --two-pass --turbo"

               elif [ "$opcion" = "720p" ]
                     then

gnome-terminal -t "vx360 - 720p" --hide-menubar --geometry=80x24+200+200 -e "HandBrakeCLI -e x264 -b 2000 -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 -f mp4 -I -X 1280 -m -x rc-lookahead=50:ref=2:subme=9:trellis=0:analyse=all:direct=auto:b-adapt=0:me=umh:8x8dct=0:deblock=-2,-1:no-fast-pskip=1 -i "$FILE2" -o "$XDG_DESKTOP_DIR/$OUTPUT-720p-x360.m4v" --two-pass --turbo"

               fi
        done

        IFS=""
notify-send --icon=vx360 "Encoding Completed" "$OUTPUT-720p-x360.m4v"
canberra-gtk-play --file="/usr/share/vx360/magnet.ogg" &

fi


*me interesa poder hacer pruebas con el bitrate para buscar los limites de compatibilidad del reproductor de la x360, esta semana me pongo al tajo, si alguien se anima puede dejar sus propuestas, los valores actuales son: 720p=2000, 1080p=4000.
Todo esto esta mas que respondido en los foros de handbrake.
A mi personalmente me parece que recodificar un vídeo (con todo lo que conlleva) de forma sistemática es una mala idea. La 360 reproduce H264, que es el que tienen el 90% de los vídeos HD que hay hoy en día, así que lo ideal sería cambiar el contenedor, o como mucho recodificar el audio, pero recodificar un vídeo desde luego que no, ya que es un proceso bastante largo y pesado, y que encima vamos a meter una pérdida de calidad al vídeo original.
4 respuestas