gpt4 book ai didi

bash - 使用 ffmpeg 将 youtube-dl 的输出管道传输到脚本使用 echo 看起来不错,但在执行时返回错误

转载 作者:行者123 更新时间:2023-12-04 23:09:03 25 4
gpt4 key购买 nike

我正在尝试使用 youtube-dl 获取一些视频的 url,然后将生成的 url 通过管道传输到我的脚本的输入中。所以在我的终端我做

youtube-dl --ignore-config -iga ~/Desktop/youtube/videolist.txt | myscript.sh

在我的脚本中,我将事物定义为
command='ffmpeg'        
inputArgs='-i'
outputArgs='-c:v libx264 -preset ultrafast -qp 0'
directory="${HOME}/Desktop/Videos/"
output="video${count}"
extension='mp4'

我用 echo 测试它以确保一切都以正确的顺序出现。
echo "${command}" "${inputArgs}" "${input}" "${outputArgs}" \
"${directory}""${output}${count}"."${extension}"

并且输出看起来是正确的。但是当我尝试在没有前面的 echo 的情况下运行相同的东西时命令,即
"${command}" "${inputArgs}" "${input}" "${outputArgs}" \
"${directory}""${output}${count}"."${extension}"

我收到一条错误消息,上面写着

At least one output file must be specified.



所以对我来说似乎很明显我在尝试执行它时做错了什么。

我努力了:
  • 引用整行作为一个整体
  • 一起引用不同的部分
  • 使用 exec指挥在一切面前

  • 无论我做什么,都会在过程中的某个时刻发生错误。我知道这很简单,我做错了。有人可以告诉我那可能是什么吗?

    我非常强烈地感觉到 .不应该只是在这样的事情中间,但我真的不知道。

    同样,当我运行 echo 时,一切看起来都正常。在 shell 参数字符串之前。

    如果需要我使用的更多脚本来理解我在说什么,那不是问题。

    最佳答案

    问题是因为你把它放在引号里 "${outputArgs}"扩展为单个参数。它不会被拆分为单独的参数,因此 ffmpeg 仅将其视为单个 -c带有非常长的流说明符的选项。下一个参数,输出文件被解释为编解码器。

    要解决此问题,只需删除引号:

    "$command" $inputArgs "$input" $outputArgs "$directory$output$count.$extension"

    我删除了花括号 ({}) 只是为了节省空间。如果您愿意,使用它们没有任何问题。

    关于bash - 使用 ffmpeg 将 youtube-dl 的输出管道传输到脚本使用 echo 看起来不错,但在执行时返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497445/

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