gpt4 book ai didi

linux - ffmpeg 不接受脚本中的输入

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

这是一个初学者的问题,但在研究了几天后我无法找出答案:
我希望 ffmpeg 提取视频的音频部分并将其保存在 .ogg 容器中。如果我在终端中运行以下命令,它会按预期工作:

ffmpeg -i example.webm -vn -acodec copy example.ogg
为方便起见,我想在脚本中执行此操作。但是,如果我将变量传递给 ffmpeg,它显然只考虑第一个单词并产生错误“没有这样的文件或目录”。
我注意到我的终端用\转义了空格,所以我将它包含在我的脚本中。但这并不能解决问题。
有人可以向我解释一下,为什么 ffmpeg 不考虑在脚本中传递给它的整个变量,同时在终端中传递相同的内容时正常工作?
这是我的脚本,它将带有\转义的空格的文件名传递给 ffmpeg:
#!/bin/bash

titelschr=$(echo $@ | sed "s/ /\\\ /g")
titelohne=$(echo $titelschr | cut -d. -f 1)
titelogg=$(echo -e ${titelohne}.ogg)

ffmpeg -i $titelschr -vn -acodec copy $titelogg
非常感谢您!

最佳答案

你需要引用变量扩展,试试这个:

#!/usr/bin/env bash

titelschr=$1
titelogg="${titelschr%.*}.ogg"

ffmpeg -i "$titelschr" -vn -acodec copy "$titelogg"
调用:
bash test.sh "Some video file.mp4"
这样,您无需转义空格。

关于linux - ffmpeg 不接受脚本中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71447232/

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