¿Cómo automatizar completamente la conversión de video a mp4, formato compatible con iTunes?

Estoy buscando implementar una solución totalmente automatizada que seleccione archivos de video de un directorio entrante, los procese y coloque el resultado en el directorio especial "Agregar automáticamente a iTunes" de iTunes.

Antes de comenzar a proponer diferentes productos, lea los requisitos:

  • Interfaz de línea de comandos, para que podamos usarla con un cron
  • Haga Pass Thru para transmisiones de video y audio si la fuente ya es compatible con el formato de destino
  • Descargar subtítulos desde un servicio externo (opcional)
  • Incrustación de archivos SRT existentes en el video de salida
  • Corrección de metadatos de un servicio externo (opcional)

Inicialmente, diría que Handbrake debería poder hacer esto, pero descubrí que handbrake nunca hará Pass Thru para video (esa es una declaración que obtuve del autor).

Como está buscando un proceso completamente automatizado, creo que no tiene sentido escribir el proceso manual. Estoy usando 3 programas para hacer exactamente lo que quieres lograr, excepto que es manualmente. Lo descargo en formato mp4, por lo que ya no necesito HandBrake para la conversión.
@Robuust, ¿podría compartir qué programas está utilizando? Es posible que se combinen a través de AppleScript o Automator. Si bien es posible que no cumpla exactamente con los requisitos de la pregunta, puede estar lo suficientemente cerca.
@Robuust sí, un proceso manual es un buen ejemplo si las herramientas que se utilizan tienen una interfaz de línea de comandos.

Respuestas (7)

z264

z264 examinará todos los archivos, pero solo tocará archivos de video avi, flv, mpg, mpeg, wmv, vob, mkv y mp4, copiará flujos de audio y video y los volverá a ajustar si es posible, transcodificará solo el audio si es necesario y transcodificará solo lo que el video es necesario, y lo deja con archivos mp4 optimizados para átomos compatibles con iTunes, dejando los originales en su Papelera. Toma decisiones razonablemente inteligentes por usted sobre cómo transcodificar archivos en función de cómo configura sus variables HandBrake (establecidas en las líneas 312-333).

verifique el archivo para la codificación AVC y el envoltorio flv, wmv o mkv y vuelva a envolverlo en el contenedor mp4; de lo contrario, si aún no es mp4, transcodifique a AVC mp4

