使用 youtube-dl 和 ffmpeg 从 Youtube 下载并合并时间范围内的 mp3

使用 youtube-dl 和 ffmpeg 从 Youtube 下载并合并时间范围内的 mp3

背景

我正在尝试从指定时间范围内的 Youtube 视频中下载质量最好的 mp3(前 30 秒、20-55 秒等),然后将它们合并以创建一个输出文件。使用的工具是youtube-dlfmpegMac 上的 。

步骤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

请告诉我此命令是否也能解决您的其他问题。

相关内容