使用 youtube-dl 和 ffmpeg 從 Youtube 下載並合併時間範圍內的 mp3

使用 youtube-dl 和 ffmpeg 從 Youtube 下載並合併時間範圍內的 mp3

背景

我正在嘗試從指定時間範圍(前 30 秒、20-55 秒等)的 Youtube 影片下載最佳品質的 mp3,然後將它們合併以建立一個輸出檔。Mac 上使用的工具是youtube-dl、 和。fmpeg

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

您可以使用concatfilter 將步驟 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

請告訴我此命令是否也解決了您的其他問題。

相關內容