18 comentarios

Codificar ProRes en Windows gracias a FFmbc

Si había una cosa que me fastidiaba era que me pidieran un ProRes. Y por una sencilla razón, tenía que decirle al cliente que lo sentía pero que no podía satisfacer su petición. Como bien saben ProRes es el códec intermediate de Apple introducido con Final Cut Pro 6 en 2007, y es muy popular, sobre todo gracias a la penetración de Final Cut Pro en el sector. En un primer momento solo estaba disponible con la instalación de Final Cut Pro, pero posteriormente fue incluido en QuickTime 7.6, aunque en Windows solo disponible en modo lectura (decoding) imposibilitando su uso como códec de exportación.

Se dan así situaciones rocambolescas como que alguna administración pública pide el material en ProRes cuando es un códec propietario y solo accesible de forma gratuita desde una única plataforma. Aunque Apple licenció a varias empresas como Telestream la codificación de ProRes en Windows, siguen siendo soluciones propietarias no adecuadas para el usuario que solo de vez en cuando lo necesita. Hasta ahora, ya que gracias a la herramienta de código abierto FFmbc, un fork (desarrollo derivado) de FFmpeg orientado al entorno broadcast, es posible la codificación gratuita a ProRes desde Windows.

De FFmpeg conocía su aplicación en la conversión de codecs, por lo leído en comentarios de foros y blogs, pero al ser su uso desde la linea de comandos no le había prestado atención, más cuando Adobe tiene buenas herramientas de codificación. Ya en los foros se comentaba que FFmpeg incluía soporte para ProRes desde finales de 2011, pero lo que me animo a probar fue una entrada en el blog de Angelo Lorenzo, una entrada de título llamativo Encoding Apple ProRes on a Windows PC with Redcine X Pro and FFMPEG. De su lectura saque una primera conclusión: ¡¡Uff… esto es complicado!!  🙁  Muchos pasos, que si linea de comandos, que si Python, que si lo otro…, no lo vi claro. Y ni idea de como usar FFmbc, pero bueno, continué buscando en Google y al final encontré un tutorial en YouTube sobre como usar FFmbc para pasar de MTS a MP4, así que me baje el binario de FFmbc desde su pagina web y al final funcionó, de forma un tanto tosca, pues hay que poner el binario en el mismo directorio, pero el resultado fue exitoso. Aunque pasar de MTS a MP4 tiene cierta utilidad, no era lo que estaba buscando, así que seguí buscando un script para ProRes. Después de varios intentos (o copiar y pegar) infructuosos, al fin dí con uno que funcionó, ¡mi primer ProRes en Windows!

¡¡FFmbc en acción!!

Claro que solo había copiado una linea de texto del comentario de un foro y pegado en un fichero de texto. Al ver el ProRes por segunda vez me di cuenta que no tenia audio (vaya…), en el fondo no sabia bien que estaba haciendo, pero era un comienzo. Gracias a las busquedas en Google y a varios usuarios en el foro de LightWorks, ya puedo decir que entiendo como funciona el proceso e incluso como automatizarlo. Dejemonos de literatura y vayamos al grano:

FFmbc (al igual que FFmpeg) trabaja desde la linea de comandos de Windows (en este caso), según una lista de variables u opciones. En la web del proyecto se encuentra compilado para Windows en versiones de 32 y 64 bits. Su sintaxis genérica sería la siguiente:

ffmbc[[infile options][‘-i’ infile]]… {[outfile options] outfile}…

Así por ejemplo si solo queremos cambiar un fichero de vídeo H.264, desde el contenedor  MTS a MP4, la siguiente linea bastará: «ffmbc -i input.mts -vcodec copy -acodec copy output.mp4». Aquí se indica que del fichero input.mts se copiaran tanto sus datos de vídeo (vcodec) como de audio (acodec) en el fichero resultante output.mp4 (esto en teoría pues en la práctica no se copia el audio, no sé porque). Como comenté, la forma usual sería usarlo desde la linea de comandos, pero es más cómodo usar un fichero bat (un fichero de texto txt renombrado a bat) en una carpeta junto con el binario (FFmbc.exe) y el fichero MTS (ver figura), para ello crear un fichero de texto y escribir la siguiente linea: «ffmbc -i input.mts -vcodec copy -acodec aac -strict experimental -ab 512k output.mp4» (sin las comillas, y cambiando input.mts por el nombre real del fichero), guardar y renombrar la extensión a bat. Ejecutar el nuevo fichero bat, esperar hasta que acabe el proceso (verá como se abre una ventana de la consola de Windows) y ya tiene Vd el fichero h.264 en contenedor mp4 y ahora si con audio. Fácil, ¿no? Una relación completa de las opciones a usar con FFmbc se encuentra en esta web.

La forma mas sencilla de usar FFmbc: colocar el binario, el fichero bat y los ficheros de vídeo en una carpeta

Más cómodo todavía para usar FFmbc es guardar el binario en una carpeta (por ejemplo en Archivos de programa, pero vale cualquiera) y crear una variable de sistema con su ruta. Para ello vamos a Sistema> Configuración avanzada del sistema>variables de entorno, aquí pulsamos en la variable del sistema path (como en la figura), le damos a editar y escribimos al final la ruta donde se encuentre FFmbc.exe: escribimos ; (punto y coma, para separar los items) y la ruta, en mi caso C:\Program Files\FFmbc. De este modo nos olvidamos del binario y solo tenemos que trabajar con el fichero bat.

Modificando la variable de entorno path simplificamos el proceso

Bueno, ¿y el ProRes? Esta es la sintaxis de base para codificar a ProRes:

ffmbc -i input.ext -vcodec prores -profile hq -pix_fmt yuv422p10 -acodec pcm_s16le output.mov

