Загрузка и объединение mp3 во временном диапазоне с Youtube с помощью youtube-dl и ffmpeg

Загрузка и объединение mp3 во временном диапазоне с Youtube с помощью youtube-dl и ffmpeg

Фон

Я пытаюсь скачать mp3 лучшего качества из видео Youtube в указанном временном диапазоне (первые 30 секунд, 20-55 секунд и т. д.), а затем объединить их для создания одного выходного файла. Используемые инструменты: youtube-dl, и fmpegна Mac.

Шаг 1

youtube-dlкоманда для загрузки аудио в диапазоне времени:

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"

Шаг 2

Имена выходных файлов input.txt:

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

Шаг 3

ffmpegкоманда для объединения всех mp3-файлов:

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

Проблема

При объединении файлов mp3 появляется следующая ошибка:

[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

Вопросы

  1. Как это исправить? Кажется, возникла какая-то проблема с кодировкой.
  2. Есть ли какие-либо рекомендации по объединению Шага 2 и Шага 3 в одну команду?

решение1

Вы можете использовать concatфильтр, чтобы объединить шаги 2 и 3 в одну команду:

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

Дайте мне знать, если эта команда решит и другую вашу проблему.

Связанный контент