z264 tiene varias dependencias (mediainfo, rmtrash, ffmpeg, SublerCLI y HandBrakeCLI)

  • copie y pegue la sección de instalación binaria en un nuevo script bash y utilícelo para descargar e instalar las dependencias en /usr/local/bin/ (cree /usr/local y /usr/local/bin/ si aún no está allí)

  • cree un ramdisk de 2GB llamado 'Dos' usando el comando en la sección ramdisk

    diskutil quiet erasevolume HFS+ 'Two' `hdiutil attach -nomount ram://4194304`
    
  • verifique dos veces las definiciones de los comandos (ubicaciones de las dependencias) y las ubicaciones correctas (a "/usr/local/bin/")

    change line 231 to read:  mediainfo="/usr/local/bin/mediainfo"
    change line 236 to read:  rmtrash="/usr/local/bin/rmtrash"
    change line 238 to read:  ffmpeg="/usr/local/bin/ffmpeg"
    change line 239 to read:  SublerCLI="/usr/local/bin/SublerCLI"
    change line 262 to read:  mediainfo="/usr/local/bin/mediainfo"
    change line 263 to read:  rmtrash="/usr/local/bin/rmtrash"
    change line 265 to read:  HandBrakeCLI="/usr/local/bin/HandBrakeCLI"
    
  • guardar como z264 en /usr/local/bin/

  • hacer ejecutable

    sudo chmod +x /usr/local/bin/z264

  • use Terminal para llamar a z264 en un solo archivo, directorio de archivos, o llámelo desde un cron para rastrear sistemas de archivos completos periódicamente

    z264 directory.full.of.mixed.video.filetypes/*
    

Problemas menores: el usuario debe poder leer, depurar y usar bash. z264 aún no cuenta cuántos procesos background_transcoder genera, lo que significa que si hay muchas transcodificaciones, tardarán un tiempo en completarse, pero se completarán. También necesita mucha memoria (8 GB está bien). Los usuarios de Snow Leopard deberán instalar el comando de purga desde las herramientas de desarrollo de xcode.

¡Gracias! Antes de probar, solo mirando la descripción y el código fuente parece ser lo que estaba buscando. Publiqué el código en github, genere un ticket para que pueda agregarlo como administrador del proyecto github.com/z264/z264
@sorin @chillin Parece estar atascado en un bucle después del paso de transcodificación de audio:tty: illegal option -- - usage: tty [-s]
@sorin He estado encontrando archivos que deberían procesarse bien, que no lo hacen, generalmente mkv con fataudio o audio con tasas de kbps demasiado altas, y procesos z264... y el resultado es un archivo que no funciona. Creo que el problema es... ciertamente no ffmpeg... y quiero ser muy claro, y si esto suena racista, es solo para torcer el más pequeño pinchazo en el lugar más doloroso del tipo que realmente rompió el freno de mano aguas abajo hace unas versiones... perdí mi tren... oh, desarrolladores franceses. sí. desarrolladores fn franceses. Pero realmente sabemos que el problema es Apple. ¡Queremos la mancha, pero no a cualquier costo!
mediainfo también se ahoga a veces, pero no hay inversión emocional. Pero cuando giras una transcodificación especial para algo para alguien a un nodo de procesador, y ese pequeño motor transcodifica su pequeño corazón, y el resultado es un archivo que es, um, basura, tiende a molestar. Pero MUCHO RESPETO para depurar devs en otros idiomas.

Actualmente uso Subler para convertir MKV a MP4 e incrustar subtítulos en el proceso, sin transcodificar ni video ni audio. Si necesito transcodificar DTS para que Apple TV lo reproduzca, uso MP4Tools . Sin embargo, ambos son GUI y no tengo idea de si se pueden llamar desde la línea de comandos. Supongo que su mejor opción sería MKVToolNix (suponiendo que solo quiera cambiar el formato) y ffmpeg (que incluye opciones de transcodificación para cuando sean necesarias).

Estoy usando HandBrake como se sugiere en la pregunta anterior si la descarga no está disponible en formato MP4. (Creo que no puedo nombrar el servicio que estoy usando, ya que la descarga no es legal en todos los países, pero buscar la palabra clave "YIFY" podría ayudar a encontrar copias MP4) Además, estoy usando Subler para agregar un SRT sin tener para convertir el MP4 de nuevo .

Y luego, para obtener los metadatos y la copia en iTunes , estoy usando iFlicks , que se puede descargar desde la App Store .

Subler puede obtener los metadatos directamente desde iTunes o TV/MovieDB. ¿Por qué agregar la pieza adicional de software?

Creo que encontrarás tus respuestas en esas dos publicaciones:

Entonces, para resumirlo:

ffmpeg -i <input_file>.mkv -f srt -i <input_subtitle>.srt -c:v copy -c:a aac -b:a 384k -c:s mov_text -strict -2 <output_file>.mp4

Prueba en el paquete ffmpeg . Puede decidir si no todos, la mayoría de los problemas.

¿Puede ampliar la forma en que el autor de la pregunta podría utilizar ffmegpara realizar las tareas deseadas? ¿Hay alguna bandera o configuración que pueda ayudarlos a comenzar más fácilmente?

Puedes echar un vistazo a VideoDrive para Mac. Hace todo eso automáticamente: www.aroonasoftware.com

No tiene CLI, pero tiene un temporizador incorporado para ejecutarse cuando lo desee. Y también es compatible con Applescript.

SmartConveter es gratuito en la App Store y es más rápido que Handbrake.

¿Puede explicar cómo SmartConverter puede ayudar a responder la pregunta? ¿Ofrece una interfaz de línea de comandos, transferencia u otra parte de los requisitos?