gpt4 book ai didi

bash - ffmpeg -i 标志的行为不一致

转载 作者:行者123 更新时间:2023-12-04 23:32:15 27 4
gpt4 key购买 nike

我正在尝试编写一个 Bash 脚本,该脚本将从 youtube 下载音轨并将其转换为 Apple 铃声格式,即 .m4r。我使用的工具是youtube-dlffmpeg .前者似乎工作正常,但我对后者有一个奇怪的问题。当我尝试以参数方式传递文件名时,shell 会打印找不到该文件或目录。 enter image description here
我使用相同的方法来解开两个命令的用户输入(或我的默认值),但它似乎只适用于 youtube-dl .
不起作用的示例并打印上面的文本。显然,所有文件实际上都在那里并且可以访问

youtube-dl -i --extract-audio --audio-format m4a -o $filepath_interim  --audio-quality 0 $video_link
ffmpeg -i $filepath_interim -acodec copy -f ipod -ss $offset -t $length $filepath_out
所以,我试着用 ''字符串, $(command)语法,一切都失败了。我只找到了一种使其工作的方法,即对路径的值进行硬编码,但这违背了我脚本的全部目的。
youtube-dl -i --extract-audio --audio-format m4a -o $filepath_interim  --audio-quality 0 $video_link
ffmpeg -i ~/Downloads/ringtone.m4a -acodec copy -f ipod -ss $offset -t $length ~/Downloads/ringtone.m4r
我想弄清楚为什么这种情况不断发生,是否以任何方式特定于 ffmpeg还是我只是缺少一些关于 $ 的知识名称展开。
最小的工作示例。使用 bash 运行或打包脚本并运行。如果您通往 bash 的路径不一样,请换shebang:
#!/usr/local/bin/bash
# initialise
filepath_interim="~/Downloads/ringtone.m4a"
filepath_out="~/Downloads/ringtone.m4r"
video_link="https://www.youtube.com/watch?v=dQw4w9WgXcQ"
offset=0
length=30

# main part
youtube-dl -i --extract-audio --audio-format m4a -o $filepath_interim --audio-quality 0 $video_link
ffmpeg -i $filepath_interim -acodec copy -f ipod -ss $offset -t $length $filepath_out

最佳答案

更改~$HOMEShellCheckSC2088: Tilde (~) does not expand in quotes, use $HOME了解更多信息。

关于bash - ffmpeg -i 标志的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67594417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com