Descargar y fusionar mp3 en un rango de tiempo desde Youtube usando youtube-dl y ffmpeg

Descargar y fusionar mp3 en un rango de tiempo desde Youtube usando youtube-dl y ffmpeg

Fondo

Estoy intentando descargar mp3 de mejor calidad de videos de Youtube en un rango de tiempo específico (primeros 30 segundos, 20-55 segundos, etc.) y luego fusionarlos para crear un archivo de salida. Las herramientas que se utilizan son youtube-dly fmpegen Mac.

Paso 1

youtube-dlcomando para descargar audio en el rango de tiempo:

youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 <YoutubeUrl> --no-check-certificate --output "1.mp3" --external-downloader ffmpeg --external-downloader-args "-ss 00:00:00.00 -to 00:00:56.00"

Paso 2

Nombres de archivos de salida a input.txt:

file '1.mp3'
file '2.mp3'

Paso 3

ffmpegcomando para fusionar todos los archivos mp3:

ffmpeg -f concat -safe 0 -i input.txt -c copy output.mp3 -c:a libmp3lame

Asunto

La fusión de archivos mp3 parpadea debajo del error:

[mp3 @ 0x7fdd4e812600] Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

Preguntas

  1. ¿Cómo lo soluciono? Parece que hay algún problema con la codificación.
  2. ¿Alguna recomendación sobre combinar el Paso 2 y el Paso 3 en un solo comando?

Respuesta1

Puede usar concatel filtro para combinar los pasos 2 y 3 en un solo comando:

ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[a]" -map "[a]" -c:a libmp3lame output.mp3

Avíseme si este comando también soluciona su otro problema.

información relacionada