Esta linea nos creará un ProRes 422 (HQ) con audio PCM a 16 bits. El pero es que no es un proceso muy rápido, pero se puede acelerar si usamos la opción -threads para que use un proceso multihilo. En mi caso con un Quadcore de hace cinco años con cuatro hilos se acelero el proceso a la mitad.

Si se requiere convertir varios ficheros se puede crear un bat que permita su automatización:

DO (
md mts
md mov
)

for %%f IN (*.mts) DO (
ffmbc -threads 4 -i %%f -vcodec prores -profile hq -pix_fmt yuv422p10 -acodec pcm_s16le %%~nf.mov
)

DO (
move *.mov «mov\»
move *.mts «mts\»
)

Este script lo puedes poner en cualquier carpeta con los ficheros a convertir (en esta caso particular con ficheros .MTS), y al ejecutarlo creará dos carpetas (mts y mov), hará la conversión (usando cuatro hilos) y al final moverá todos los ficheros a sus carpetas correspondientes (los ficheros ProRes mantendran el mismo nombre del original). Simplemente fantástico.

Recordar que este script requiere el uso de nombres sin espacios.

Los principales créditos hay que dárselos a los usuarios shaunthesheep y frear del foro de LightWorks.

Bien, espero que les sea de ayuda. Tengo que decir que solo he hecho un par de pruebas y a mi me funciona. Por favor, si encontráis nuevas opciones de FFmbc, o scripts de automatización, o cualquier otro dato de interés, compartirlos en los comentarios.

18 comentarios

  1. Manolo

    Bueno, pues justo acabo de encontrar un script para pasar ficheros de Avid (con el códec DNxHD) de MXF a mov:

    DO (
    md mov
    )

    for %%f IN (*.mxf) DO (
    ffmbc -i %%f -vcodec copy %%~nf.mov
    )

    DO (
    move *.mov «mov»
    )

    Por supuesto hay que tener instalados los códecs DNxHD, que se encuentrán en la web de Avid. Créditos a Dmitry Kitsov en Creativecow: http://forums.creativecow.net/thread/277/14610

  2. Manolo

    Gracias. No conocia la utilidad y veo que es un GUI para FFmbc aunque solo para ficheros .MTS.
    Yo particularmente para editar el material de mi GH2 suelo pasarlo todo a Cineform usando el Adobe Media Encoder, cuando el tamaño de la edición lo aconseja, si no uso directamente los MTS en Premiere.

  3. Pingback: Flujos de trabajo Avid Prores - 709 Media Room

  4. nercucho

    Disculpen pero es que yo veo que en Premier Cs6 hay una opcion para exportar a Apple Prores.
    Disculpen mi ignorancia. ¿ pero luego este no es igual ?

  5. Manolo

    ¿Estas en un Mac, no? La entrada se refiere a Windows, donde Quicktime solo proporciona el decoder del códec, de ahí el problema.

  6. Se puede hacer el proceso a la inversa? Digamos pasar el pro res a algun formato compatible con premiere en windows para despues volver a dejarlo en pro res?
    La verdad es que acabo de probarlo y mandarle un archivo a un cliente que no aceptaba otra cosa que pro res vamos a ver si el dueño de la mac no me lo rebota.

  7. Manolo

    ProRes lo puedes usar en Windows perfectamente. QuickTime para Windows incluye el decoder para poder leerlo y usar el códec en modo lectura en cualquier aplicación que use QT, vamos que es compatible con Premiere, se puede usar sin problemas. Lo que no se puede es exportar directamene a ProRes desde Premiere, pues no hay encoder.

    En principio no deberias tener problemas, ya está testado y funciona. Ya nos cuentas 😉

  8. PERO VAMOS AVER………….

    ¿¿Y porque COÑO a nadie (tan profesionales KE SOIS…..) SE LE OCURRE hacer un PUTO PROGRAMA NORMAL y corriente funcional en cualquier WINDOWS de toda la vida, donde podamos realizar UNA PUTA conversion a PRORES sin necesidad de ser INGENIEROS QUIMICOS ?????

    Ostia macho……….

    Si es exactamente LO MISMO, pero sin 20.000 lineas de comandos………….

    UN INTERFAZ grafico SENCILLO y claro.

    Siguiente, siguiente …. DONE!!!!

    ¿¿¿¿NADIE, de verdad de TODO EL JODIDO MUNDO ?’????

    ¿¿¿me tendré ke hacer programador ????????????????????????

    ¿¿EN SERIO ???????????????????????????????????????

  9. Manolo

    Bueno, tampoco hay que ponerse así, no por mucho gritar te van a escuchar más. En los comentarios tienes varias opciones y si buscas más en Google puedes encontrar:
    http://www.fallenempiredigital.com/blog/prhelpersoftware/ Este es muy bueno pues permite asignarle una carpeta para que transcodifique todo lo que pongas ahí, borrando la fuente cuando acabe, muy util para convertir un gran número de ficheros.
    Otro programa interesante (enlazado ya en los comentarios) es AWPro : http://hdcinematics.com/tools/AWProSuite.html Una suite completa con muchos usos.

    Y seguro que hay alguno más.

  10. Manolo

    Si no eres capaz de pagar 15$ por una herramienta…
    Como tu mismo dices, hazte programador y no te olvides de compartirlo con los demás.

  11. JOAQUIN

    hola, disculpen alguien sabe como hacer un trancode de prores (material de alexa) aMXF

  12. Manolo

    MXF es un contenedor que soporta varios códecs, tendrás que ser más preciso pues hay muchas variables en FFmbc.
    Pero si no quieres complicarte la vida, utiliza el Adobe Media Encoder y usa uno de sus presets.

  13. Pingback: Anónimo

Leave a Reply