Tengo alrededor de 70 archivos mp4 y quiero extraer los archivos de audio directamente sin necesidad de transcodificarlos. Todos los archivos mp4 tienen archivos de audio aac.
Entiendo que puedo usar el siguiente comando para extraer el archivo de audio de uno de los archivos mp4:
avconv -i "INPUT FILE" -map 0:1 -c:a copy "OUTPUT FILE"
¿Cómo extraigo todos los archivos de audio de los 70 archivos mp4, de modo que termino con 70 archivos aac?
bash /path/to/the/script %F
- como aquí-map
aún puede hacer que se considere el video cuando se cambia a otro formato de salida (si ese formato puede contener audio y video). Es más seguro mantenerlo como está.La respuesta de Xiao es generalmente la más útil si tiene todos los archivos en un directorio; pero si hay archivos MP4 dispersos en diferentes directorios, puede usar este
find
comando para convertirlos a todos.Esto utiliza una forma ligeramente diferente de sustitución de cadena bash al final: "$ {0 /% mp4 / m4a}" le dice a bash que reemplace mp4 con m4a, pero solo si el mp4 está al final de la cadena.
fuente
%
, hará la sustitución de la primera instancia de la cadena que encuentre; también puede usar#
para hacer que solo sustituya la cadena si está al comienzo de una variable; entonces $ {0 / mp4 / m4a} reemplazaría la primera instancia de mp4 con m4a (lo que podría ser un problema si tiene nombres de archivo realmente extraños); y $ {0 / # mp4 / m4a} sustituirá mp4 por m4a, pero solo si el valor de la cadena de la variable comienza con mp4 (no se usa aquí, obviamente, pero podría ser útil en otros lugares).Para evitar que se procesen varios archivos al mismo tiempo (que podrían usar demasiados recursos), use
parallel
. Por defecto, solo hace un trabajo a la vez. Si desea utilizar múltiples núcleos de CPU en paralelo, intenteparallel -j 4 ...
4 trabajos en paralelo. También echa un vistazoman parallel
.Esta línea extraerá
aac
archivos de audio de videos seleccionados y los colocará enm4a
contenedores.Cuando trabaje directamente en la CLI, sustitúyalo
%F
por la lista de sus archivos de entrada. Por ej*.mp4
.Inspirado por esta respuesta, por una respuesta anterior a esta pregunta, y por el comentario de evilsoup a esta última (diciendo: 'los archivos aac sin procesar no pueden contener metadatos; si desea mantener los metadatos de los archivos originales, use m4a (que es solo otro nombre para mp4, pero es bastante ampliamente reconocido por los reproductores de audio) en lugar de aac como una extensión de archivo ' ).
Yo uso tales comandos en acciones personalizadas de Thunar,
limitar la aplicación a videos que contienen
aac
audio.Para tener una ventana de terminal abierta durante el procesamiento, que se cierra al final, el comando se puede cambiar como:
fuente
Extendí la respuesta de @ Xiao-Long Chen, convirtiéndola en un script que omite archivos cuando el archivo de salida es más nuevo:
fuente