Bash:bash脚本从youtube网址下载修剪过的mp3

时间:2016-12-24 03:56:15

标签: bash ffmpeg youtube-dl

我想从youtube的视频网址下载最初的x秒修剪的mp3 我发现youtube-dl可以将视频从youtube下载到本地机器。但是,当我查看youtube-dl的手册页时,我找不到任何修剪选项。

所以我尝试使用ffmpeg修剪下载的mp3文件 而不是这样做是两个步骤,我喜欢写一个bash脚本,它做同样的事情 我的尝试如下。

然而,我被困在一个地方:
"如何从YOUTUBE-DL获取输出MP3文件的变量名称?"
脚本如下:

# trim initial x seconds of mp3 file
# e.g. mytrim https://www.youtube.com/watch?v=dD5RgCf1hrI 30
function mytrim() {
    youtube-dl --extract-audio --embed-thumbnail --audio-format mp3 -o "%(title)s.%(ext)s" $1
    ffmpeg -ss $2 -i $OUTPUT_MP3 -acodec copy -y temp.mp3
    mv temp.mp3 $OUTPUT_MP3
    }

如何获取变量值$ OUTPUT_MP3?
echo"%(title)s。%(ext)s"给出逐字输出,不给出输出文件名。

我们怎样才能使脚本有效?

将不胜感激。

1 个答案:

答案 0 :(得分:3)

youtube-dl支持--get-filename选项,它实际上并没有下载任何内容,但会在stdout上提供计算出的文件名。

mytrim() {
    local downloaded_file
    youtube-dl --extract-audio --embed-thumbnail --audio-format mp3 -o "%(title)s.%(ext)s" $1
    downloaded_file=$(youtube-dl --get-filename --extract-audio --embed-thumbnail --audio-format mp3 -o "%(title)s.%(ext)s" $1)
    ffmpeg -ss $2 -i "${downloaded_file}" -acodec copy -y temp.mp3
    mv temp.mp3 "${downloaded_file}"
}