Tengo 228 archivos mp4 (2.6GB) y me gustaría extraer audio de ellos (mp3 u ogg). Quiero extraerlos por lotes, preferiblemente con bash. No estoy seguro de si todos los archivos usan el mismo códec de audio que se grabaron en diferentes años, desde 2006-2012.
Quiero recorrer todos ellos, elegir el nombre del archivo, detectar el códec de audio y usar ffmpeg para extraer el audio.
¿Es posible?
Respuestas:
Dices que quieres "extraer audio de ellos (mp3 u ogg)". Pero, ¿qué pasa si el audio en el archivo mp4 no es uno de esos? tendrías que transcodificar de todos modos. Entonces, ¿por qué no dejar la detección del formato de audio en ffmpeg?
Para convertir un archivo:
Para convertir muchos archivos:
Por supuesto, puede seleccionar cualquier parámetro ffmpeg para la codificación de audio que desee, para establecer cosas como la tasa de bits, etc.
Use
-acodec libmp3lame
y cambie la extensión de.ogg
a.mp3
para codificación de mp3.Si lo que quiere es realmente extraer el audio, simplemente puede "copiar" la pista de audio a un archivo usando
-acodec copy
. Por supuesto, la principal diferencia es que la transcodificación es lenta e intensiva en CPU, mientras que la copia es realmente rápida, ya que solo está moviendo bytes de un archivo a otro. Aquí se explica cómo copiar solo la pista de audio (suponiendo que esté en formato mp3):Nótese que en este caso, el formato de archivo de audio tiene que ser coherente con lo que dispone el recipiente (es decir, si el audio está en formato AAC, que tiene que decir
audiofile.aac
). Puede usar elffprobe
comando para ver qué códec tiene, esto puede proporcionar alguna información:Una posible forma de analizar automáticamente el códec de audio y nombrar el archivo de audio en consecuencia sería:
Notas: los archivos de salida se crean en el subdirectorio
output
que crea al principio (si es necesario). Para otros códecs que no sean mp3 y vorbis, convierte el audio a ogg. Ubuntu 14.04 no tiene ffmpeg en los repositorios estándar, pero puede agregar el repositorio ppa: mc3man / trusty-media e instalar el paquete ffmpeg para obtener el software necesario. Ver aquí para más detalles.fuente
ffprobe "$file" 2>&1 |sed -rn 's/.*Audio: (...), .*/\1/p'
; hecho Corrige eso.This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
ffmpeg
offprobe
no están disponibles para Ubuntu 14.04 o posterior.ffmpeg
regresó a Ubuntu en 15.04 , y se parece a la paja de Libavavconv
yavprobe
se ha eliminado en 15.10 .Como dijo Nicolas Raoul, esto necesita una actualización. Aquí está la misma línea que dio roadmr pero usando avconv en su lugar:
for vid in *.mp4; do avconv -i "$vid" "${vid%.mp4}.mp3"; done
fuente