Bash:从 youtube url 下载修剪后的 mp3 的 bash 脚本

标签 bash ffmpeg youtube-dl

我想从 youtube 的视频 url 下载最初 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"给出逐字输出,不给出输出文件名。

我们怎样才能使脚本工作?

帮助将不胜感激。

最佳答案

youtube-dl支持 --get-filename选项,它实际上并不下载任何东西,而是在标准输出上给出计算的文件名。

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}"
}

关于Bash:从 youtube url 下载修剪后的 mp3 的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41310196/

相关文章:

python-3.x - discord.ext.commands.errors.CommandInvokeError : Command raised an exception: KeyError: 'url'

youtube - Youtube-DL纯音频播放列表

java - 如何为java和python设置bash路径

linux - bash 将控制权从 expect 返回给用户

python - 使用 shell 脚本中的选项调用 python 函数

shell - FFMPEG 并排合并裁剪

ffmpeg - 用 ts 包装 h264 流(传输流)

bash - 在bash的while循环中选择性地附加一个字符串常量

FFMPEG: [flv @ 0xbeee10] 输出流中的非单调 DTS

python - Discord.py 和 youtube_dl、 "Read error"和 "The session has been invalidated for some reason"