Solución:
Con FFmpeg, el orden de los parámetros es significativo. Todos los parámetros que vienen directamente antes de una entrada se aplicarán a esa entrada. Lo mismo es cierto para una salida … los parámetros directamente antes de que se apliquen a la salida.
Considere esta línea de comando:
ffmpeg -ss 132 -i input.mp3 output.mp3
-ss
es el parámetro a buscar, por lo que FFmpeg buscará el archivo de entrada en 132 segundos y lo tratará de manera efectiva en 00:00:00
. El resto de los comandos de FFmpeg relacionados con la salida no saben ni les importa de dónde vino esa entrada o cómo se buscó. Por lo tanto, cuando usa -to
o -t
, los tiempos o longitudes dados deben ser relativo a la entrada. Es decir, si desea los segundos 132 a 139, desea buscar la entrada a 132 (-ss 132 -i input.mp3
) y luego ejecute la salida durante 7 segundos (-t 7 output.mp3
o -to 00:00:07 output.mp3
).
Puede leer más sobre esto, así como detalles sobre la precisión del marco o no (para recodificar o no) en la documentación: https://trac.ffmpeg.org/wiki/Seeking
Como para -to
no estar ahí …
Como mostré arriba, tengo la última versión del software.
Lo haces absolutamente positivamente no tener remotamente la última versión de FFmpeg. Es posible que tenga la última versión de cualquier rama que tenga el administrador de paquetes, y es posible que se haya creado este año, pero si consulta la página de descarga, la última versión en el momento de escribir estas líneas es 3.3.4. https://www.ffmpeg.org/download.html
Puede lidiar con su administrador de paquetes y el infierno de dependencias, o dependiendo de sus restricciones de licencia, enganchar una compilación estática reciente: https://www.johnvansickle.com/ffmpeg/
Finalmente, considere -acodec copy
para asegurarse de no dañar aún más la calidad de su audio mediante la transcodificación, ya que mantiene el mismo formato.
Esto funciona para mi
ffmpeg -ss 60 -i input-audio.aac -t 15 -c copy output.aac
- -ss 60 significa “empezar desde el segundo 60”
- -t 15 duración de la salida de audio en segundos … en este caso, 15 segundos …
-ss
es una opción de entrada, mientras que -t
y -to
son opciones de salida. Entonces necesitas hacer esto:
ffmpeg -ss 60 -i 'les nuits 128k.m4a' -to 70 -c copy out.m4a