Mucha gente ha ido acumulando archivos de video antiguos en un formato antiguo. Para esto quizás te interese transformarlas a un formato más actual compatible con el chromecast de tal forma que estén almacenadas en otro formato con el que no haga falta transcodificarlo de nuevo.
Si eres un peliculero con chromecast de habrás dado cuenta de que el chromecast no es compatible con el contenedor «avi» ni con el codec «divx» o «xvid» de hecho los codecs compatibles con el chromecast son «h264», «h265» y «vp8» (el formato de vídeo de google).
Esta es otra razón más para transcodificar toda nuestra biblioteca de vídeos de un plumazo y sin tener que estar pendiente. Para he realizado un script para linux que agiliza la tarea.
Instalar opencl
Antes de comentar. decir que nos vamos a centrar en procesadores gráficos intel compatibles con «opencl»
intalando opencl
sudo apt install libvdpau-va-gl1 sudo apt install ocl-icd-libopencl1 sudo apt install opencl-headers sudo apt install clinfo
la implementación libre de opencl para intel se llama beignet
sudo apt install beignet
Ejercutar ffmpeg para transcodificar los videos
Para transcodificar los videos he realizado el siguiente script cuya función es sleccionar todos los videos acabados en «.avi» y los transforma a «.mkv». Bajo mi experiencia el contenedor mkv se comporta mejor en streaming de video para el envío de contenidos tanto en LAN como a través de Internet.
vi transcodificar.sh
Copiamos y pegamos el siguiente script en su interior.
#!/bin/bash cd [carpeta donde se encuentre los archivos avi] ext=".mkv" fmt=".avi" for a in *$fmt; do echo 'convirtiendo '${a//$fmt/$ext}; ffmpeg -hwaccel auto -i "$a" -vcodec h264 -x264opts opencl -x264-params lossless -acodec copy "${a//$fmt/$ext}" done
Le damos permisos de ejecución y lo ejecutamos
chmod +x transcodificar.sh ./transcodificar.sh
Explicación
El bucle «for» busca todos los archivos con la extensión «avi» en la carpeta en la que esté situado y reliza las acciones comprendidas entre las palabras «for» y «done»
- ffmpeg es el nombre del programa
- -hwaccel indica que se va a intentar utilizar la tarjeta gráfica para la transcodificación
- auto -i «a» indica que va a intentar descubrir el archivo de entrada de video por si mismo
- -vcodec h264 -x264opts opencl indica que se va a transcodificar utilizando x264 al codec h264
- -x264-params lossless indica que se va a realizar una transcodificación lenta, y sin perdida de calidad
- -acodec copy inidica que va a copiar la pista de sonido. no la modifica
- «${a//$fmt/$ext}» indica el nombre del fichero de salida.
Si necesitas más información en inglés, aquí está la wiki de ffmpeg para que puedas personalizar los comandos.
https://trac.ffmpeg.org/wiki/Encode/H.264
Si sigue dando problemas
Con el siguiente script se soluciona:
Instalamos otro programa que hace que busque la librería opencl
sudo apt install ocl-icd-opencl-dev
Un saludo.
sudo apt-get install i965-va-driver sudo add-apt-repository ppa:nilarimogard/webupd8 sudo apt-get update sudo apt-get install libvdpau-va-gl1 cd /usr/lib/x86_64-linux-gnu/vdpau/ sudo ln -s libvdpau_va_gl.so.1 libvdpau_i965.so.1 sudo apt-get install libvdpau1 vdpau-va-driver
Fuente: https://gist.github.com/wellington1993/fe7d60e2684259f1b56f51891675f43a
Nadie es perfecto
Si tienes alguna sugerencia o quieres aportar algo no dudes en utilizar los comentarios.